Нет буквы М в чеке ФФД 1.2 (молочная продукция): причины и решение ошибки "Контрольная марка не проверена"

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

Переход на ФФД 1.2 и внедрение маркировки молочной продукции часто вызывают сложности при доработке самописных конфигураций или использовании Библиотеки Подключаемого Оборудования (БПО). Одной из самых частых проблем является отсутствие обязательной литеры "М" (или [М+], [М-]) в печатной форме чека, а также появление ошибки драйвера "Контрольная марка не проверена".

Разберем детально, как правильно настроить формирование XML-пакета для драйвера ККТ, какие параметры кассы необходимо проверить и почему марка может не уходить в ОФД, даже если чек пробит.

1. Правильная структура XML чека для ФФД 1.2

Первая и самая распространенная ошибка — использование устаревших тегов или неправильное заполнение параметров маркировки. В старых версиях драйверов и ФФД 1.05 код маркировки часто передавался в теге GoodCodeData. Для ФФД 1.2 логика изменилась.

Проанализируем структуру пакета CheckPackage, который 1С передает драйверу. Для корректной работы маркировки необходимо использовать тег MarkingCode (тег 1163 в протоколе ФН), а не помещать марку внутрь данных товара.

Важные требования к передаче марки:

  1. Код маркировки должен передаваться полностью.
  2. Строка должна быть закодирована в Base64.
  3. В строке обязательно должны присутствовать разделители групп данных (символ GS, ASCII 29).

Пример неправильного кода, который часто вызывает ошибку (без разделителей GS внутри Base64):

"MDEwNDYwMDYwNTAxNTY1MDIxNTF4Mm1POTNTOXBs"

Пример правильного кода (с закодированным спецсимволом GS перед серийным номером и криптохвостом):

"MDEwNDYwMDYwNTAxNTY1MDIxNTF4Mm1PHTkzUzlwbA=="

Чтобы сформировать такую строку в 1С, необходимо убедиться, что ваш сканер передает символы GS (настроен в режим COM-порта) или добавлять их программно, если вы точно знаете структуру кода (что не рекомендуется, так как структура может меняться).

Примерный алгоритм формирования строки для драйвера:


// Пример схематичный, разделители зависят от конкретного типа маркировки (DataMatrix)
СтрокаСРазделителями = "01046006050156502151x2mO" + Символ(29) + "93S9pl";
MarkingCodeBase64 = Base64Строка(ПолучитьДвоичныеДанныеИзСтроки(СтрокаСРазделителями));

2. Обязательные параметры позиции чека

Кроме самого кода маркировки, драйвер ККТ требует корректного заполнения признаков предмета расчета. Если эти поля не заполнены, касса может не распознать товар как маркированный.

Проверим наличие следующих атрибутов в XML:

Если вы используете БПО версий 2.х или ранних 3.х, убедитесь, что библиотека корректно сопоставляет виды номенклатуры с новыми значениями CalculationSubject.

3. Ошибка "Контрольная марка не проверена" (420)

Эта ошибка возникает на ККТ АТОЛ и других фискальных регистраторах, работающих по ФФД 1.2. Она означает, что вы пытаетесь пробить чек (фискализировать его), но предварительно не выполнили процедуру проверки марки в ФН.

В ФФД 1.2 процесс продажи маркированного товара — это не одно действие, а последовательность команд:

  1. Запрос КМ (RequestKM): Касса отправляет марку в ФН для проверки.
  2. Получение результата (GetKMResult): Программа должна дождаться ответа от ФН (локальная проверка) и, при наличии связи, от «Честного Знака» (онлайн проверка).
  3. Подтверждение КМ (ConfirmKM): Программа подтверждает, что марка валидна и будет добавлена в чек.
  4. Фискализация чека: Только после подтверждения можно вызывать метод формирования чека.

Если в вашем коде (в самописной обработке или старой БПО) марка просто передается в СформироватьЧек без предварительных команд проверки, касса вернет ошибку "Контрольная марка не проверена".

4. Настройки регистрации ККТ

Даже если программный код написан идеально, буква "М" может не появляться, а ошибки — возникать, если сама касса настроена неверно. Выясним одну из неочевидных причин, с которой сталкиваются многие разработчики.

В настройках регистрации ККТ (параметры, записываемые в фискальный накопитель при фискализации/перерегистрации) есть флаг "Торговля маркированными товарами".

Решение:

  1. Подключитесь к кассе через "Тест драйвера ККТ".
  2. Проверьте параметры регистрации или распечатайте чек информации о ККТ.
  3. Если в параметрах не стоит признак торговли маркировкой, касса будет игнорировать сложные процессы проверки КМ.
  4. Необходимо выполнить перерегистрацию ККТ (без замены ФН), установив эту галочку.

5. Проблема с ОФД: есть "М" на чеке, но нет в личном кабинете

Бывают ситуации, когда чек печатается корректно (с буквой [М]), но в личном кабинете ОФД или в "Честном Знаке" продажа не отражается как выбытие марки. При этом в ОФД чек виден, но без признаков маркировки.

Причиной часто является отсутствие подключенной услуги "Маркировка" на стороне Оператора Фискальных Данных. В ФФД 1.2 касса отправляет не только чек, но и отдельные документы (Уведомление о реализации). Если на стороне ОФД шлюз для маркировки закрыт (не оплачен или не активирован), эти данные могут теряться или не передаваться в ЦРПТ.

Резюме по диагностике:

← На главную