Comments 36
Давно уже есть
https://infostart.ru/1c/tools/95495/
Не нужен никакой файл настроек, надо просто в шапке файла Excel написать нормальные названия колонок "Код", "Наименование" и др.
Ну вот, взяли и все опошлили.
В 1с есть тоже "Универсальная загрузка данных из табличного документа", я про нее писал.
Это поделие того же класса. Как контактную информацию и расчетные счета контрагентов загружать будете?
Вы попытались сравнить пугач с Пулеметом Максим экстра-класса, окститесь. Перечитайте вдумчивее.
зачем вводить какой-то файл настроек?
вроде статья начиналась за упрощение?
в первой строке таблицы пишешь нужные поля/настройки/код
и оттуда адинэской забираешь настройки конвертации
все счастливы и в воздух лифчики бросают
У меня есть код загрузки, который загоняет всё в ТЗ, а затем по шаблонам (номерам колонок и строк) вытаскиваю данные, затем для наглядности всё выходиться в Табличный Документ на форме, чтобы пользователь смог просмотреть/отредактировать/добавить данные.
Отлично. Но это отдельаня обработка или движок? Вот в чем по сути вопрос.
Это конкретная загрузка чего-то одного или можно переделать в загрузку другого.
А если потом добавишь фичу в первую загрузку, во вторую она перейдет или нет?
Условно есть загрузка номенлатуры и контрагентов. Это две обработк или одна?
Честно, не увидел гениальности.
Но право на жизнь, конечно же, имеет.
Ну тут уж на вкус и цвет. Но лично мне нравится замечать то, мимо чего проходят остальные. Если это не Гений, то не знаю,что такое Гений.
Надо выложить готовый продукт, а не полуфабрикат. Здесь пока много кода, от которого можно абстрагироваться.
Это слишком упрощенный подход к загрузке данных. Некий частный вырожденный случай.
Данные обычно переносятся из разных систем, странно ожидать наличия соответствия данных в приемнике. К тому же есть нюансы - а создавать ли новые элементы в тот же справочник Стран, которые приходят из этого файла, этим всем хочется управлять.
Да, бывают и сложные случаи. Но тем не менее, очень много случаев, когда и не надо создавать. Например, просто импорт заказа покупателя, где есть колонки код и количество. Или тех же прайс-листов поставщика, где есть уже штрих-коды и цены, и цель загрузить только те товары, что уже есть.
Больше велосипедов хороших и разных!
Самый быстрый способ, который нашел когда-то, это через коннектор odbc excel driver. Позволяет подключить файл как внешний источник данных и работать как с таблицами БД
а скорость не всегда важна. об этом я писал в своей прошлой статье https://habr.com/ru/articles/777840/
В общем случае для получения и обработки внешних данных применяется Паттерн шаблонный метод, условно состоящий из трех этапов, которые подставляются как кубики в общий алгоритм:
Получение сырых внешних данных. Это может быть чтение excel, результат rest-запроса или обращение к внешней бд, например. На выходе получаем коллекцию (обычно таблицу значений) данных примитивных типов: строки, числа, даты, булево. Применительно к чтению эксель зададим на вход коллекцию структур, описывающие искомые поля: имя в результате, номер колонки или имя (тогда ищем по имени строки-заголовка), тип значения. Задаём другие параметры: лист поиска, номер строки заголовка - опционально.
Насыщение данных из нашей ИС - добавление полей-сущностей по параметрам сырых данных. Здесь входящие структуры это тексты запросов (или из части): имя таблицы-сущности, условия поиска, сортировка выбора. Например поиск номенклатуры по артикулу, в определенной папке, сначала ищем полное соответствие артикула, потом по началу значения.
Обработка данных. Необязательно непосредственная запись. Это может быть наполнение табличной части документа в интерактивном режиме.
Вот собственно комбинируя эти "кубики" весь шаблон и строится.
Писали уже про построитель запросов? Добавляем синонимы, программно выводим реквизиты на форму и дело в шляпе.
Зачем использовать дополнительный файл настроек? Программисту проще сразу в коде написать что надо.
Речь идет о разделении движка и прикладного уровня. Как вы это разделите - не суть. Я прикладной код прямо в этой же форме пишу. Но речь об выделении некоего общего кода (движка).
Это же библиотечный подход! И как это раньше никто до такого не додумался, интересно?
Увы. Но такова селяви. В 1С повторное применение кода не распространено. Есть обработки на Инфостарт - но это полуфабрикаты.
Что говорить, даже якобы открытая БСП (библиотека функций) проприетарна, то есть ее нельзя свободно использовать.
Прямо в форме записываете объекты в базу? Хай-левел программинг!
Таким же образом можно грузить другие файлы, xml, txt
Это не уровень статей для Хабра. На инфостарте подобного мусора - тьма. Публикуйте пожалуйста там.
Я, как начинающий программист с опытом 2 месяца, задаюсь вопросом - а как же обрабатываются ситуации, когда контрагент - обособленное подразделение? В примерах я вижу, что никак. КПП введён корректно в любом случае. Ну и в целом... Это всё очень слабо.
Новый взгляд на загрузку данных в 1С из Excel