Как программно получить коды маркировки с криптохвостом для печати на термопринтере?

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

При интеграции с системой «Честный ЗНАК» часто возникает необходимость печати кодов маркировки на специализированных термопринтерах. Использование готовых PDF-файлов из личного кабинета не всегда удобно, так как они не подходят для автоматизированных процессов. Разберем, как получить полные данные кода маркировки, включая необходимый для валидации криптохвост, используя API СУЗ. Если же требуется обработать уже сформированные файлы, можно использовать обработку для извлечения кодов DataMatrix из PDF-документов «Честного Знака».

Понимание архитектуры получения данных

Важно помнить, что коды маркировки (КИ) состоят из GTIN, серийного номера и криптографического хвоста. Именно криптохвост является защитным элементом, который генерируется на стороне СУЗ при заказе эмиссии. Получить его можно только в момент работы с заказами через API, поэтому важно правильно настроить взаимодействие с сервером СУЗ.

Шаг 1: Настройка подключения к API СУЗ

Для начала работы необходимо правильно сформировать объект HTTPСоединение. Ошибки при подключении чаще всего связаны с неверным указанием хоста или порта. Обратите внимание, что актуальные эндпоинты могут меняться, и на текущий момент целесообразно использовать suzgrid.crpt.ru.

Рассмотрим структуру подключения в коде 1С:


ЗаголовокHTTP = Новый Соответствие();
ЗаголовокHTTP.Вставить("clientToken", ClientToken);
ЗаголовокHTTP.Вставить("Accept", "application/json");

// Используем актуальный хост для запросов к СУЗ
АдресСервера = "suzgrid.crpt.ru";
Соединение = Новый HTTPСоединение(АдресСервера, 443, , , , , Новый ЗащищенноеСоединениеOpenSSL);

// Формируем запрос к нужному методу API
urlЗапроса = "/api/v2/light/codes/retry?omsId=" + omsId + "&orderId=" + orderId + ">in=" + gtin + "&blockId=" + blockId;
Запрос = Новый HTTPЗапрос(urlЗапроса, ЗаголовокHTTP);

Ответ = Соединение.ВызватьHTTPМетод("GET", Запрос);

Шаг 2: Получение кодов с криптохвостом

Для того чтобы забрать уже заказанные, но еще не «скачанные» коды вместе с криптохвостом, используем метод codes/retry. Этот метод позволяет повторно получить данные блоков кодов, если они были ранее сформированы в заказе.

Для работы метода необходимо передать следующие параметры:

  1. omsId — идентификатор системы управления заказами.
  2. orderId — уникальный идентификатор вашего заказа на эмиссию.
  3. gtin — идентификатор товара в системе GS1.
  4. blockId — идентификатор блока кодов, который вы получили при первичном запросе списка кодов.

Шаг 3: Обработка полученных данных и печать

После успешного получения JSON-ответа от сервера, вам необходимо распарсить его и извлечь значения binaryCode или аналогичных полей, содержащих полный код с криптохвостом. Критически важно не открывать промежуточные файлы (если вы скачиваете их в CSV) в программах типа Excel, так как они могут исказить спецсимволы и длинные числовые последовательности.

Для печати на термопринтере мы рекомендуем реализовать собственный алгоритм генерации DataMatrix:

Рекомендации по отладке

Если при выполнении запросов вы получаете ошибки:

Таким образом, прямой доступ к API СУЗ позволяет полностью автоматизировать процесс получения кодов и исключает необходимость работы с PDF-шаблонами, обеспечивая стабильную и корректную печать маркировки на любом производственном участке.

← На главную