При организации складского учета маркированной продукции часто возникает задача принимать товар укрупненными логистическими упаковками (палетами или коробами) с использованием кодов SSCC (Serial Shipping Container Code). При работе в типовых решениях (1С:ERP, 1С:Комплексная автоматизация, 1С:Управление торговлей) пользователи и разработчики нередко сталкиваются с ситуацией, когда форма проверки и подбора марок остается пустой, мобильное рабочее место кладовщика (МРМК) выдает ошибку о нераспознанном штрихкоде с префиксом (00), а справочник упаковок не содержит данных о вложенности. Разберем по шагам, как устроен этот механизм в типовых конфигурациях и как устранить возникающие ошибки.
Проанализируем частую ошибку понимания архитектуры: многие предполагают, что сразу после загрузки электронного документа поступления (УПД) или проведения документа ПриобретениеТоваровУслуг система должна автоматически сформировать все элементы справочника ШтрихкодыУпаковокТоваров со всей структурой вложенности. В типовой подсистеме интеграции с ИС МП это работает иначе.
Рассмотрим жизненный цикл кодов маркировки и упаковок при приемке:
ШтрихкодыУпаковок).ШтрихкодыУпаковокТоваров и фиксация связей «упаковка верхнего уровня — вложенные упаковки — потребительские марки» происходят только в момент нажатия кнопки «Завершить подбор» в форме проверки. До этого момента искать созданные элементы в справочнике бессмысленно.Если в табличной части входящего документа коды упаковок присутствуют, но в форме проверки марок нет ни одной строки, выясним причину такого поведения. Существуют три основные проблемы настройки нормативно-справочной информации и документооборота:
ВидНоменклатуры реквизит ОсобенностьУчета настроен на соответствующую товарную группу (например, «Обувная продукция», «Молочная продукция», «Упакованная вода»). Если номенклатура создана со значением «Без особенностей учета», механизм проверки полностью игнорирует строки с этим товаром.ШтрихкодыУпаковок строковыми значениями, но и проставить реквизиты связи — КлючСтрокиТабличнойЧасти (или КлючСвязи), Номенклатура и Характеристика. Если связь с табличной частью Товары не заполнена, построитель дерева формы проверки не сможет привязать упаковку к номенклатуре документа.ПриходныйОрдерНаТовары, а не в финансовой накладной.Рассмотрим ошибку: «Невозможно обработать отсканированный штрихкод (00)*************2286 по причине: Отсканируйте код логистической упаковки в соответствующей форме проверки и подбора маркируемой продукции... Штрихкод не распознан».
Проанализируем сразу два фактора, вызывающих подобное поведение:
00 в начале SSCC обозначают идентификатор применения (AI). В текстовом представлении под штрихкодом они пишутся в круглых скобках: (00). Однако в самом штрихкоде скобок нет — там закодирован специальный непечатный управляющий символ FNC1. Если сканер ТСД настроен некорректно и передает в порт физические символы скобок ( и ), библиотека подключаемого оборудования (БПО) не опознает строку как валидный 18-значный SSCC-код. Необходимо в настройках сканирующего модуля ТСД отключить форматирование идентификаторов применения (опции GS1 AI Parentheses или Format GS1). Сканер должен передавать только чистые цифры кода.Часто поставщик указывает в электронном УПД только код верхнего уровня — SSCC палеты, не перечисляя в файле обмена десятки тысяч вложенных потребительских марок DataMatrix. В этом случае кладовщику требуется агрегированная информация из системы маркировки.
Разберем, как получить иерархию упаковок в типовом решении:
Для программного заполнения ордера или обработки структуры упаковок разработчики могут использовать поиск вложенных штрихкодов через табличную часть справочника упаковок. Посмотрим на типовую логику обхода подчиненных элементов:
// Пример рекурсивного обхода дерева штрихкодов упаковки
Процедура ПолучитьВложенныеКоды(РодительскаяУпаковка, ТаблицаРезультат)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Штрихкоды.Ссылка КАК Упаковка,
| Штрихкоды.ЗначениеШтрихкода КАК ЗначениеШтрихкода,
| Штрихкоды.ТипУпаковки КАК ТипУпаковки
|ИЗ
| Справочник.ШтрихкодыУпаковокТоваров КАК Штрихкоды
|ГДЕ
| Штрихкоды.Родитель = &РодительскаяУпаковка";
Запрос.УстановитьПараметр("РодительскаяУпаковка", РодительскаяУпаковка);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
НоваяСтрока = ТаблицаРезультат.Добавить();
НоваяСтрока.Упаковка = Выборка.Упаковка;
НоваяСтрока.ЗначениеШтрихкода = Выборка.ЗначениеШтрихкода;
// Рекурсивный вызов для проверки более глубоких уровней агрегации
ПолучитьВложенныеКоды(Выборка.Упаковка, ТаблицаРезультат);
КонецЦикла;
КонецПроцедуры
Таким образом, для стабильной приемки по кодам SSCC необходимо обеспечить передачу чистого штрихкода со сканера без служебных скобок, корректно настроить вид номенклатуры с соответствующей особенностью учета, соблюдать ордерность склада и подтверждать результаты проверки кнопкой «Завершить подбор».