Переход на ФФД 1.2 и внедрение маркировки молочной продукции часто вызывают сложности при доработке самописных конфигураций или использовании Библиотеки Подключаемого Оборудования (БПО). Одной из самых частых проблем является отсутствие обязательной литеры "М" (или [М+], [М-]) в печатной форме чека, а также появление ошибки драйвера "Контрольная марка не проверена".
Разберем детально, как правильно настроить формирование XML-пакета для драйвера ККТ, какие параметры кассы необходимо проверить и почему марка может не уходить в ОФД, даже если чек пробит.
Первая и самая распространенная ошибка — использование устаревших тегов или неправильное заполнение параметров маркировки. В старых версиях драйверов и ФФД 1.05 код маркировки часто передавался в теге GoodCodeData. Для ФФД 1.2 логика изменилась.
Проанализируем структуру пакета CheckPackage, который 1С передает драйверу. Для корректной работы маркировки необходимо использовать тег MarkingCode (тег 1163 в протоколе ФН), а не помещать марку внутрь данных товара.
Важные требования к передаче марки:
Пример неправильного кода, который часто вызывает ошибку (без разделителей GS внутри Base64):
"MDEwNDYwMDYwNTAxNTY1MDIxNTF4Mm1POTNTOXBs"
Пример правильного кода (с закодированным спецсимволом GS перед серийным номером и криптохвостом):
"MDEwNDYwMDYwNTAxNTY1MDIxNTF4Mm1PHTkzUzlwbA=="
Чтобы сформировать такую строку в 1С, необходимо убедиться, что ваш сканер передает символы GS (настроен в режим COM-порта) или добавлять их программно, если вы точно знаете структуру кода (что не рекомендуется, так как структура может меняться).
Примерный алгоритм формирования строки для драйвера:
// Пример схематичный, разделители зависят от конкретного типа маркировки (DataMatrix)
СтрокаСРазделителями = "01046006050156502151x2mO" + Символ(29) + "93S9pl";
MarkingCodeBase64 = Base64Строка(ПолучитьДвоичныеДанныеИзСтроки(СтрокаСРазделителями));
Кроме самого кода маркировки, драйвер ККТ требует корректного заполнения признаков предмета расчета. Если эти поля не заполнены, касса может не распознать товар как маркированный.
Проверим наличие следующих атрибутов в XML:
PaymentMethod (Признак способа расчета) — например, "Полный расчет" (значение 4).CalculationSubject (Признак предмета расчета) — для маркированного товара это критически важно. В ФФД 1.2 для товара с маркировкой должно использоваться значение 31 (или соответствующие константы драйвера).Если вы используете БПО версий 2.х или ранних 3.х, убедитесь, что библиотека корректно сопоставляет виды номенклатуры с новыми значениями CalculationSubject.
Эта ошибка возникает на ККТ АТОЛ и других фискальных регистраторах, работающих по ФФД 1.2. Она означает, что вы пытаетесь пробить чек (фискализировать его), но предварительно не выполнили процедуру проверки марки в ФН.
В ФФД 1.2 процесс продажи маркированного товара — это не одно действие, а последовательность команд:
Если в вашем коде (в самописной обработке или старой БПО) марка просто передается в СформироватьЧек без предварительных команд проверки, касса вернет ошибку "Контрольная марка не проверена".
Даже если программный код написан идеально, буква "М" может не появляться, а ошибки — возникать, если сама касса настроена неверно. Выясним одну из неочевидных причин, с которой сталкиваются многие разработчики.
В настройках регистрации ККТ (параметры, записываемые в фискальный накопитель при фискализации/перерегистрации) есть флаг "Торговля маркированными товарами".
Решение:
Бывают ситуации, когда чек печатается корректно (с буквой [М]), но в личном кабинете ОФД или в "Честном Знаке" продажа не отражается как выбытие марки. При этом в ОФД чек виден, но без признаков маркировки.
Причиной часто является отсутствие подключенной услуги "Маркировка" на стороне Оператора Фискальных Данных. В ФФД 1.2 касса отправляет не только чек, но и отдельные документы (Уведомление о реализации). Если на стороне ОФД шлюз для маркировки закрыт (не оплачен или не активирован), эти данные могут теряться или не передаваться в ЦРПТ.
Резюме по диагностике: