При переходе на новые форматы фискальных документов (ФФД) и начале работы с маркированной продукцией (табак, обувь, одежда) многие компании сталкиваются с проблемой: в учетной программе 1С (например, Управление торговлей 10.3) все данные заполняются корректно, чек пробивается, однако в личном кабинете ОФД (в частности, Контур.ОФД) новые теги не отображаются. Особенно остро эта проблема стоит для тега 1162 (код товара/маркировка), а также для тегов 1227 (наименование покупателя) и 1228 (ИНН покупателя), которые стали обязательными при расчетах между организациями и индивидуальными предпринимателями.
В этой статье мы подробно разберем, почему возникает данная проблема при работе с ККТ Штрих-М, как устроено взаимодействие 1С с кассовым драйвером и какие шаги необходимо предпринять для полной отладки и гарантированной отправки всех фискальных реквизитов.
Для того чтобы чек корректно ушел в ОФД со всеми необходимыми тегами, должна работать вся цепочка интеграции:
Если хотя бы одно звено в этой цепочке устарело или настроено неверно, нужные теги просто отбросятся. Проанализируем типичные узкие места для оборудования «Штрих-М».
Очень часто системные администраторы и программисты совершают классическую ошибку: устанавливают на компьютер актуальную версию драйвера Штрих-М (например, 4.14.772 или выше), но в самой программе 1С по-прежнему продолжает работать старая внешняя компонента. В результате 1С формирует XML-пакет с новыми тегами (например, ИНН покупателя), но старая библиотека DLL, используемая обработкой обслуживания, просто «не понимает» эти теги в XML и отбрасывает их еще до отправки команды в физический драйвер.
Рассмотрим, как правильно обновить компоненту в решениях на обычных формах (таких как Управление торговлей 10.3):
C:\Program Files (x86)\SHTRIH-M\DrvFR 4.14\Bin\1C (или аналогичном пути вашей версии драйвера).SMDrvFR1C22.dll или SMDrvFR1C20.dll.regsvr32 "C:\Program Files (x86)\SHTRIH-M\DrvFR 4.14\Bin\1C\SMDrvFR1C22.dll"
.dll.%localappdata%\Temp\1C
Тег 1162 имеет сложную структуру байтового массива. В отличие от ККТ АТОЛ, где код маркировки часто передается «как есть» одной строкой, драйверы Штрих-М требуют строгого соблюдения алгоритма разбора маркированной продукции перед отправкой в фискальный накопитель.
Для корректного формирования тега 1162 необходимо программно разделять код DataMatrix на составляющие. Рассмотрим этот процесс подробнее:
MarkingType). Для табачной продукции это значение всегда равно 5.GTIN и SerialNumber вызывается специализированный метод драйвера FNSendItemCodeData().Если передавать неразобранную строку напрямую через стандартный XML без обновленной внешней компоненты, касса выдаст ошибку формата длины или просто проигнорирует позицию, пробив её как обычный товар без обязательного признака маркировки [М] на бумажном чеке.
Посмотрим на пример реализации разбора кода маркировки табака на встроенном языке 1С:
// Функция разбирает код маркировки табака и передает его в драйвер Штрих-М
Процедура ПередатьКодМаркировкиТабакаВККТ(ОбъектДрайвера, Знач КодМаркировки) Экспорт
ДлинаКода = СтрДлина(КодМаркировки);
// Стандартный код маркировки табака (сигарет) имеет длину 29 символов
Если ДлинаКода = 29 Тогда
// Извлекаем GTIN (со 3-го по 16-й символ включительно)
СтрокаGTIN = Сред(КодМаркировки, 3, 14);
// Извлекаем серийный номер (с 19-го по 25-й символ включительно)
СтрокаСерии = Сред(КодМаркировки, 19, 7);
// Устанавливаем параметры в свойства драйвера Штрих-М
ОбъектДрайвера.MarkingType = 5; // Код группы "Табачная продукция"
ОбъектДрайвера.GTIN = СтрокаGTIN;
ОбъектДрайвера.SerialNumber = СтрокаСерии;
// Вызываем метод отправки кода маркировки в ФН
РезультатОперации = ОбъектДрайвера.FNSendItemCodeData();
Если РезультатОперации <> 0 Тогда
ВызватьИсключение "Ошибка отправки кода маркировки в ККТ: " + ОбъектДрайвера.ResultDescription;
КонецЕсли;
Иначе
Сообщить("Код маркировки имеет некорректную длину и не может быть обработан.", СтатусСообщения.Внимание);
КонецЕсли;
КонецПроцедуры
Даже если программный код 1С и драйвер настроены идеально, ККТ Штрих-М может игнорировать команды записи кода товара (тега 1162), если на самом кассовом аппарате отсутствует или просрочена специализированная подписка. Компания Штрих-М ввела систему внутренних лицензий для работы со специфическим функционалом.
Выясним, как проверить наличие лицензии на маркировку в кассе:
Для расчетов между юридическими лицами и ИП через ККТ необходимо передавать наименование и ИНН контрагента. Часто возникает ситуация: в электронном чеке в ОФД эти данные появляются, а на бумажной ленте их нет, либо они вообще не уходят из кассы.
Проанализируем настройки ККТ через таблицы параметров Штрих-М:
Если вы убедились, что драйвер обновлен, внешняя компонента актуальна, лицензии на кассе активны, но в личном кабинете ОФД новые теги все равно не отображаются, дело может быть в самом операторе фискальных данных.
Разберем основные нюансы работы ОФД:
Выполнив все описанные шаги — от обновления драйвера и ручной регистрации актуальной DLL-библиотеки в 1С до настройки таблиц ККТ и проверки лицензий, мы сможем гарантировать стабильную работу касс Штрих-М с маркированной продукцией и передачу всех обязательных реквизитов покупателя.