Почему в чеках 1С:Розница не печатается признак маркировки [М] и как это исправить?

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

В процессе работы с маркированной продукцией (одежда, обувь, парфюмерия и др.) пользователи часто сталкиваются с ситуацией, когда в печатной форме чека отсутствует обязательный символ [М], а в Личный кабинет ОФД не передается тег 1162. Это является серьезным нарушением правил торговли маркированными товарами. Рассмотрим подробно, как диагностировать и решить эту проблему в конфигурации 1С:Розница 2.3.

Первичная диагностика: анализ XML-структуры чека

Прежде чем приступать к правке кода или настроек, нам необходимо выяснить, на каком этапе «теряются» данные: в самой программе 1С или уже на уровне драйвера ККТ. Для этого проанализируем XML-пакет, который 1С отправляет на кассу. Выполним следующие шаги:

  1. Включим режим отладки или воспользуемся журналом регистрации, чтобы перехватить XML-данные, передаваемые драйверу.
  2. Проанализируем блок GoodCodeData. Если в нем отсутствует атрибут MarkingCode, значит, 1С не передает код маркировки в подключаемое оборудование.
  3. Если же в XML код присутствует, но в чеке [М] нет — проблему нужно искать в прошивке ККТ, версии драйвера или настройках таблиц кассы.

Как показывает практика, если в XML-чека отсутствует строка с кодом маркировки, то проблема кроется в логике определения типа продукции внутри конфигурации.

Решение 1: Программное исправление через расширение

Одной из наиболее частых причин является то, что в модуле интеграции с ИС МП (Информационной системой маркировки продукции) не прописаны новые группы товаров. В частности, это касается легкой промышленности, упакованной воды или молочной продукции. Разберем ситуацию на примере модуля ИнтеграцияИСКлиентСервер.

Выясним причину: процедура ТипМаркировкиККТПоВидуПродукции может не возвращать правильный тип для новых категорий. Чтобы не изменять типовую конфигурацию, создадим расширение и воспользуемся аннотацией &Вместо для указанной функции.

Рассмотрим пример кода, который принудительно возвращает корректный тип маркировки для ККТ, если типовой алгоритм не справился:


&Вместо("ТипМаркировкиККТПоВидуПродукции")
Функция ИС_ТипМаркировкиККТПоВидуПродукции(ТипМаркировкиККТИлиВидПродукции)
    Результат = ПродолжитьВызов(ТипМаркировкиККТИлиВидПродукции);
    
    // Если типовой механизм вернул Неопределено, сопоставляем виды продукции вручную
    Если Результат = Неопределено Тогда
        Если ТипМаркировкиККТИлиВидПродукции = ПредопределенноеЗначение("Перечисление.ВидыПродукцииИС.ЛегкаяПромышленность") Тогда
            Возврат ПредопределенноеЗначение("Перечисление.ТипыМаркировкиККТ.ОбувныеТовары");
        ИначеЕсли ТипМаркировкиККТИлиВидПродукции = ПредопределенноеЗначение("Перечисление.ВидыПродукцииИС.УпакованнаяВода") Тогда
            Возврат ПредопределенноеЗначение("Перечисление.ТипыМаркировкиККТ.ОбувныеТовары");
        ИначеЕсли ТипМаркировкиККТИлиВидПродукции = ПредопределенноеЗначение("Перечисление.ВидыПродукцииИС.МолочнаяПродукция") Тогда
            Возврат ПредопределенноеЗначение("Перечисление.ТипыМаркировкиККТ.ОбувныеТовары");
        ИначеЕсли ТипМаркировкиККТИлиВидПродукции = ПредопределенноеЗначение("Перечисление.ВидыПродукцииИС.Велосипеды") Тогда
            Возврат ПредопределенноеЗначение("Перечисление.ТипыМаркировкиККТ.ОбувныеТовары");
        КонецЕсли;
    КонецЕсли;
    
    Возврат Результат;
КонецФункции

Обратим внимание, что во многих случаях 1С использует значение ОбувныеТовары как универсальный идентификатор для большинства групп маркировки при передаче в драйвер ККТ (в контексте ФФД 1.05). Это позволяет кассе корректно сформировать тег 1162.

Решение 2: Настройка признака предмета расчета

Если программный код работает корректно, но признак [М] всё равно не появляется, проанализируем настройки справочников. В 1С:Розница важную роль играет справочник Признаки предметов расчета. Для маркируемых товаров должен быть правильно заполнен соответствующий элемент.

Выполним проверку по шагам:

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

Важно помнить, что тег 1212 (Признак предмета расчета) тесно связан с тегом 1162. Если 1С отправляет на кассу признак «Товар», касса может проигнорировать переданный код маркировки.

Влияние ФФД 1.2 и версии драйвера

Проанализируем ситуацию с точки зрения законодательных изменений. При переходе на ФФД 1.2 символ [М] в чеке дополняется результатами проверки:

Если вы используете ККТ АТОЛ на платформе 5.0 и драйвер версии 10.x, обязательно убедитесь, что в настройках оборудования в 1С выбран корректный способ обработки кодов маркировки. В параметрах драйвера (через тест драйвера) проверьте значение CisCheckMode. Для ФФД 1.2 касса должна сама выполнять запрос в ИС МП.

Также рекомендуем обновить компоненту AddIn.Atol_KKT_10. Часто бывает, что при обновлении драйвера в системе остаются старые версии библиотек в папке AppData пользователя. Полная очистка кэша и переустановка компоненты из актуальной поставки 1С часто решают проблему «невидимых» кодов маркировки.

Заключение

Подводя итог, если вы столкнулись с отсутствием признака [М], проверьте цепочку данных в следующем порядке: Карточка номенклатуры -> Вид номенклатуры -> Признак предмета расчета -> Логика формирования XML в 1С -> Параметры драйвера ККТ. В большинстве случаев проблема решается либо обновлением расширения для поддержки новых групп товаров, либо заполнением типа признака в справочнике признаков предмета расчета.

← На главную