Почему не отправляются теги маркировки сигарет и ИНН покупателя на ККТ Штрих-М и как это исправить

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

При переходе на новые форматы фискальных документов (ФФД) и начале работы с маркированной продукцией (табак, обувь, одежда) многие компании сталкиваются с проблемой: в учетной программе 1С (например, Управление торговлей 10.3) все данные заполняются корректно, чек пробивается, однако в личном кабинете ОФД (в частности, Контур.ОФД) новые теги не отображаются. Особенно остро эта проблема стоит для тега 1162 (код товара/маркировка), а также для тегов 1227 (наименование покупателя) и 1228 (ИНН покупателя), которые стали обязательными при расчетах между организациями и индивидуальными предпринимателями.

В этой статье мы подробно разберем, почему возникает данная проблема при работе с ККТ Штрих-М, как устроено взаимодействие 1С с кассовым драйвером и какие шаги необходимо предпринять для полной отладки и гарантированной отправки всех фискальных реквизитов.

Выясняем причины проблемы: почему данные «теряются» по дороге

Для того чтобы чек корректно ушел в ОФД со всеми необходимыми тегами, должна работать вся цепочка интеграции:

  1. 1С:Предприятие формирует XML-пакет с данными чека, включая новые теги маркировки и покупателя.
  2. Внешняя компонента (ВК), загруженная в 1С, считывает этот XML, преобразует его в команды драйвера ККТ и передает их локальной службе драйвера.
  3. Драйвер ККТ принимает команды, проверяет версию протокола требований ФН и отправляет данные непосредственно в кассовый аппарат.
  4. Прошивка ККТ обрабатывает полученную команду, записывает данные в фискальный накопитель (ФН), печатает чек и отправляет его в ОФД.
  5. ОФД обрабатывает пакет данных, визуализирует его в личном кабинете и перенаправляет в информационную систему маркировки (ИС МП «Честный Знак»).

Если хотя бы одно звено в этой цепочке устарело или настроено неверно, нужные теги просто отбросятся. Проанализируем типичные узкие места для оборудования «Штрих-М».

Шаг 1. Обновление драйвера и преодоление проблемы «DLL Hell» во внешних компонентах 1С

Очень часто системные администраторы и программисты совершают классическую ошибку: устанавливают на компьютер актуальную версию драйвера Штрих-М (например, 4.14.772 или выше), но в самой программе 1С по-прежнему продолжает работать старая внешняя компонента. В результате 1С формирует XML-пакет с новыми тегами (например, ИНН покупателя), но старая библиотека DLL, используемая обработкой обслуживания, просто «не понимает» эти теги в XML и отбрасывает их еще до отправки команды в физический драйвер.

Рассмотрим, как правильно обновить компоненту в решениях на обычных формах (таких как Управление торговлей 10.3):

  1. Скачайте и установите актуальный драйвер ККТ Штрих-М (версии не ниже 4.14.772, а лучше последнюю стабильную версию ветки 4.15).
  2. Перейдите в каталог установки драйвера. Обычно файлы интеграции для 1С находятся по пути: C:\Program Files (x86)\SHTRIH-M\DrvFR 4.14\Bin\1C (или аналогичном пути вашей версии драйвера).
  3. Найдите библиотеки интеграции, такие как SMDrvFR1C22.dll или SMDrvFR1C20.dll.
  4. Вручную зарегистрируйте актуальную библиотеку в операционной системе. Для этого запустите командную строку от имени администратора и выполните команду: regsvr32 "C:\Program Files (x86)\SHTRIH-M\DrvFR 4.14\Bin\1C\SMDrvFR1C22.dll"
  5. В самой 1С зайдите в справочник «Подключаемое оборудование» (или «Обработки обслуживания торгового оборудования») и обновите макет внешней компоненты, загрузив туда новый файл .dll.
  6. Для предотвращения конфликтов версий обязательно очистите кэш внешних компонент пользователя. 1С копирует библиотеки во временные папки операционной системы. Закройте 1С и очистите содержимое папки: %localappdata%\Temp\1C

Шаг 2. Разбираем особенности передачи тега 1162 (Код товара) для сигарет

