В данной публикации приведено описание механизма загрузки данных в 1С из "двумерного формата" Excel, а также ряд примеров использования механизма.
Если лень читать длинное описание и смотреть унылые картинки: код можно взять здесь: https://github.com/artkor83/-ImportExcelOnec. И в дальнейшем разбираться самостоятельно: код полностью открыт.
Оглавление
Получение данных: общее описание, алгоритмы
Получение данных: Порядок работы
Получение данных из листа excel
Получение данных из макета (буфера)
Режим чтения макета из внешнего файла
Режим чтения макета из буфера ячеек
Дополнительные команды: Номера колонок: чтение наименований из файла
Дополнительные команды: Номера колонок: выбор типов
Дополнительные команды: Номера колонок: определение типов
Загрузка данных: Внешние файлы: обработки, макеты
Загрузка данных: Алгоритмы "Перед загрузкой", "Загрузка данных строки"
Загрузка данных: буфер вспомогательного кода
Построчная загрузка данных: пример
Построчная загрузка данных: редактирование алгоритмов
Построчная загрузка данных: Загрузка данных в базу
Общая (непострочная) загрузка данных: пример
Общая (непострочная) загрузка данных:редактирование алгоритмов
Общая (непострочная) загрузка данных:загрузка данных в базу
Отладка общей (непострочной) загрузки.
Сохранение / загрузка настроек
Интерфейс сохранения, краткое описание
Примеры файлов настроек, рекомендации
Введение.
В процессе работы очень часто встают задачи по импорту информации в базы 1С (далее БД1С) из различных excel-файлов. Наиболее распространенные варианты:
-
импорт начальных остатков,
-
прайс-листы различных видов и модификаций
-
сегменты номенклатуры, клиентов
-
прочее: справочники, документы, регистры сведений различного назначения
Если начать с последнего пункта: часто бывает нужно загрузить набор справочников со специально заполняемыми реквизитами, которые простой связью "1-к-1" никак не удается заполнить: появляются "красные поля" в карточке справочников типа "ФизическиеЛица", которые в дальнейшем "мешают жить" в процессе эксплуатации информационных систем.

На практике все неумолимо сводится к написанию программного кода, где на входе поступает некий объект "ТаблицаЗначений", полученный из Excel, на выходе "все что угодно":
-
Набор элементов ссылочного типа с фиксированными полями. Пример: элементы типа "Справочник.Контрагенты" с видом(физическое лицо/ юридическое лицо), зависящим от длины ИНН из файла excel
-
Набор элементов ссылочного типа нескольких метаданных. Пример: элементы типа Справочник.Сотрудники и "приклеенные" к ним физические лица: Справочник.ФизическиеЛица. При этом не забываем, что наименование физ.лица вовсе не единственное "обязательное поле": необходимо еще указать ФИО, разбивку по реквизитам "Фамилия Имя Отчество".
-
Документ по вводу начальных остатков: тут комментарии излишни. Вариантов "видов операций по вводу остатков" множество в базе формата УТ11, не говоря про ERP ;) И все их нужно как-то обыграть.
В противном случае столкнемся с недовольством пользователей в процессе работы с БД1С, которые никак не могут отредактировать карточку физ.лица. Система ругается на незаполненность полей, либо не получается исправить циферки при вводе начальных остатков.

При записи объекта система зачастую ругается на поля которые и на форме-то не видны (являются скрытыми), пользователи в ярости, разработчик "на измене".
При импорте данных через формат excel процесс требует значительных программных доработок. Целесообразно под рукой иметь удобный механизм для чтения/обработки/загрузки данных...
Загрузка обработками "на коленке"
Это - плохой путь: не делайте так.
Путем практического опыта с различными загрузками из excel вначале все сводилось к следующему алгоритму:
-
Есть заготовленный шаблон внешней обработки, который через com читает excel-файл и в нужной закладке собирает данные. Пример кода ниже, образцов можно нагуглить великое множество:
Excel = Новый COMОбъект("Excel.Application"); Excel.Visible = 0; Excel.DisplayAlerts = 0; Excel.WorkBooks.Open(ИмяФайлаЗагрузки); -
Каждая прочитанная строка преобразуется в массив строковых ячеек, которые имеют свое назначение и в дальнейшем используются для загрузки данных
-
Набор данных выводится на форму в таблицу значений. Как правило, случаются пользовательские ошибки в файле excel. Например:
-
вместо числового поля ввели какую-то непонятную "чудо-строку", которая в момент преобразования значения в число дала ошибку и тем самым файл даже не дочитался
-
ключевое значение типа "артикул номенклатуры" введен в файле неверно - тем самым имеем множество пустых строк товаров, по которым заполнены показатели, а "всего-то нолик вначале забыли добавить до длины=10 символов"
-
файл excel модифицировался: добавили 2 колонки данных в листе excel между "номенклатура" и "цена", а программисту сказать забыли ;)
-
Вступайте в нашу телеграмм-группу Инфостарт