При интеграции с системой «Честный ЗНАК» через Библиотеку интеграции с МДЛП (БИМ) разработчики часто сталкиваются с проблемой: при получении кодов эмиссии вместо полноценного кода DataMatrix с «криптохвостом» приходит только короткая строка длиной 27 символов (GTIN + SGTIN). Давайте разберемся, почему это происходит и как правильно настроить процесс получения данных.
Криптографический «хвост» (крипто-ключ и крипто-подпись) — это неотъемлемая часть GS1 DataMatrix для лекарственных препаратов. Если вы получаете строку из 27 символов, это означает, что в ваше приложение поступает только идентификационный номер товара, но не его защищенная часть. Основные причины такого поведения системы:
FNC1, ключом проверки (91) и криптоподписью (92) просто не помещается в базу данных.Первое, что необходимо сделать при возникновении проблем с БИМ — обратиться в выделенную линию поддержки 1С:Библиотеки интеграции с МДЛП. Как показывает практика, специалисты этой службы обладают актуальными знаниями о последних изменениях в API «Честного ЗНАКа» и могут подсказать, какой именно релиз библиотеки содержит исправленные механизмы десериализации ответа сервера.
Для ускорения процесса подготовки обращения, заранее подготовьте:
JSON-ответа, который приходит от сервера (важно увидеть, присутствуют ли там поля с крипто-частью).Проанализируем ситуацию через «Инструменты разработчика» в 1С. Ваша задача — понять, прилетает ли криптохвост от сервера в принципе. Если в ответе сервера (в формате JSON) данные присутствуют в отдельных полях, но не попадают в итоговую строку SGTIN, значит, проблема в логике парсинга внутри библиотеки.
Посмотрим на структуру формирования кода. Криптохвост состоит из двух основных элементов, которые сервис отдает отдельно:
Если ваша программа должна сформировать итоговую строку для печати, используйте функции склейки согласно стандарту GS1:
// Пример логики формирования строки для печати (упрощенно)
ПолныйКод = Строка(GTIN) + Строка(SGTIN);
РазделительFNC1 = Символ(29); // ASCII код разделителя
ИтоговаяСтрока = ПолныйКод + РазделительFNC1 + "91" + КриптоКлюч + РазделительFNC1 + "92" + КриптоПодпись;
Если данные отсутствуют даже в ответе сервера, необходимо свериться с Swagger-документацией API СУЗ. Возможно, в используемом запросе на эмиссию требуется передать дополнительный параметр, разрешающий генерацию и возврат крипто-части. В некоторых случаях система может отдавать коды по частям, и требуется дополнительный вызов метода «Получение кодов маркировки» для уже созданного заказа.
SGTIN, имеют достаточную длину (рекомендуется не менее 128 символов), чтобы вместить строку вместе с криптохвостом.Рассмотрев эти шаги, вы сможете локализовать проблему: либо на стороне настроек взаимодействия с СУЗ, либо на стороне обработки данных внутри вашей конфигурации 1С.