При переходе на обязательную маркировку товаров легкой промышленности, одежды, обуви и других товарных групп пользователи часто сталкиваются с неприятной технической проблемой. В режиме Рабочего места кассира (РМК) 1С:Розница успешно запрашивает код маркировки, сканер без ошибок считывает DataMatrix, но на напечатанном фискальном чеке полностью отсутствует признак [М] (или [М+] для ФФД 1.2), а в личном кабинете ОФД и Честного Знака выбытие товара не фиксируется. При этом проверка через тест драйвера ККТ показывает, что сама онлайн-касса исправна и принудительно пробивает чеки с маркировкой корректно.
В этой статье мы подробно проанализируем ситуацию, выясним причину такого поведения системы и разберем по шагам несколько эффективных решений данной проблемы.
Для начала разберем механизм взаимодействия учетной системы 1С с фискальным регистратором. Когда кассир нажимает кнопку «Оплатить» в РМК, программа 1С не отправляет на кассу команду «напечатай марку». Вместо этого встроенная Библиотека подключаемого оборудования (БПО) формирует структурированный XML-пакет чека (так называемый CheckPackage), внутри которого для каждой маркированной позиции должен присутствовать специальный XML-узел GoodCodeData (содержащий код маркировки в шестнадцатеричном представлении Hex или Base64).
Если этот узел сформирован и передан в драйвер ККТ, касса понимает, что позиция является маркированной, обрабатывает тег 1162 (или теги ФФД 1.2, такие как 1163) и выводит на печать символ [М]. Если же 1С при формировании XML-пакета считает товар обычной продукцией, узел GoodCodeData вообще не генерируется. Касса принимает товар как стандартный, печатает обычный чек, и ОФД не получает никаких данных для Честного Знака.
Таким образом, корень проблемы всегда кроется в том, что 1С на этапе формирования XML-чека «теряет» признак маркировки товара. Рассмотрим подробнее основные причины этого сбоя и способы их устранения.
Проанализируем ситуацию, которая чаще всего встречается в базах, перенесенных из старых релизов или обновленных вручную. Часто владельцы магазинов пытаются настроить маркировку для сотен товаров с помощью групповой обработки, напрямую меняя реквизит «Особенность учета» в карточке номенклатуры. Это критическая ошибка.
Алгоритм БПО в 1С проверяет необходимость выгрузки марки по следующей строгой цепочке:
ВидыНоменклатуры, закрепленному за данным товаром.ТипНоменклатуры и связанная с ним ОсобенностьУчета.Если вы изменили особенность учета в самой карточке товара, но справочник ВидыНоменклатуры остался настроен как для обычного (немаркируемого) товара, 1С проигнорирует марку при генерации XML-пакета чека. В РМК марка запрашиваться будет, но в кассу не уйдет.
Выясним причину успешной работы в «новой чистой базе»: там карточки товаров создавались вручную с нуля, с правильным изначально настроенным видом номенклатуры, поэтому логика программы не нарушалась.
Чтобы исправить это в рабочей базе, выполним следующие шаги:
ВидНоменклатуры на созданный нами ранее маркируемый вид.Для понимания того, как БПО проверяет статус маркировки на уровне кода, посмотрим на пример функции:
Функция ТоварТребуетМаркировки(НоменклатураСсылка) Экспорт
Если НЕ ЗначениеЗаполнено(НоменклатураСсылка) Тогда
Возврат Ложь;
КонецЕсли;
ВидНоменклатуры = НоменклатураСсылка.ВидНоменклатуры;
Если НЕ ЗначениеЗаполнено(ВидНоменклатуры) Тогда
Возврат Ложь;
КонецЕсли;
// БПО проверяет настройки именно в Виде Номенклатуры
ОсобенностьУчета = ВидНоменклатуры.ОсобенностьУчета;
Если ОсобенностьУчета = ПредопределенноеЗначение("Перечисление.ОсобенностиУчетаНоменклатуры.ТоварыЛегкойПромышленностиИОдежда") Тогда
Возврат Истина;
КонецЕсли;
Возврат Ложь;
КонецФункции
Еще один важный параметр, влияющий на корректность формирования фискальных признаков — это реквизит ПризнакПредметаРасчета в справочнике ВидыНоменклатуры.
Убедимся, что для маркируемого вида номенклатуры данный реквизит заполнен корректно:
Как показывает практика интеграции ККТ Атол с платформой 1С, простое обновление физического драйвера Атол (например, до версии 10.8.0.0) на компьютере не гарантирует, что 1С начнет использовать новые функции работы с маркировкой. Внутри конфигурации 1С зашита собственная компонента интеграции БПО.
Если при обновлении драйвера оборудование не было пересоздано в интерфейсе 1С, программа может продолжать использовать устаревшую библиотеку (например, версию 2.5 вместо актуальной 3.2), которая физически не умеет передавать тег 1162 по новым протоколам ФФД 1.2.
Рассмотрим по шагам процедуру правильного обновления интеграционной компоненты:
Иногда проблема кроется на этапе первоначального считывания DataMatrix. Для корректной расшифровки структуры марки программе 1С необходим спецсимвол разделения групп данных — GS (Group Separator, ASCII 29). Он разделяет код GTIN, серийный номер и ключи проверки в единой строке марки.
Если сканер штрихкодов на кассе работает в режиме эмуляции клавиатуры (Keyboard Wedge), он физически не может передать этот непечатный символ в буфер обмена 1С. Программа визуально считывает марку в форму РМК, но считает её структуру поврежденной (так как отсутствует разделитель GS). В результате БПО принимает решение не включать поврежденный код в структуру XML-чека, чтобы избежать аппаратной ошибки ККТ при пробитии чека.
Проанализируем шаги для исправления работы сканера:
Выполнив последовательно указанные действия и проверив соответствие справочников видов номенклатуры реальным бизнес-процессам, мы гарантированно добьемся корректной печати символа [М] на чеках и успешной отправки данных о выбытии маркированной продукции в систему Честный Знак.