При работе с системой «Честный Знак» (ГИС МТ) пользователи 1С часто сталкиваются с ошибкой «Ошибка верификации крипто-подписи КМ». Эта проблема блокирует возможность продажи или ввода товара в оборот, так как система не может подтвердить подлинность нанесенного кода. Чтобы оперативно проконтролировать ситуацию на складе или в торговом зале, можно использовать приложение проверки маркировки для Android, которое работает в разрешительном режиме — для этого подойдёт мобильное приложение для ТСД и смартфонов по контролю кодов маркировки. Ошибка может возникать внезапно: часть кодов из партии проходит проверку, а часть — нет. Разберем подробно причины возникновения этой ситуации и пошагово рассмотрим способы ее решения.
Для начала проанализируем, что именно происходит в момент верификации. Код маркировки DataMatrix состоит из нескольких частей: GTIN, серийный номер и так называемый «криптохвост» (код проверки). Ошибка верификации означает, что контрольная сумма, вычисленная на основе данных кода, не совпадает с той, что заложена в крипто-подписи, либо система не может корректно прочитать эту подпись. Рассмотрим основные уровни, на которых может возникнуть сбой:
Проанализируем работу сканера. Самая частая причина ошибки — некорректная передача спецсимвола GS (Group Separator, ASCII 29). Этот символ является разделителем полей в коде DataMatrix. Если сканер настроен в режиме эмуляции клавиатуры (HID), он часто игнорирует этот символ, «склеивая» части кода. В результате крипто-подпись становится невалидной.
Рассмотрим шаги по исправлению:
Посмотрим на программную часть. Даже если в торговых точках (на кассах) КриптоПро не установлено, верификация может выполняться на сервере 1С или через веб-сервисы, которые требуют актуальных алгоритмов ГОСТ. Порой ошибка возникает из-за того, что серверная часть не может корректно обработать запрос к ГИС МТ.
Разберем рекомендации по обновлению:
Проанализируем ситуацию, когда настройки исправлены, но ошибка сохраняется. В конфигурациях 1С существует механизм кэширования результатов проверки кодов маркировки — для борьбы с ошибками верификации есть рабочее место для исправления ошибок сканирования марок. Если код один раз был считан некорректно (например, до настройки сканера), 1С запоминает этот «битый» результат в регистре сведений.
Выясним, как очистить эти данные. Нам необходимо найти регистр КэшШтрихкодовУпаковок (название может незначительно отличаться в зависимости от версии БЭД). Посмотрим на пример логики, которую можно применить для очистки через «Функции для технического специалиста»:
Пул штрихкодов в некоторых отраслевых решениях).После очистки при следующем сканировании система будет обязана заново отправить запрос в ГИС МТ (True API) для получения актуального статуса верификации — для этой задачи есть обработка инвентаризации и сверки кодов маркировки с Честным Знаком.
Система «Честный Знак» постоянно меняет протоколы взаимодействия. Старые методы верификации постепенно отключаются. Для стабильной
Рассмотрим порядок действий:
Иногда проблема кроется в самом коде DataMatrix. Если печать была некачественной (низкое разрешение, «полосящий» принтер), сканер может считывать код с ошибками в отдельных битах. Визуально код может выглядеть целым, но контрольная сумма криптохвоста не совпадет.
Проанализируем алгоритм действий в этом случае:
Если вы хотите программно отследить, на каком этапе происходит сбой, можно обратиться к методам общего модуля интеграции. Рассмотрим примерную структуру вызова проверки (в зависимости от вашей конфигурации названия функций могут отличаться):
// Пример получения данных из кэша или запроса к ИС МП
ПараметрыПроверки = ИнтеграцияИСМПКлиентСервер.ПараметрыПроверкиКодовМаркировки();
ПараметрыПроверки.ПроверятьКриптоподпись = Истина;
Результат = МаркировкаТоваровПередачДанных.ПроверитьКодыМаркировки(МассивКодов, ПараметрыПроверки);
Для Каждого СтрокаРезультата Из Результат.Ошибки Цикл
Сообщить("Код: " + СтрокаРезультата.КодМаркировки + " Ошибка: " + СтрокаРезультата.ТекстОшибки);
КонецЦикла;
Изучив лог выполнения этой функции, можно понять, возвращает ли ошибку сам сервер ЦРПТ или отказ происходит на уровне локальной проверки компонентой 1С.
Подводя итог, если вы столкнулись с ошибкой верификации крипто-подписи, действуйте методично: сначала исключите влияние сканера (проверьте передачу GS1), затем обновите ПО (КриптоПро и 1С), очистите внутренний кэш базы данных и, если ничего не помогло, прибегайте к перемаркировке товара. Помните, что стабильная работа маркировки требует точной синхронизации времени и актуальных корневых сертификатов на всех узлах системы.