При автоматизации учета в 1С:Управление торговлей ред. 11 часто возникает задача массовой загрузки элементов справочника ХарактеристикиНоменклатуры из таблиц Excel. Особенно много вопросов вызывает корректное заполнение дополнительных реквизитов характеристик, таких как цвет, размер, материал или габариты.
Рассмотрим подробно варианты решения этой задачи: применение встроенной типовой загрузки данных, ее ограничения, а также написание собственной обработки с примерами кода на языке 1С.
В конфигурации 1С:Управление торговлей 11 предусмотрена встроенная обработка «Загрузка данных из файла». С ее помощью можно загружать данные из таблиц Excel напрямую в справочники системы.
Разберем основные особенности и ограничения типового инструмента при работе с характеристиками:
ЗначенияСвойствОбъектов «на лету». Если значение дополнительного реквизита (например, новый цвет или размер) отсутствует в базе 1С, система пропустит запись или выведет ошибку. Все значения доп. реквизитов должны быть созданы заранее.Прежде чем приступать к загрузке характеристик любым из способов, проанализируем настройки системы. Без правильной подготовки платформатика не позволит привязать свойства к номенклатуре:
Для реализации гибкой логики загрузки и автоматического создания отсутствующих значений доп. реквизитов разработчики часто выбирают написание внешней обработки.
Посмотрим на базовый пример заполнения табличной части дополнительных реквизитов объекта характеристики:
НоваяСтрока = ХаркаОбъект.ДопРеквизиты.Добавить();
НоваяСтрока.Свойство = СвойствоОбъекта;
НоваяСтрока.Значение = ЗначениеСвойства;
При прямолинейном заполнении табличной части ДопРеквизиты необходимо вручную контролировать совпадение типов данных, проверять уникальность строк и корректно передавать ссылки на доп. реквизит и его значение.
Проанализируем более надежный и правильный способ работы с доп. реквизитами в конфигурациях на базе Библиотеки Стандартных Подсистем (БСП). Для безопасной записи свойств рекомендуется использовать стандартный вызов метода подсистемы управления свойствами:
УправлениеСвойствами.ЗаписатьСвойстваУОбъекта(ХаркаОбъект, СтруктураРеквизитов);
Этот метод автоматически выполняет валидацию типов данных, корректно формирует структуру дополнительных реквизитов и очищает неактуальные значения объекта.
Выбор метода загрузки зависит от объема и регулярности задачи: