Продажа маркированной продукции, в частности табачных изделий, требует от технического специалиста глубокого понимания принципов работы фискального накопителя и драйверов ККТ. С момента введения обязательной маркировки в 2019 году правила существенно эволюционировали, пройдя путь от простой передачи тега 1162 до полноценного онлайн-взаимодействия с системой «Честный ЗНАК» по протоколу ФФД 1.2. В данной статье мы подробно разберем, как реализовать поддержку маркировки на кассах Штрих-М, начиная с базовых алгоритмов и заканчивая современными требованиями.
Разберем ситуацию, актуальную для первоначального этапа внедрения маркировки. Основная задача программиста заключалась в корректной передаче реквизита Код товарной номенклатуры (тег 1162). Этот тег служит для идентификации экземпляра товара в системе мониторинга.
Проанализируем техническую составляющую: для касс Штрих-М запись этого тега выполняется путем формирования специальной структуры данных. В отличие от простых текстовых реквизитов, тег 1162 передается в виде байтового массива (hex-строки). Выясним, из чего состоит этот код:
Рассмотрим, как это выглядит в коде при работе через драйвер. Нам необходимо собрать последовательность, включающую тип, длину и само значение. Для Штрих-М это реализуется через методы записи атрибутов или специализированные команды в составе структуры чека.
Важной особенностью, которую мы должны учитывать при разработке алгоритма печати чека, является ограничение реквизита количество предмета расчета (тег 1023). Согласно законодательству (ФЗ-54 и приказы ФНС), если в составе предмета расчета передается код идентификации (маркировка), то количество товара в этой строке обязано быть равным единице.
Посмотрим на практический пример. Если покупатель приобретает 5 пачек сигарет, мы не можем пробить их одной строкой с количеством «5». Проанализируем правильный алгоритм:
1162 для данного конкретного кода.1.000.В итоге в чеке будет 5 позиций с одинаковым наименованием, но разными кодами маркировки и уникальными идентификаторами в электронном чеке, уходящем в ОФД. Это приводит к значительному увеличению длины бумажного чека, но является единственным законным способом оформления продажи.
Для программиста 1С работа напрямую с драйвером Штрих-М требует понимания методов объекта AddIn.DRVFR (или актуальных версий COM/Native компонентов). Рассмотрим примерную логику передачи данных, ориентируясь на аналогичные решения (например, Атол), но с учетом специфики Штриха.
Для Штрих-М процесс выглядит следующим образом: перед закрытием каждой строки (методом Sale или FNODeliverItemPure), мы должны передать дополнительные реквизиты. В современных версиях драйвера это автоматизировано через использование таблиц параметров или специальных структур данных.
Пример логики передачи тега (условный код):
// Подготовка данных тега 1162
ДанныеМаркировки = "000559D39E7F197241424331323334"; // Пример в HEX
Драйвер.TagNumber = 1162;
Драйвер.TagType = 7; // Тип "Byte array"
Драйвер.TagValueBinary = ДанныеМаркировки;
Драйвер.WriteTag();
// Регистрация продажи строки
Драйвер.Quantity = 1;
Драйвер.Price = 150.00;
Драйвер.StringForPrinting = "Сигареты марка X";
Драйвер.Sale();
Обратим внимание, что метод WriteTag должен вызываться в контексте текущей открытой позиции. Если мы используем библиотеку подключаемого оборудования (БПО) 1С, то эти сложности скрыты внутри интеграционного компонента, и нам достаточно передать правильную структуру ТоварнаяНоменклатура в объекте ПозицияЧека.
Ситуация 2019 года была лишь началом. С 2021-2022 годов обязательным стал переход на ФФД 1.2. Это кардинально изменило технический процесс. Теперь касса не просто пассивно передает тег 1162, а выполняет активную проверку кода.
Разберем основные отличия ФФД 1.2, которые необходимо внедрить в современные системы:
1162 заменен на более сложную структуру. Появились теги 2106 (результат проверки), 2007 (код товара) и 2108 (мера количества).ЗапросКМ в фискальный накопитель (ФN-М), который связывается с сервером «Честного ЗНАКа» для валидации кода.Для работы по этой схеме на оборудовании Штрих-М мы должны выполнить следующие шаги:
Проанализируем важность настройки периферии. Для корректного чтения кодов DataMatrix на пачках сигарет требуется 2D-сканер, настроенный определенным образом. Сигаретные коды часто имеют инвертированную расцветку или очень малый размер, что требует качественной оптики.
Ключевым моментом является передача спецсимвола GS (Group Separator, ASCII 29). Этот символ разделяет группы данных внутри кода маркировки. Если ваш сканер «проглатывает» этот символ (работает в режиме эмуляции клавиатуры без настройки префикса), то ККТ не сможет корректно разобрать код, и проверка в системе маркировки завершится ошибкой.
Рекомендуем переводить сканеры в режим USB-COM (Virtual COM). В этом режиме данные передаются напрямую в порт, что исключает влияние раскладки клавиатуры и гарантирует сохранение всех служебных символов.
В современных конфигурациях 1С (УТ 11, Розница, БП 3.0) реализован мощный функционал интеграции с ИС МП (Честный ЗНАК). Рассмотрим порядок действий в программе:
Тип номенклатуры — Маркируемая табачная продукция.Реализация или в Рабочем месте кассира (РМК) программа сама предложит считать код маркировки.Важный совет: Если вы сталкиваетесь с ошибками при печати чека, первым делом проверьте версию драйвера ККТ и версию БПО в вашей конфигурации. Для корректной работы с маркировкой они должны быть актуальными (выпущенными не ранее середины 2022 года).
Мы рассмотрели путь реализации маркировки на кассах Штрих-М от простых манипуляций с тегом 1162 до современных требований ФФД 1.2. Подытожим: для успешной работы необходимо обеспечить поштучное дробление строк в чеке, использовать специализированные методы драйвера для передачи кодов идентификации и следить за актуальностью прошивки ККТ и версий программного обеспечения 1С. Совместная работа правильно настроенного сканера, актуального драйвера и обновленной конфигурации позволит избежать штрафов и обеспечит стабильную торговлю маркированными товарами.