Как правильно организовать приемку маркированной продукции по кодам SSCC в 1С и исправить ошибки распознавания?

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

При организации складского учета маркированной продукции часто возникает задача принимать товар укрупненными логистическими упаковками (палетами или коробами) с использованием кодов SSCC (Serial Shipping Container Code). При работе в типовых решениях (1С:ERP, 1С:Комплексная автоматизация, 1С:Управление торговлей) пользователи и разработчики нередко сталкиваются с ситуацией, когда форма проверки и подбора марок остается пустой, мобильное рабочее место кладовщика (МРМК) выдает ошибку о нераспознанном штрихкоде с префиксом (00), а справочник упаковок не содержит данных о вложенности. Разберем по шагам, как устроен этот механизм в типовых конфигурациях и как устранить возникающие ошибки.

Архитектура учета упаковок и момент записи данных

Проанализируем частую ошибку понимания архитектуры: многие предполагают, что сразу после загрузки электронного документа поступления (УПД) или проведения документа ПриобретениеТоваровУслуг система должна автоматически сформировать все элементы справочника ШтрихкодыУпаковокТоваров со всей структурой вложенности. В типовой подсистеме интеграции с ИС МП это работает иначе.

Рассмотрим жизненный цикл кодов маркировки и упаковок при приемке:

  1. При загрузке электронного документа сырые строки штрихкодов попадают во внутренние структуры документа (в скрытую табличную часть ШтрихкодыУпаковок).
  2. Для фактической сверки открывается специализированная форма «Подбор и проверка маркируемой продукции». В ней формируется временное оперативное дерево упаковок и марок в оперативной памяти.
  3. Кладовщик сканирует физический код SSCC. При совпадении кода статус упаковки меняется на «В наличии» (или переходит в проверенное состояние).
  4. Запись элементов в справочник ШтрихкодыУпаковокТоваров и фиксация связей «упаковка верхнего уровня — вложенные упаковки — потребительские марки» происходят только в момент нажатия кнопки «Завершить подбор» в форме проверки. До этого момента искать созданные элементы в справочнике бессмысленно.

Почему форма «Подбор и проверка маркируемой продукции» открывается пустой?

Если в табличной части входящего документа коды упаковок присутствуют, но в форме проверки марок нет ни одной строки, выясним причину такого поведения. Существуют три основные проблемы настройки нормативно-справочной информации и документооборота:

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

Ошибка сканирования SSCC в МРМК и префикс (00)

Рассмотрим ошибку: «Невозможно обработать отсканированный штрихкод (00)*************2286 по причине: Отсканируйте код логистической упаковки в соответствующей форме проверки и подбора маркируемой продукции... Штрихкод не распознан».

Проанализируем сразу два фактора, вызывающих подобное поведение:

  1. Передача текстовых скобок идентификатора применения сканером: по стандарту GS1-128 цифры 00 в начале SSCC обозначают идентификатор применения (AI). В текстовом представлении под штрихкодом они пишутся в круглых скобках: (00). Однако в самом штрихкоде скобок нет — там закодирован специальный непечатный управляющий символ FNC1. Если сканер ТСД настроен некорректно и передает в порт физические символы скобок ( и ), библиотека подключаемого оборудования (БПО) не опознает строку как валидный 18-значный SSCC-код. Необходимо в настройках сканирующего модуля ТСД отключить форматирование идентификаторов применения (опции GS1 AI Parentheses или Format GS1). Сканер должен передавать только чистые цифры кода.
  2. Неверный режим сканирования в МРМК: в мобильном рабочем месте кладовщика на главном экране списка товаров система ожидает сканирования товарного штрихкода (EAN-13, GTIN) для позиционирования на строке. Логистический код SSCC нельзя сканировать в общем списке — необходимо предварительно открыть режим поштучной/упаковочной проверки (нажав на пиктограмму маркировки/коробки внутри ордера), и только там сканировать палетный код.

Как получить вложенность палеты из «Честного Знака»?

Часто поставщик указывает в электронном УПД только код верхнего уровня — SSCC палеты, не перечисляя в файле обмена десятки тысяч вложенных потребительских марок DataMatrix. В этом случае кладовщику требуется агрегированная информация из системы маркировки.

Разберем, как получить иерархию упаковок в типовом решении:

  1. Убедимся, что включена интеграция с государственной информационной системой в разделе НСИ и администрирование — Интеграция с ИС МП, настроены сертификаты электронных подписей и авторизация.
  2. В документе (или в форме «Подбор и проверка маркируемой продукции») вызывается стандартная команда запроса сведений об упаковках из ИС МП.
  3. 1С выполняет асинхронный запрос к API системы маркировки по переданному номеру SSCC, запрашивает дерево агрегации и наполняет форму проверки полным списком потребительских кодов, находящихся внутри данной палеты.
  4. После этого приемка выполняется по верхнему уровню: кладовщик сканирует один лишь SSCC код палеты, и система автоматически переводит в статус «В наличии» все вложенные потребительские марки без необходимости вскрывать упаковку и сканировать каждую штуку.

Для программного заполнения ордера или обработки структуры упаковок разработчики могут использовать поиск вложенных штрихкодов через табличную часть справочника упаковок. Посмотрим на типовую логику обхода подчиненных элементов:


// Пример рекурсивного обхода дерева штрихкодов упаковки
Процедура ПолучитьВложенныеКоды(РодительскаяУпаковка, ТаблицаРезультат)
    
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |	Штрихкоды.Ссылка КАК Упаковка,
        |	Штрихкоды.ЗначениеШтрихкода КАК ЗначениеШтрихкода,
        |	Штрихкоды.ТипУпаковки КАК ТипУпаковки
        |ИЗ
        |	Справочник.ШтрихкодыУпаковокТоваров КАК Штрихкоды
        |ГДЕ
        |	Штрихкоды.Родитель = &РодительскаяУпаковка";
    
    Запрос.УстановитьПараметр("РодительскаяУпаковка", РодительскаяУпаковка);
    Выборка = Запрос.Выполнить().Выбрать();
    
    Пока Выборка.Следующий() Цикл
        НоваяСтрока = ТаблицаРезультат.Добавить();
        НоваяСтрока.Упаковка = Выборка.Упаковка;
        НоваяСтрока.ЗначениеШтрихкода = Выборка.ЗначениеШтрихкода;
        
        // Рекурсивный вызов для проверки более глубоких уровней агрегации
        ПолучитьВложенныеКоды(Выборка.Упаковка, ТаблицаРезультат);
    КонецЦикла;
    
КонецПроцедуры

Таким образом, для стабильной приемки по кодам SSCC необходимо обеспечить передачу чистого штрихкода со сканера без служебных скобок, корректно настроить вид номенклатуры с соответствующей особенностью учета, соблюдать ордерность склада и подтверждать результаты проверки кнопкой «Завершить подбор».

← На главную