Почему при получении кодов маркировки из МДЛП отсутствует криптохвост и как это исправить?

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

При интеграции с системой «Честный ЗНАК» через Библиотеку интеграции с МДЛП (БИМ) разработчики часто сталкиваются с проблемой: при получении кодов эмиссии вместо полноценного кода DataMatrix с «криптохвостом» приходит только короткая строка длиной 27 символов (GTIN + SGTIN). Давайте разберемся, почему это происходит и как правильно настроить процесс получения данных.

Понимаем природу проблемы

Криптографический «хвост» (крипто-ключ и крипто-подпись) — это неотъемлемая часть GS1 DataMatrix для лекарственных препаратов. Если вы получаете строку из 27 символов, это означает, что в ваше приложение поступает только идентификационный номер товара, но не его защищенная часть. Основные причины такого поведения системы:

  1. Статус обработки заказа: Коды могут находиться в промежуточном статусе «эмитирован», когда СУЗ (Станция управления заказами) еще не завершила генерацию криптографических данных для конкретной пачки кодов.
  2. Некорректный метод API: Использование устаревших методов запроса к API, которые предназначены исключительно для получения идентификаторов, а не полных кодов маркировки с криптозащитой.
  3. Ограничения структуры данных: Поля в конфигураторе 1С могут быть физически ограничены (например, 27 символами), из-за чего полная строка с разделителями FNC1, ключом проверки (91) и криптоподписью (92) просто не помещается в базу данных.

Шаг 1: Обращение в специализированную поддержку 1С

Первое, что необходимо сделать при возникновении проблем с БИМ — обратиться в выделенную линию поддержки 1С:Библиотеки интеграции с МДЛП. Как показывает практика, специалисты этой службы обладают актуальными знаниями о последних изменениях в API «Честного ЗНАКа» и могут подсказать, какой именно релиз библиотеки содержит исправленные механизмы десериализации ответа сервера.

Для ускорения процесса подготовки обращения, заранее подготовьте:

Шаг 2: Анализ ответа сервера

Проанализируем ситуацию через «Инструменты разработчика» в 1С. Ваша задача — понять, прилетает ли криптохвост от сервера в принципе. Если в ответе сервера (в формате JSON) данные присутствуют в отдельных полях, но не попадают в итоговую строку SGTIN, значит, проблема в логике парсинга внутри библиотеки.

Посмотрим на структуру формирования кода. Криптохвост состоит из двух основных элементов, которые сервис отдает отдельно:

  1. Ключ проверки (идентификатор 91).
  2. Криптоподпись (идентификатор 92).

Если ваша программа должна сформировать итоговую строку для печати, используйте функции склейки согласно стандарту GS1:


// Пример логики формирования строки для печати (упрощенно)
ПолныйКод = Строка(GTIN) + Строка(SGTIN);
РазделительFNC1 = Символ(29); // ASCII код разделителя
ИтоговаяСтрока = ПолныйКод + РазделительFNC1 + "91" + КриптоКлюч + РазделительFNC1 + "92" + КриптоПодпись;

Шаг 3: Проверка настроек СУЗ и документации

Если данные отсутствуют даже в ответе сервера, необходимо свериться с Swagger-документацией API СУЗ. Возможно, в используемом запросе на эмиссию требуется передать дополнительный параметр, разрешающий генерацию и возврат крипто-части. В некоторых случаях система может отдавать коды по частям, и требуется дополнительный вызов метода «Получение кодов маркировки» для уже созданного заказа.

Рекомендации по дальнейшим действиям

Рассмотрев эти шаги, вы сможете локализовать проблему: либо на стороне настроек взаимодействия с СУЗ, либо на стороне обработки данных внутри вашей конфигурации 1С.

← На главную