При интеграции торгового оборудования и программных решений на базе 1С с системой маркировки «Честный Знак» разработчики часто сталкиваются с необходимостью ручного формирования низкоуровневых тегов для кассовых аппаратов (ККТ). Одним из таких сложных реквизитов является тег 1162 («Код товарной номенклатуры»), формат передачи которого зависит от конкретной товарной группы.
В этой статье мы подробно разберем, какой код типа маркировки необходимо использовать для парфюмерной продукции (духов, одеколонов, туалетной воды), проанализируем структуру кодирования данных для ФФД 1.05 и 1.1, а также рассмотрим, как изменился этот процесс с переходом на современный формат ФФД 1.2.
Для различных товарных групп на ранних этапах внедрения маркировки создавались уникальные коды типов. Например, для табачной продукции долгое время использовался код 00 05 (в шестнадцатеричном формате HEX). Однако для парфюмерии, обуви, товаров легкой промышленности и последующих товарных групп ФНС РФ совместно с оператором ЦРПТ перешли на универсальный тип маркировки.
Для парфюмерной продукции кодом типа маркировки является значение 44 4D (в HEX-представлении), что в кодировке ASCII соответствует символам DM (сокр. от Data Matrix).
В настоящее время этот код стал фактически стандартным и универсальным для большинства товарных групп. Различия между конкретными товарами на стороне фискального накопителя и серверов маркировки определяются уже по структуре самого кода (в частности, по GTIN и серийному номеру), а не только по типу маркировки.
Если ваша информационная система все еще работает по старым форматам фискальных данных (ФФД 1.05 или 1.1), вам необходимо вручную формировать байтовый массив для передачи в ККТ через драйвер (например, АТОЛ или Штрих-М). Рассмотрим структуру этого массива для парфюмерии:
44 4D.Важное отличие парфюмерии от табачной продукции заключается именно в длине серийного номера: у пачки сигарет он составляет 7 символов, а у парфюмерии — 13 символов. Соответственно, общая длина полезной нагрузки в КТН для парфюмерии составляет 21 байт (2 байта типа + 6 байт GTIN + 13 байт серийного номера).
Давайте разберем по шагам конкретный пример формирования байтовой последовательности для парфюмерного флакона.
Предположим, мы отсканировали Data Matrix код со следующими параметрами:
04601234567890 (14 символов)ABC123XYZ7890 (13 символов)Выполним процедуру преобразования данных:
Шаг 1. Преобразуем GTIN в бинарный формат.
Берем числовую строку 04601234567890 (в десятичной системе) и переводим ее в шестнадцатеричную систему счисления (hex). Получаем значение: 04 2C 1D A5 3E D2. Это ровно 6 байт.
Шаг 2. Преобразуем серийный номер.
Строку серийного номера ABC123XYZ7890 переводим в HEX по таблице символов CP866/ASCII:
41 42 43 31 32 33 58 59 5A 37 38 39 30 (всего 13 байт).
Шаг 3. Собираем итоговую последовательность тега 1162.
Объединяем полученные блоки данных:
44 4D04 2C 1D A5 3E D241 42 43 31 32 33 58 59 5A 37 38 39 30Итоговая строка байт для записи в ККТ выглядит так:
44 4D 04 2C 1D A5 3E D2 41 42 43 31 32 33 58 59 5A 37 38 39 30
Для передачи этой последовательности через API драйвера кассы или XML-пакеты 1С (в зависимости от требований интеграционной библиотеки) полученный массив байт часто требуется закодировать в формат Base64.
Пример кода на встроенном языке 1С для конвертации GTIN в байтовый массив:
Функция ПолучитьБинарныйGTIN(Знач СтрокаGTIN) Экспорт
// Преобразуем строковый GTIN в число
ЧислоGTIN = Число(СтрокаGTIN);
// Выделяем 6 байт под результат (Big-Endian)
Результат = Новый Массив(6);
Для Итератор = 1 По 6 Цикл
Остаток = ЧислоGTIN % 256;
Результат[6 - Итератор] = Остаток;
ЧислоGTIN = Цел(ЧислоGTIN / 256);
КонецЦикла;
Возврат Результат;
КонецФункции
Разработчикам программных решений под 1С важно помнить, что ручное формирование структуры тега 1162 — это устаревающий сценарий. В настоящее время розничные продавцы маркированных товаров обязаны использовать ФФД 1.2 и фискальные накопители нового образца (ФН-М).
В ФФД 1.2 правила работы кардинально изменились в лучшую сторону:
44 4D.GS / ASCII 29).Поэтому при разработке новых систем автоматизации крайне рекомендуется использовать стандартные библиотеки интеграции с ККТ от фирмы 1С (например, БПО — Библиотеку подключаемого оборудования), которые полностью берут на себя взаимодействие с кассой по правилам ФФД 1.2.