Как загрузить номенклатуру и ее характеристики из Excel в 1С?

Программист 1С v8.3 (Обычные формы) 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

Загрузка номенклатуры в информационные базы 1С из файлов формата Excel — одна из самых частых задач при запуске новой системы или обновлении каталога товаров из интернет-магазина. Если импорт простой номенклатуры без дополнительных разрезов учета обычно не вызывает затруднений, то загрузка позиций с характеристиками (такими как цвет, размер, объем, материал) часто ставит в тупик даже опытных специалистов. Проанализируем, почему так происходит, и разберем по шагам, как решить эту задачу как стандартными, так и программными методами.

В чем сложность импорта характеристик в 1С?

Прежде чем перейти к практике, разберем структуру данных в 1С. В типовых конфигурациях (например, «Управление торговлей» ред. 10.3 или ред. 11) связь номенклатуры и характеристик реализована через механизм подчиненных справочников и регистров сведений:

  1. Номенклатура — это главный элемент (владелец), карточка товара (например, «Футболка мужская»).
  2. Характеристики номенклатуры — подчиненный справочник (Справочники.ХарактеристикиНоменклатуры). Каждая характеристика жестко привязана к своему владельцу (конкретному товару или виду номенклатуры) и имеет текстовое наименование (например, «Красная, XL»).
  3. Свойства и значения свойств — регистр сведений РегистрСведений.ЗначенияСвойствОбъектов (в старых редакциях) или табличная часть дополнительных реквизитов (в новых редакциях на управляемых формах). Именно здесь хранится информация о том, что характеристика «Красная, XL» состоит из свойства «Цвет» со значением «Красный» и свойства «Размер» со значением «XL».

Из-за такой разветвленной структуры обычная «плоская» таблица Excel не может быть загружена за одно простое сопоставление колонок. Ниже мы детально рассмотрим три наиболее эффективных способа загрузки этих данных.

Способ 1. Двухпроходная загрузка стандартной обработкой (без программирования)

Выясним, как загрузить данные, используя стандартную обработку «Загрузка данных из табличного документа». Этот способ отлично подходит для старых конфигураций на обычных формах (например, УТ 10.3, УПП 1.3, Розница 1.0) и не требует написания кода. Мы разобьем импорт на несколько логических этапов.

Шаг 1. Подготовка исходного файла Excel

Для успешного сопоставления наш файл должен содержать четкую структуру. Предположим, у нас есть следующие колонки:

Шаг 2. Загрузка справочника «Номенклатура»

Прежде чем создавать характеристики, необходимо загрузить в базу сами товары. Откроем обработку «Загрузка данных из табличного документа», выберем режим загрузки в справочник Номенклатура, сопоставим колонки А и B с реквизитами «Артикул» и «Наименование», после чего выполним загрузку элементов.

Шаг 3. Первый проход: Создание элементов характеристик

Теперь создадим пустые оболочки характеристик и свяжем их с товарами. Настроим обработку следующим образом:

  1. Переключим загрузку на справочник ХарактеристикиНоменклатуры (или Характеристики номенклатуры).
  2. На вкладке настройки полей укажем:
    • Владелец: выбираем режим поиска «Искать по реквизиту» (например, по Артикулу или Наименованию номенклатуры) и сопоставляем с соответствующей колонкой из Excel.
    • Наименование: сопоставляем с колонкой С («Наименование характеристики»).
  3. Запускаем импорт. Программа создаст характеристики для каждого товара, но их свойства (цвет, размер) внутри карточки пока останутся пустыми.

Шаг 4. Второй проход: Заполнение значений свойств

Чтобы отчеты и подбор в документах работали корректно, заполним свойства в регистре сведений. Настроим обработку:

  1. Выбираем режим загрузки в регистр сведений ЗначенияСвойствОбъектов.
  2. Настраиваем колонки сопоставления:
    • Объект: это наша характеристика. Настраиваем поиск по наименованию характеристики и владельцу (номенклатуре).
    • Свойство: сопоставляем со статическим значением или колонкой, где указано название свойства (например, «Размер»).
    • Значение: сопоставляем с колонкой значения свойства (например, «44»).
  3. Поскольку свойств у одной характеристики может быть несколько (и цвет, и размер), мы повторяем этот шаг для каждого свойства отдельно.

Таким образом, за два-три последовательных прохода мы полностью перенесем всю структуру данных в базу 1С.

Способ 2. Загрузка в один проход с помощью алгоритма «Вычислить» (Для разработчиков)

Рассмотрим более продвинутый вариант. В стандартной обработке «Загрузка данных из табличного документа» у каждого поля есть настройка способа поиска. Если выбрать вариант «Вычислить», мы получим возможность написать собственный код на встроенном языке 1С. Это позволит автоматически создавать и связывать всю цепочку данных за один единственный проход файла Excel.

Проанализируем пример кода, который можно прописать в поле поиска характеристики:


// Получаем текстовые данные из текущей строки файла Excel
ИмяНоменклатуры = ТекущаяСтрока["НаименованиеТовара"];
АртикулТовара   = ТекущаяСтрока["Артикул"];
ИмяХарактеристики = ТекущаяСтрока["Характеристика"];

// Выполняем поиск номенклатуры-владельца в базе данных
СсылкаНоменклатуры = Справочники.Номенклатура.НайтиПоАртикулу(АртикулТовара);

Если НЕ ЗначениеЗаполнено(СсылкаНоменклатуры) Тогда
    СсылкаНоменклатуры = Справочники.Номенклатура.НайтиПоНаименованию(ИмяНоменклатуры);
КонецЕсли;

Если ЗначениеЗаполнено(СсылкаНоменклатуры) Тогда
    // Ищем, создана ли уже такая характеристика для этого товара
    СсылкаХарактеристики = Справочники.ХарактеристикиНоменклатуры.НайтиПоНаименованию(ИмяХарактеристики, Истина, , СсылкаНоменклатуры);
    
    // Если характеристики еще нет, создаем ее программно прямо во время импорта
    Если НЕ ЗначениеЗаполнено(СсылкаХарактеристики) Тогда
        НоваяХарактеристика = Справочники.ХарактеристикиНоменклатуры.СоздатьЭлемент();
        НоваяХарактеристика.Владелец = СсылкаНоменклатуры;
        НоваяХарактеристика.Наименование = ИмяХарактеристики;
        
        Попытка
            НоваяХарактеристика.Записать();
            СсылкаХарактеристики = НоваяХарактеристика.Ссылка;
            
            // Здесь же можно сразу программно заполнить регистр сведений "ЗначенияСвойствОбъектов"
            // Для каждого свойства (например, Цвет, Размер) создаем запись в регистре
            МенеджерЗаписи = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьМенеджерЗаписи();
            МенеджерЗаписи.Объект = СсылкаХарактеристики;
            МенеджерЗаписи.Свойство = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Размер");
            МенеджерЗаписи.Значение = ТекущаяСтрока["РазмерЗначение"];
            МенеджерЗаписи.Записать();
            
        Исключение
            ОбщегоНазначения.СообщитьИнформацию("Ошибка создания характеристики: " + ОписаниеОшибки());
        КонецПопытки;
    КонецЕсли;
    
    Результат = СсылкаХарактеристики;
Иначе
    Результат = Справочники.ХарактеристикиНоменклатуры.ПустаяСсылка();
КонецЕсли;

Использование этого кода позволяет полностью исключить ручную рутину и загрузить сложнейшие файлы со множеством характеристик в автоматическом режиме за несколько секунд.

Способ 3. Загрузка в современных конфигурациях (УТ 11, ERP 2, УНФ 3.0)

Если вы работаете в современных конфигурациях на управляемых формах и платформе 1С 8.3, процесс существенно упростился благодаря встроенному помощнику. Разберем, как им пользоваться:

  1. Перейдем в раздел «НСИ и администрирование» — «Начальное заполнение» — «Загрузка данных из файла» (либо откроем список номенклатуры и нажмем кнопку «Заполнить из внешнего файла»).
  2. Скопируем таблицу из Excel прямо в буфер обмена и вставим ее в рабочее окно помощника 1С.
  3. На этапе сопоставления колонок система автоматически распознает реквизиты. Если для выбранного вида номенклатуры включено использование характеристик, программа позволит напрямую сопоставить колонки файла с дополнительными реквизитами характеристик.
  4. Нажмем кнопку «Загрузить». Платформа самостоятельно создаст карточки товаров, сгенерирует характеристики и привяжет к ним свойства без необходимости совершать несколько проходов.

Важные технические нюансы и подводные камни

При импорте характеристик программисты и аналитики часто сталкиваются со скрытыми проблемами. Выделим ключевые моменты, которые необходимо контролировать:

Таким образом, мы детально изучили методы загрузки номенклатуры с характеристиками из таблиц Excel. Выбор конкретного способа зависит от вашей конфигурации 1С и регулярности задачи: для разового переноса вполне достаточно стандартного двухпроходного метода, а для регулярного обновления каталога лучше использовать встроенный современный помощник или написать скрипт автосоздания через механизм «Вычислить».

← На главную