При организации складского учета, приемки и отгрузки маркированной продукции (например, бутилированной воды или молочной продукции) часто возникает задача корректного отражения вложенности упаковок. Типичный сценарий: на склад поступает паллета, на которой нанесен код логистической упаковки (КИТУ), внутри паллеты находятся групповые упаковки — паки (КИГУ или КИТУ), а внутри каждого пака — штучные бутылки с индивидуальными кодами маркировки (КМ). Разберем, как устроена структура хранения этих данных в типовых конфигурациях 1С и как правильно заполнить справочник ШтрихкодыУпаковокТоваров.
Проанализируем архитектуру библиотеки интеграции с ИС МП, используемую в решениях 1С (1С:ERP, 1С:Комплексная автоматизация, 1С:Управление торговлей). В отличие от большинства стандартных иерархических справочников, справочник ШтрихкодыУпаковокТоваров не использует стандартный реквизит Родитель платформы 1С:Предприятие. Иерархия выстраивается сверху вниз с помощью табличной части ВложенныеШтрихкоды, в которой реквизит Штрихкод ссылается на подчиненный элемент этого же справочника (тип данных СправочникСсылка.ШтрихкодыУпаковокТоваров).
Заполнение выполняется строго поуровнево, шаг за шагом:
ВложенныеШтрихкоды добавляются ссылки только на элементы следующего уровня — на паки.ВложенныеШтрихкоды добавляются ссылки на штучные потребительские упаковки — бутылки.ВложенныеШтрихкоды остается пустой.Обратите внимание: попытка включить коды потребительских упаковок (бутылок) напрямую в табличную часть паллеты «через уровень» считается грубой ошибкой. При такой структуре типовая форма проверки и подбора маркируемой продукции не сможет построить корректное дерево агрегации, а при частичной распаковке, отгрузке или продаже отдельных паков возникнут неразрешимые коллизии и расхождения со сведениями в системе «Честный Знак».
Рассмотрим подробнее, какие реквизиты необходимо указывать при формировании элементов каждого уровня:
ТипШтрихкода принимает значение SSCC (или GS1_128), а реквизит ТипУпаковки устанавливается как ЛогистическаяУпаковка (в зависимости от структуры может быть МультитоварнаяУпаковка или МонотоварнаяУпаковка). В шапке мультитоварных упаковок номенклатура, как правило, не заполняется.ТипШтрихкода принимает значение GS1_128 или GS1_DataMatrix, реквизит ТипУпаковки — МонотоварнаяУпаковка. Здесь указывается ссылка на номенклатуру и задается количество потребительских вложений.ТипШтрихкода устанавливается в значение GS1_DataMatrix, реквизит ТипУпаковки — МаркированныйТовар. Заполнение реквизитов Номенклатура и Характеристика является обязательным.Выясним важную техническую деталь, касающуюся сохранения кодов потребительских упаковок. В реквизит ЗначениеШтрихкода код маркировки DataMatrix должен записываться в нормализованном виде — без криптографического хвоста (отсекаются символ-разделитель GS с кодом ASCII 29 и проверочный ключ с электронной подписью). Сохранение сырой строки с криптохвостом и спецсимволами в реквизитах справочника приводит к ошибкам XML-сериализации при передаче данных в документы и при печати этикеток.
Для программного создания упаковок разработчикам рекомендуется использовать штатную функцию модуля менеджера справочника:
ШтрихкодыУпаковокТоваров.СоздатьШтрихкодУпаковки(...)
Данный типовой метод автоматически рассчитывает хеш-суммы содержимого, корректно распознает тип переданного штрихкода и безошибочно выстраивает ссылки подчинения в базе данных.
Разберем, как получить заполненную структуру упаковок без написания собственного кода:
ШтрихкодыУпаковокТоваров и помещает их в табличную часть ШтрихкодыУпаковок входящего документа поступления.Маркировка товаров ИС МП с операцией Агрегация, который при проведении штатно заполняет справочник и регистрирует связи упаковок.