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

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

При переходе на обязательную маркировку товаров легкой промышленности, одежды, обуви и других товарных групп пользователи часто сталкиваются с неприятной технической проблемой. В режиме Рабочего места кассира (РМК) 1С:Розница успешно запрашивает код маркировки, сканер без ошибок считывает DataMatrix, но на напечатанном фискальном чеке полностью отсутствует признак [М] (или [М+] для ФФД 1.2), а в личном кабинете ОФД и Честного Знака выбытие товара не фиксируется. При этом проверка через тест драйвера ККТ показывает, что сама онлайн-касса исправна и принудительно пробивает чеки с маркировкой корректно.

В этой статье мы подробно проанализируем ситуацию, выясним причину такого поведения системы и разберем по шагам несколько эффективных решений данной проблемы.

Почему касса печатает [М] через тест драйвера, но игнорирует её при отправке чека из 1С?

Для начала разберем механизм взаимодействия учетной системы 1С с фискальным регистратором. Когда кассир нажимает кнопку «Оплатить» в РМК, программа 1С не отправляет на кассу команду «напечатай марку». Вместо этого встроенная Библиотека подключаемого оборудования (БПО) формирует структурированный XML-пакет чека (так называемый CheckPackage), внутри которого для каждой маркированной позиции должен присутствовать специальный XML-узел GoodCodeData (содержащий код маркировки в шестнадцатеричном представлении Hex или Base64).

Если этот узел сформирован и передан в драйвер ККТ, касса понимает, что позиция является маркированной, обрабатывает тег 1162 (или теги ФФД 1.2, такие как 1163) и выводит на печать символ [М]. Если же 1С при формировании XML-пакета считает товар обычной продукцией, узел GoodCodeData вообще не генерируется. Касса принимает товар как стандартный, печатает обычный чек, и ОФД не получает никаких данных для Честного Знака.

Таким образом, корень проблемы всегда кроется в том, что 1С на этапе формирования XML-чека «теряет» признак маркировки товара. Рассмотрим подробнее основные причины этого сбоя и способы их устранения.

Решение 1. Исправление некорректного заполнения «Вида номенклатуры»

Проанализируем ситуацию, которая чаще всего встречается в базах, перенесенных из старых релизов или обновленных вручную. Часто владельцы магазинов пытаются настроить маркировку для сотен товаров с помощью групповой обработки, напрямую меняя реквизит «Особенность учета» в карточке номенклатуры. Это критическая ошибка.

Алгоритм БПО в 1С проверяет необходимость выгрузки марки по следующей строгой цепочке:

  1. Анализируется ссылка на номенклатуру в табличной части чека.
  2. Программа обращается к справочнику ВидыНоменклатуры, закрепленному за данным товаром.
  3. Считывается реквизит ТипНоменклатуры и связанная с ним ОсобенностьУчета.

Если вы изменили особенность учета в самой карточке товара, но справочник ВидыНоменклатуры остался настроен как для обычного (немаркируемого) товара, 1С проигнорирует марку при генерации XML-пакета чека. В РМК марка запрашиваться будет, но в кассу не уйдет.

Выясним причину успешной работы в «новой чистой базе»: там карточки товаров создавались вручную с нуля, с правильным изначально настроенным видом номенклатуры, поэтому логика программы не нарушалась.

Чтобы исправить это в рабочей базе, выполним следующие шаги:

  1. Перейдем в раздел НСИ -> Виды номенклатуры.
  2. Создадим новый вид номенклатуры (например, «Одежда маркированная»).
  3. Укажем тип номенклатуры «Товар», а в поле «Особенность учета» выберем соответствующую категорию маркируемой продукции (например, «Товары легкой промышленности и одежда»).
  4. Откроем обработку «Групповое изменение реквизитов» (НСИ и администрирование -> Обслуживание -> Корректировка данных).
  5. Выберем объект «Номенклатура», настроим отбор по нужным товарам и заменим реквизит ВидНоменклатуры на созданный нами ранее маркируемый вид.
  6. В дополнительных настройках групповой обработки обязательно включим флажки «Показывать служебные реквизиты» и «Режим разработчика», чтобы система корректно перезаписала все подчиненные регистры.

Для понимания того, как БПО проверяет статус маркировки на уровне кода, посмотрим на пример функции:


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

Решение 2. Проверка признака предмета расчета в виде номенклатуры

Еще один важный параметр, влияющий на корректность формирования фискальных признаков — это реквизит ПризнакПредметаРасчета в справочнике ВидыНоменклатуры.

Убедимся, что для маркируемого вида номенклатуры данный реквизит заполнен корректно:

Решение 3. Обновление интеграционной библиотеки БПО и переподключение оборудования

Как показывает практика интеграции ККТ Атол с платформой 1С, простое обновление физического драйвера Атол (например, до версии 10.8.0.0) на компьютере не гарантирует, что 1С начнет использовать новые функции работы с маркировкой. Внутри конфигурации 1С зашита собственная компонента интеграции БПО.

Если при обновлении драйвера оборудование не было пересоздано в интерфейсе 1С, программа может продолжать использовать устаревшую библиотеку (например, версию 2.5 вместо актуальной 3.2), которая физически не умеет передавать тег 1162 по новым протоколам ФФД 1.2.

Рассмотрим по шагам процедуру правильного обновления интеграционной компоненты:

  1. Перейдем в раздел Администрирование -> Подключаемое оборудование.
  2. Найдем нашу ККТ и откроем карточку настройки.
  3. Запишем все настройки связи (порт, IP-адрес, скорость) и удалим данное устройство из списка подключаемого оборудования.
  4. Перейдем в список драйверов оборудования и убедимся, что загружена актуальная версия интеграционной библиотеки от Атол (версии 10.x с поддержкой БПО 3.x).
  5. Создадим новое подключение ККТ. При создании выберем только что добавленный/обновленный драйвер. Программа принудительно инициализирует новую интеграционную библиотеку.
  6. Проведем тест устройства и выполним тестовую продажу маркированного товара.

Решение 4. Настройка эмуляции сканера штрихкодов

Иногда проблема кроется на этапе первоначального считывания DataMatrix. Для корректной расшифровки структуры марки программе 1С необходим спецсимвол разделения групп данных — GS (Group Separator, ASCII 29). Он разделяет код GTIN, серийный номер и ключи проверки в единой строке марки.

Если сканер штрихкодов на кассе работает в режиме эмуляции клавиатуры (Keyboard Wedge), он физически не может передать этот непечатный символ в буфер обмена 1С. Программа визуально считывает марку в форму РМК, но считает её структуру поврежденной (так как отсутствует разделитель GS). В результате БПО принимает решение не включать поврежденный код в структуру XML-чека, чтобы избежать аппаратной ошибки ККТ при пробитии чека.

Проанализируем шаги для исправления работы сканера:

  1. Переведем сканер в режим эмуляции COM-порта (USB-VCOM). Для этого необходимо считать специальный управляющий штрихкод из инструкции к вашей модели сканера.
  2. В 1С перейдем в «Подключаемое оборудование», добавим новый сканер штрихкода с драйвером «1С:Сканеры штрихкода (COM)».
  3. В настройках порта выберем виртуальный COM-порт, созданный сканером в диспетчере устройств Windows.
  4. Проверим чтение марки в тесте устройства: в начале и середине строки должны корректно определяться управляющие символы.

Выполнив последовательно указанные действия и проверив соответствие справочников видов номенклатуры реальным бизнес-процессам, мы гарантированно добьемся корректной печати символа [М] на чеках и успешной отправки данных о выбытии маркированной продукции в систему Честный Знак.

← На главную