При выполнении проверки кодов маркировки через штатную обработку в программе 1С:Управление торговлей пользователи могут столкнуться с ситуацией, когда код групповой или транспортной упаковки обрезается перед отправкой в систему «Честный Знак». В результате сервер ГИС МТ возвращает ошибку Код состояния: 404, хотя на портале системы маркировки данный код успешно находится и раскрывается по составу вложений.
Разберем детально механизм возникновения этой коллизии, проанализируем логи запросов и рассмотрим практические способы решения проблемы.
Рассмотрим структуру входящих данных от торгового оборудования и формируемый программой исходящий HTTP-запрос к API сервиса маркировки:
Входящие данные с торгового оборудования:
[{"Штрихкод":"01004610359540506000000001706","ШтрихкодBase64":"MDEwMDQ2MTAzNTk1NDA1MDYwMDAwMDAwMDE3MDY=","Количество":1}]
POST https://markirovka.crpt.ru:443/api/v3/true-api/cises/info
Content-Type: application/json; charset=utf-8
["010046103595405060000"]
Код состояния: 404
Обратим внимание на тело исходящего запроса. Сканер передал строку из 29 символов: 01004610359540506000000001706. Однако в массив cises/info программа передала только 21 символ: 010046103595405060000, просто отрезав последние 8 знаков.
Посмотрим на второй пример, где аналогичный по назначению штрихкод обработался корректно:
Входящие данные с торгового оборудования:
[{"Штрихкод":"010046103595405060000000017610","ШтрихкодBase64":"MDEwMDQ2MTAzNTk1NDA1MDYwMDAwMDAwMDE3NjEw","Количество":1}]
POST https://markirovka.crpt.ru:443/api/v3/true-api/cises/info
Content-Type: application/json; charset=utf-8
["010046103595405060000000017610"]
Код состояния: 200
Здесь длина входящей строки составляет ровно 30 знаков. Вся последовательность без искажений попала в запрос и сервис вернул статус успешной обработки 200 OK.
Проанализируем логику работы типовых алгоритмов интеграции 1С с ИС МП (БПО и БПО-подобные модули):
Разберем по шагам, как устранить проблему на уровне считывающего оборудования, не прибегая к изменению кода конфигурации:
]C1, а для GS1 DataMatrix — ]d2. Наличие такого префикса заставляет парсер 1С отказаться от предположений по длине и включить строгий разбор идентификаторов применения GS1 Application Identifier (AI).GS (ASCII-код 29). Наличие разделителя позволяет программе точно определять границы полей переменной длины.Если оборудование невозможно перенастроить или коды вводятся вручную (через буфер обмена), разберем доработку логики разбора кодов маркировки через расширение:
ИнтеграцияИСМПКлиентСервер или функции разбора в БПО).01 и имеет длину 29 символов, но при этом обрабатывается как групповая упаковка, отправляем на проверку в сервис /cises/info полный код без модификации.Стандартом идентификации логистических упаковок в системе «Честный Знак» является код формата SSCC-18 (идентификатор применения AI 00). Рассмотрим преимущества перехода на данный формат:
00).00 и корректно передают SSCC в запросы к сервисам ГИС МТ без риска случайного отсечения символов.Если предприятие имеет возможность согласовать правила маркировки с производителем или поставщиком продукции, рекомендуется сформировать регламент на обязательное использование транспортных кодов стандарта SSCC.