Преобразование GTIN и серийного номера маркировки для отправки на фискальный регистратор
При реализации маркированных товаров через контрольно-кассовую технику (далее ККТ)
включать код идентификации товара в состав фискального документа «кассовый чек»,
согласно формату фискальных документов, определенному ФНС России, для этого
необходимо:
• Сканировать двумерный штриховой код DataMatrix, нанесенный на упаковку,
товарный ярлык или непосредственно на маркированный товар с помощью 2D
сканера, считывающего DataMatrix (при этом важно обратить внимание на настройки
считывания кода без изменения регистра), либо ввести код идентификации вручную.
Состав данных, включаемых в код идентификации товара:
[01+XXXXXXXXXXXXXX+21+XXXXXXXXXXXXX]
Код товара
Серийный номер товара
Первая группа данных — идентификационный номер товара (Код товара), которому
предшествует идентификатор применения (01). Количество цифровых символов
составляет 14.
Вторая группа данных — индивидуальный серийный номер товара, которому
предшествует идентификатор применения (21) и который генерируется Оператором
Системы или участником оборота товара. Количество символов в цифровой или
буквенно-цифровой последовательности (латинского алфавита) составляет 13
(тринадцать). Завершающим символом для данной группы данных необходимо
использовать разделитель, имеющий код 29 в таблице символов ASCII.
Кассовое программное обеспечение должно передать информацию для
формирования тега 1162 фискального документа согласно следующему алгоритму:
1. Тип идентификатора товара
Байты [1:2] (2 байта) — Код типа маркировки
Постоянное значение: 44h 4Dh
2. Идентификатор кода товара
Байты [3:8] (6 байт) – код товара (GTIN)
Используется 14 разрядный код товара. При записи в ККТ, код товара формируется по правилам
перевода числа из десятичной системы исчисления в шестнадцатеричную систему исчисления,
дополненной лидирующими нулями (нулями слева) до 6 байт.
Серийный номер
Байты [9:21] (13 байт) – Серийный номер (Serial)
Серийный номер содержит в себе цифры, заглавные и строчные буквы латинского алфавита,
символы разделители «!”%&’()*+-.,_/:;=<>?». Формируется по правилам интерпретации ASCII в hex.
Пример формирования тега 1162
Имеем следующие данные промаркированной продукции:
Код товара (GTIN): 04630037591316
Преобразуем код товара в бинарный формат: 04 36 03 BE F5 14
В случае, если код товара менее 14 символов, его необходимо дополнить ведущими
нулями. Пример онлайн калькулятора — https://www.binaryhexconverter.com/decimalto-hex-converter.
Серийный номер (Serial): sgEKKPPcS25y5
Преобразуем в строковое значение: 73 67 45 4b 4b 50 50 63 53 32 35 79 35
Пример онлайн калькулятора — https://www.rapidtables.com/convert/number/ascii-tohex.html.
Формируем тег 1162:
Добавляем код типа маркировки: 44 4d
Формируем TLV для передачи в ККТ. Так как тег 1162 не имеет фиксированное
значение, 11 байт резерва в ККТ не передаются:
8A 04 15 00 44 4d 04 36 03 BE F5 14 73 67 45 4b 4b 50 50 63 53 32 35 79 35
Значение 8A 04 – номер тега (1162) в HEX, где младший байт идет первым, формат
LE (чтобы перевести в DEC надо читать как 04 8А)
15 00 – длина данных в HEX, где младший байт идет первым, формат LE (21 байт в
DEC)
&НаКлиенте Процедура Преобразовать(Команда) Префикс = 17485;// Тело = Новый ПотокВПамяти(); ЗаписьДанных = Новый ЗаписьДанных(Тело); ЗаписьДанных.ЗаписатьЦелое64(Число(GTIN), ПорядокБайтов.BigEndian); Если Не ПустаяСтрока(СерийныйНомер) Тогда ЗаписьДанных.ЗаписатьСимволы(СерийныйНомер); КонецЕсли; ЗаписьДанных.Закрыть(); Тело.Перейти(0, ПозицияВПотоке.Начало); ЗаписьДанных = Новый ЗаписьДанных(Тело); ЗаписьДанных.ЗаписатьЦелое16(Префикс, ПорядокБайтов.BigEndian); ЗаписьДанных.Закрыть(); СтрокаМаркировкиHEXДД = Тело.ЗакрытьИПолучитьДвоичныеДанные(); СтрокаМаркировкиHEX = СтрокаМаркировкиHEXДД; СтрокаМаркировкиBase = Base64Строка(СтрокаМаркировкиHEXДД); КонецПроцедуры &НаКлиенте Процедура ПриОткрытии(Отказ) GTIN = "04630037591316"; СерийныйНомер = "sgEKKPPcS25y5"; КонецПроцедуры
СтрокаМаркировкиHEX — код маркировки в таком виде отображается в ОФД. В таком же виде код отправляется на ККТ в Рознице 2.2. В Рознице 2.3 алгоритм сменили иданные на ККТ уходят зашифрованные Base64, Фискальный регистратор сам их разбирает и отправляет оператору фискальных данных.