Загрузка характеристик номенклатуры в 1С:Розница часто вызывает затруднения, так как характеристики — это не простые текстовые поля, а объекты, имеющие сложную связь с владельцем (номенклатурой) и механизмом дополнительных свойств. В этом руководстве мы разберем, как правильно настроить загрузку данных, чтобы избежать ошибок и корректно привязать характеристики к товарам.
Прежде чем приступать к загрузке, важно осознать, что Характеристика Номенклатуры — это подчиненный справочник. Владельцем каждой характеристики является конкретный элемент справочника Номенклатура. Если вы попытаетесь создать характеристику без указания владельца или без учета механизмов свойств, система выдаст ошибку или данные будут «битыми».
Кроме того, современные конфигурации «Розницы» (включая «Салон оптики») используют БСП-механизм характеристик. Это означает, что для корректной работы системы недостаточно просто создать элемент справочника. Необходимо:
ХарактеристикиНоменклатуры.ЗначенияСвойствОбъектов).Стандартная обработка ЗагрузкаДанныхИзТабличногоДокумента.epf является мощным инструментом, если использовать её возможности по написанию произвольного кода на каждую строку. Использование стандартных настроек «маппинга» колонок здесь не поможет, так как нужно управлять созданием записей в нескольких таблицах базы данных.
Разберем пошагово, как реализовать логику загрузки в поле «Обработка строки».
Шаг 1: Подготовка данных. Убедитесь, что ваш файл содержит уникальный идентификатор номенклатуры (например, Артикул или Код) и все необходимые значения свойств (Цвет, Размер, Модель и т.д.).
Шаг 2: Настройка логики в коде. В модуле обработки необходимо прописать алгоритм, который будет выполняться для каждой строки вашего файла Excel.
// Пример логики для поиска и создания характеристики
// Предположим, что колонка 1 - Артикул номенклатуры, колонка 2 - Наименование характеристики
АртикулТовара = СокрЛП(ТекСтрока.Колонка1);
НаименованиеХар = СокрЛП(ТекСтрока.Колонка2);
// Поиск владельца
НоменклатураСсылка = Справочники.Номенклатура.НайтиПоРеквизиту(\"Артикул\", АртикулТовара);
Если ЗначениеЗаполнено(НоменклатураСсылка) Тогда
// Создаем характеристику
НоваяХарактеристика = Справочники.ХарактеристикиНоменклатуры.СоздатьЭлемент();
НоваяХарактеристика.Владелец = НоменклатураСсылка;
НоваяХарактеристика.Наименование = НаименованиеХар;
НоваяХарактеристика.Записать();
// Здесь же необходимо реализовать запись свойств через менеджеры БСП
// Если используются дополнительные реквизиты:
// Работа с регистром сведений ЗначенияСвойствОбъектов
КонецЕсли;
Чтобы избежать критических ошибок при загрузке, следуйте этим советам:
Номенклатура, убедитесь, что все артикулы корректно записаны. Только после этого приступайте к загрузке ХарактеристикНоменклатуры.Если ЗначениеЗаполнено(НоменклатураСсылка) Тогда, чтобы система не создавала характеристики для несуществующей номенклатуры.Массовая загрузка характеристик — это задача, требующая программистского подхода. Стандартный интерфейс загрузки не предназначен для сложных многоуровневых справочников, поэтому использование «Обработки строки» с кодом 1С — единственно верное решение. Если задача кажется слишком сложной, рассмотрите возможность использования расширений для 1С, которые имеют специализированные формы для сопоставления номенклатуры и характеристик, автоматизируя написание кода за вас.