Как загрузить характеристики и заполнить их свойства из Excel в 1С:УНФ?

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

При загрузке данных из внешних файлов Excel с помощью стандартной обработки «Загрузка данных из табличного документа» (с диска ИТС) пользователи 1С:Управление нашей фирмой (УНФ) часто сталкиваются со следующей проблемой: сами элементы справочника ХарактеристикиНоменклатуры создаются с нужными наименованиями (например, «S, Красный»), однако табличная часть дополнительных реквизитов остается пустой. В результате наименование характеристики есть, а составляющие её свойства (цвет, размер) не привязаны.

Разберем, почему так происходит, как устроена хранение свойств в конфигурации и какими способами можно программно или штатно решить эту задачу.

Причины проблемы и особенности архитектуры 1С:УНФ

Выясним, почему универсальная обработка с ИТС не может корректно зафиксировать свойства характеристики:

  1. Хранение в табличной части: В 1С:УНФ значения дополнительных реквизитов (размер, цвет и т. д.) не являются простыми реквизитами шапки объекта. Они хранятся в подчиненной табличной части ДополнительныеРеквизиты справочника ХарактеристикиНоменклатуры. Универсальная обработка загрузки без специальной настройки не умеет адресовать и сопоставлять данные для этой табличной части.
  2. Типы данных и владельцы: Значения свойств представляют собой ссылки на справочник ЗначенияСвойствОбъектов. Для каждой характеристики важно отслеживать тип её владельца:
    • Если используются общие характеристики, владельцем выступает элемент справочника КатегорииНоменклатуры.
    • Если используются индивидуальные характеристики, владельцем является конкретный элемент справочника Номенклатура.

Способ 1. Программное заполнение свойств с помощью подсистемы БСП

Если характеристики уже созданы или их загрузка происходит в собственном алгоритме, заполнение дополнительных реквизитов необходимо выполнять через вызов экспортных процедур библиотеки стандартных подсистем (БСП) и модулей 1С:УНФ.

Рассмотрим пример кода, который вызывается при обработке и записи объекта характеристики:


// Перед записью характеристики вызывается проверка заполнения свойств
Отказ = Ложь;
КатегорииНоменклатурыСервер.ПроверкаЗаполненияСвойстПерезЗаписью(ХарактеристикаОбъект, Отказ);

Если Не Отказ Тогда
    // Записываем объект характеристики
    ХарактеристикаОбъект.Записать();
    ХарактеристикаСсылка = ХарактеристикаОбъект.Ссылка;
    
    // Формируем массив структур с дополнительными реквизитами
    МассивСтруктур = Новый Массив;
    
    СтруктураСвойства = Новый Структура;
    СтруктураСвойства.Вставить("Свойство", ДопРеквизит); // Ссылка из ПВХ "Дополнительные реквизиты и сведения"
    СтруктураСвойства.Вставить("Значение", ЗначениеДопРеквизита); // Ссылка из справочника "Значения свойств объектов"
    
    МассивСтруктур.Добавить(СтруктураСвойства);
    
    // Записываем значения свойств у объекта через штатную подсистему
    УправлениеСвойствами.ЗаписатьСвойстваУОбъекта(ХарактеристикаСсылка, МассивСтруктур);
КонецЕсли;

Проанализируем ключевые шаги приведенного алгоритма:

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

Способ 2. Использование штатного механизма загрузки из Excel

Если нет возможности дорабатывать код загрузки, рекомендуем воспользоваться встроенным в 1С:УНФ механизмом импорта данных:

  1. Перейдите в раздел Компания — Загрузка данных из Excel.
  2. Скачайте и зафиксируйте шаблон для загрузки номенклатуры и характеристик.
  3. В встроенном механизме конфигурации уже заложена логика сопоставления колонок со свойствами характеристик. При импорте система автоматически найдет или создаст необходимые элементы в справочнике ЗначенияСвойствОбъектов и заполнит табличную часть характеристики.
← На главную