При интеграции кассового оборудования с системой маркировки «Честный ЗНАК» разработчики часто сталкиваются с ошибками вида «Код маркировки не найден» или «Ошибка проверки кода». Разберем, почему это происходит и как правильно организовать передачу данных в зависимости от используемого формата фискальных документов.
Код маркировки в формате DataMatrix — это не просто строка символов, а сложная структура, разделенная идентификаторами применения (ИИ). Основную сложность для программного обеспечения представляет спецсимвол GS (Group Separator), который служит разделителем между полями. Если сканер штрихкодов настроен некорректно, он может игнорировать этот символ или заменять его на пробел, что делает невозможным правильный парсинг «криптохвоста».
Ключевым фактором для успешной фискализации является понимание того, какой формат фискальных данных (ФФД) используется в вашей кассе:
GS и криптографическую часть. Касса сама взаимодействует с ОФД и системой маркировки для валидации кода.Чтобы избежать ошибок парсинга, убедитесь, что ваш сканер настроен на передачу символа GS. Большинство современных сканеров требуют сканирования специальных управляющих штрихкодов из инструкции производителя, чтобы включить режим передачи ASCII кода 29 (который соответствует GS). Если вы не настроите сканер, программа получит «склеенную» строку, которую невозможно будет корректно разделить на GTIN, серийный номер и криптохвост.
При передаче данных в ККТ для формата ФФД 1.2 рекомендуется использовать формат Base64. Это позволяет избежать потерь служебных символов при передаче пакета данных между компонентами системы. Рассмотрим пример структуры пакета, который ожидает оборудование:
<CheckPackage>
<Parameters ... />
<Positions>
<FiscalString Name="Наименование товара" Quantity="1" PriceWithDiscount="200"
MarkingCode="HTAxMDQ2MjIyMjIyMjIyMjIyMjIyMjIyMjIy"/>
</Positions>
<Payments ... />
</CheckPackage>
Многие разработчики пытаются реализовать поиск криптохвоста вручную через поиск вхождений «21» или «93». Это неправильный подход, так как:
Для разбора кодов маркировки настоятельно рекомендуем использовать Библиотеку подключаемого оборудования (БПО) от фирмы 1С. В ней уже реализованы все необходимые механизмы для корректного разбора DataMatrix, что освобождает вас от необходимости изобретать велосипед и гарантирует соответствие актуальным требованиям законодательства.
БПО для работы с маркировкой вместо написания собственных парсеров строк.