Почему в 1С:Розница при продаже табака возникает ошибка «Код маркировки» на этапе оплаты и как это исправить?

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

Работа с маркированным товаром, особенно с табачной продукцией, требует ювелирной настройки взаимодействия между сканером, программой 1С и кассовым аппаратом (ККТ). Часто возникает ситуация, когда код DataMatrix успешно считывается в рабочее место кассира (РМК), позиция добавляется в список, но при попытке закрыть чек и принять оплату программа выдает критическую ошибку: «Ошибки маркировки Строка №1: код маркировки». В этой статье мы подробно разберем причины этой проблемы и способы ее устранения на примере 1С:Розница.

Настройка режима объединения позиций в РМК

Одной из самых распространенных и неочевидных причин возникновения ошибок маркировки в ранних релизах 1С:Розница (версии 2.3.4 и смежных) является включенная опция объединения одинаковых товаров в одну строку. Проанализируем, почему это происходит: когда вы продаете несколько пачек сигарет одного наименования, программа пытается сгруппировать их. Однако для маркированного товара каждая единица обладает уникальным кодом. При включенном объединении механизм передачи данных в фискальный накопитель может давать сбой.

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

  1. Перейдем в раздел Администрирование — Продажи.
  2. Найдем настройки РМК (Рабочее место кассира).
  3. В настройках профиля РМК необходимо найти и снять флажок с пункта «Объединять позиции с одинаковым товаром».
  4. Сохраним настройки и перезапустим сеанс кассира.

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

Проблема передачи спецсимвола GS (Group Separator)

Выясним техническую причину, по которой 1С может «видеть» код, но считать его некорректным. Код маркировки табака содержит невидимый управляющий символ GS (ASCII 29). Если сканер штрихкодов настроен в режиме эмуляции клавиатуры, он может игнорировать этот символ или заменять его на пробел/другой знак. В результате 1С получает строку, которая не проходит внутреннюю валидацию по регулярному выражению.

Для решения этой проблемы выполним следующие шаги:

  1. Переведем сканер в режим Native POS (эмуляция COM-порта). Это позволит передавать данные напрямую в драйвер 1С без искажений.
  2. Проверим настройки драйвера в 1С:Розница (Подключаемое оборудование). Убедимся, что тест устройства показывает наличие символов-разделителей.
  3. Если используется режим клавиатуры, необходимо настроить в сканере префикс #29 или использовать специализированные драйверы, умеющие интерпретировать GS1-данные.

Особенности работы с блоками и разагрегация

Проанализируем ситуацию, когда ошибка возникает при продаже блоков. В системе «Честный ЗНАК» предусмотрена иерархия: код блока содержит информацию о кодах вложенных пачек. Рассмотрим важные правила работы с такими кодами:

Во-первых, если вы сканируете код блока, 1С должна уметь распознать его как упаковку. Для этого в карточке номенклатуры должна быть настроена соответствующая единица измерения (упаковка) с указанием коэффициента (например, 10 для стандартного блока).

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

Посмотрим на пример логики проверки цены, которая также может блокировать оплату:


// Пример логики проверки МРЦ (Максимальной розничной цены) в коде DataMatrix
Если ПолученнаяЦенаИзМарки <> ЦенаВЧеке Тогда
    Предупреждение("Цена продажи отличается от МРЦ, зашитой в коде маркировки!");
    Отказ = Истина;
КонецЕсли;

Убедимся, что цена в чеке соответствует МРЦ, так как несоответствие цен также может вызывать общую ошибку маркировки при попытке пробития чека.

Исправление ошибок в распределенных информационных базах (РИБ)

Разберем специфическую проблему, упомянутую пользователями: ошибка «Справочник.МаршрутыПодписания.ОднойДоступнойПодписью. Предопределенный элемент отсутствует в данных». Эта проблема часто возникает в магазинах, работающих через РИБ, при включении функционала маркировки и ЭДО.

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

Для исправления выполним алгоритм:

  1. Убедимся, что релизы конфигурации в «Центре» и «Узле» полностью идентичны.
  2. В периферийной базе воспользуемся обработкой ЗаполнениеПредопределенныхДанных.
  3. Проанализируем состояние справочника МаршрутыПодписания. Если он пуст, необходимо инициировать полную синхронизацию данных для передачи системных настроек.

Переход на ФФД 1.2 и проверка прошивки ККТ

Если все настройки в 1С выполнены верно, но ошибка сохраняется, проанализируем состояние кассового оборудования. На сегодняшний день торговля табаком требует поддержки ФФД 1.2.

Необходимо убедиться в следующем:

  1. Фискальный накопитель поддерживает версию 1.2 (ФН-М).
  2. Прошивка ККТ обновлена до актуальной версии, поддерживающей работу с кодами маркировки и отправку запросов о статусе кода в ОИС МП (операция ЗапросОКодеМаркировки).
  3. В драйвере ККТ включена проверка кодов маркировки средствами самого аппарата.

Помните, что с введением ФФД 1.2 касса обязана получить от сервера «Честного ЗНАКа» подтверждение корректности кода до того, как чек будет финализирован. Если связь с сервером нестабильна или код имеет статус «Не нанесен» или «Выведен из оборота», оплата будет заблокирована на уровне драйвера ККТ с выдачей ошибки в интерфейс 1С.

← На главную