С переходом на формат фискальных данных (ФФД) 1.2 многие пользователи столкнулись с новой индикацией в кассовых чеках. Теперь рядом с маркированным товаром (например, обувью) печатается буква «М» с различными знаками: «М+», «М» или «М-». Самым неприятным является статус «М-», который означает, что проверка кода маркировки не пройдена. При этом мобильное приложение «Честный ЗНАК» может показывать, что с маркой все в порядке. Рассмотрим подробно, почему возникает такая ситуация, кто за это отвечает и как наладить корректную работу системы.
Для начала разберем, что именно происходит в момент сканирования. В отличие от старых форматов, в ФФД 1.2 проверка кода маркировки происходит «онлайн» прямо на кассе перед пробитием чека. Процесс выглядит так:
Если мы видим «М-», это означает, что фискальный накопитель получил отрицательный ответ от сервера маркировки или не смог подтвердить подлинность кода локально. Если же печатается просто «М», значит, касса не получила ответ от сервера в отведенный таймаут и не смогла проверить марку.
Проанализируем наиболее частую техническую причину — некорректную передачу кода сканером. Код маркировки DataMatrix содержит невидимый управляющий символ GS (Group Separator), ASCII-код 29. Он разделяет части кода. Если сканер настроен в режиме эмуляции клавиатуры (HID), он часто просто игнорирует этот символ или заменяет его. Без этого символа код считается некорректным для ФН-М, и проверка возвращает «М-».
Разберем, что нужно сделать:
<RequestKM GUID="884a1769-..." MarkingCode="MD..." PlannedStatus="1"/>
Если в поле MarkingCode код передается в формате Base64, нужно убедиться, что при декодировании там присутствуют разделители. Если 1С «съедает» спецсимволы до передачи в драйвер, ФН-М никогда не сможет подтвердить такую марку.
Выясним причину задержек. Касса общается с ОИСМ напрямую, минуя ОФД (хотя канал связи часто используется тот же). Если в настройках кассы неверно указан адрес сервера ИСМ или порт заблокирован системным администратором/провайдером, проверка будет виснуть.
Проанализируем ситуацию с таймаутами в 1С. Если программа отправляет команду на печать чека раньше, чем касса успела получить ответ от сервера «Честного ЗНАКа», ККТ напечатает текущий статус (который может быть еще не определен или ошибочен). Попробуем увеличить таймауты в настройках драйвера Атол внутри 1С. Стандартного времени в 5 секунд часто не хватает для прохождения цепочки «Касса -> ОФД -> ИСМ -> ОФД -> Касса».
Посмотрим на программную часть. Для корректной работы с ФФД 1.2 на кассах Атол требуются:
Важно помнить, что 1С должна быть также актуальной версии, где реализованы механизмы работы с объектом МенеджерОборудования под ФФД 1.2. Если конфигурация очень старая, она может передавать код маркировки как обычную строку, что не позволит кассе выполнить заложенный алгоритм проверки.
Иногда «М-» — это не ошибка техники, а реальный статус товара. Рассмотрим подробнее:
Рекомендуем в таких случаях проверять конкретный «проблемный» код в личном кабинете «Честного ЗНАКа» в разделе «Коды маркировки». Если там статус «В обороте» и владелец — ваша организация, значит, проблему нужно искать в цепочке связи кассы с сервером.
Рассмотрим по шагам процесс локализации ошибки:
fptr10.log). Найдем строку RequestKMResult. Если мы видим CheckingResult="False", значит, отрицательный ответ пришел именно от сервера ИСМ или ФН.prod.okp-is.crpt.ru доступен.Важный момент: Если марки не проходят выборочно (одна из десяти), скорее всего, мы имеем дело с нестабильным интернетом или дребезгом при сканировании. Если не проходят все марки — это 100% ошибка настроек (неверный адрес ОИСМ, отсутствие GS-символа или старая прошивка).
Совместными усилиями программиста 1С и системного администратора, проверяя каждый этап прохождения кода от стекла сканера до серверов маркировки, можно добиться стабильного появления заветного статуса «М+» в каждом чеке.