Тег 1162 имеет сложную структуру байтового массива. В отличие от ККТ АТОЛ, где код маркировки часто передается «как есть» одной строкой, драйверы Штрих-М требуют строгого соблюдения алгоритма разбора маркированной продукции перед отправкой в фискальный накопитель.

Для корректного формирования тега 1162 необходимо программно разделять код DataMatrix на составляющие. Рассмотрим этот процесс подробнее:

Если передавать неразобранную строку напрямую через стандартный XML без обновленной внешней компоненты, касса выдаст ошибку формата длины или просто проигнорирует позицию, пробив её как обычный товар без обязательного признака маркировки [М] на бумажном чеке.

Посмотрим на пример реализации разбора кода маркировки табака на встроенном языке 1С:


// Функция разбирает код маркировки табака и передает его в драйвер Штрих-М
Процедура ПередатьКодМаркировкиТабакаВККТ(ОбъектДрайвера, Знач КодМаркировки) Экспорт
    
    ДлинаКода = СтрДлина(КодМаркировки);
    
    // Стандартный код маркировки табака (сигарет) имеет длину 29 символов
    Если ДлинаКода = 29 Тогда
        // Извлекаем GTIN (со 3-го по 16-й символ включительно)
        СтрокаGTIN = Сред(КодМаркировки, 3, 14);
        
        // Извлекаем серийный номер (с 19-го по 25-й символ включительно)
        СтрокаСерии = Сред(КодМаркировки, 19, 7);
        
        // Устанавливаем параметры в свойства драйвера Штрих-М
        ОбъектДрайвера.MarkingType = 5; // Код группы "Табачная продукция"
        ОбъектДрайвера.GTIN = СтрокаGTIN;
        ОбъектДрайвера.SerialNumber = СтрокаСерии;
        
        // Вызываем метод отправки кода маркировки в ФН
        РезультатОперации = ОбъектДрайвера.FNSendItemCodeData();
        
        Если РезультатОперации <> 0 Тогда
            ВызватьИсключение "Ошибка отправки кода маркировки в ККТ: " + ОбъектДрайвера.ResultDescription;
        КонецЕсли;
    Иначе
        Сообщить("Код маркировки имеет некорректную длину и не может быть обработан.", СтатусСообщения.Внимание);
    КонецЕсли;
    
КонецПроцедуры

Шаг 3. Проверка лицензирования маркировки на ККТ Штрих-М

Даже если программный код 1С и драйвер настроены идеально, ККТ Штрих-М может игнорировать команды записи кода товара (тега 1162), если на самом кассовом аппарате отсутствует или просрочена специализированная подписка. Компания Штрих-М ввела систему внутренних лицензий для работы со специфическим функционалом.

Выясним, как проверить наличие лицензии на маркировку в кассе:

  1. Запустите утилиту «Тест драйвера ФР».
  2. Подключитесь к вашей кассе.
  3. Перейдите в левом меню в раздел «ФН», затем выберите вкладку «Лицензии».
  4. Считайте список установленных лицензий. В списке должна присутствовать действующая лицензия с названием «Маркировка» (или «Базовая маркировка»).
  5. Если лицензии нет, кассовый аппарат будет просто игнорировать команды записи маркировки, а на чеке не напечатается символ [М]. В этом случае необходимо обратиться в обслуживающий ЦТО для приобретения и ввода кода активации лицензии.

Шаг 4. Настройка передачи и печати тегов 1227 (Покупатель) и 1228 (ИНН покупателя)

Для расчетов между юридическими лицами и ИП через ККТ необходимо передавать наименование и ИНН контрагента. Часто возникает ситуация: в электронном чеке в ОФД эти данные появляются, а на бумажной ленте их нет, либо они вообще не уходят из кассы.

Проанализируем настройки ККТ через таблицы параметров Штрих-М:

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

Шаг 5. Проверка работы со стороны ОФД

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

Разберем основные нюансы работы ОФД:

Выполнив все описанные шаги — от обновления драйвера и ручной регистрации актуальной DLL-библиотеки в 1С до настройки таблиц ККТ и проверки лицензий, мы сможем гарантировать стабильную работу касс Штрих-М с маркированной продукцией и передачу всех обязательных реквизитов покупателя.

← На главную