Маркированный товар

Без крипто части

В типовых конфигурациях 1С код маркировки хранится без крипто части. При передаче кода маркировки без крипто части он будет корректно принят кассой АТОЛ Онлайн и ОФД, но не будет выведен из оборота в Честном знаке, т.к. маркированный товар из оборота выводится только при передаче с крипто частью
Получение кода маркировки перед отправкой в АТОЛ Онлайн в типовых конфигурациях 1С выполняется штатной процедурой:
Результат = МенеджерОборудованияМаркировкаКлиентСервер.РазобратьШтриховойКодТовара(Штрихкод);
СтруктураЧека.Вставить("nomenclature_code", (Результат.РеквизитКодаТовараHEX));
Рассмотрим на примере (алгоритм обработки для ФФД 1.05, API v4):
  • в 1С хранится штрихкод упаковки 010463003407001221SxMGorvNuq6Wk
  • 01 - Префикс, 21 - Префикс
  • GTIN = 04630034070012 - 14 (символов) SERIAL = SxMGorvNuq6Wk - 13 (символов)
  • GTIN. Конвертируется из десятичной в HEX: 04 36 03 89 39 FC
  • SERIAL. Конвертируется из ASCII в HEX: 53 78 4D 47 6F 72 76 4E 75 71 36 57 6B
  • Итоговое значение тега 1162 для передачи по API: "nomenclature_code" = "44 4D 04 36 03 89 39 FC 53 78 4D 47 6F 72 76 4E 75 71 36 57 6B"
  • (44 4D + GTIN + HEX)
  • 44 4D - код маркированной продукции
В новой системе маркировки код 444D - единый для большинства товаров. Подробнее - https://www.atol.ru/company/news/chto-izmenilos-v-ffd--kak-podgotovitsya-predprinimatelyu-k-novym-trebovaniyam/

С крипто частью

Ниже описан алгоритм, которые используется в типовом модуле начиная с релиза 1.3.1.0 для API v5 (ФФД 1.2)
Подробно структура кода маркировки описана в документации Честный знак
Для возможности передачи кода маркировки с крипто частью для ФФД 1.2 (API v5) в документе Чек АТОЛ (начиная с релиза 1.3.1.0) добавлен отдельный реквизит для хранения кода маркировке в формате Base64 и изменен алгоритм обработки кода маркировки перед кодировкой. Обработка кода маркировки в формате Data Matrix происходит по следующем алгоритму:
  • Пример кода маркировки в формате Data Matrix с крипто частью: (01)04605865487308(21)UO*LKBqq)GIAT(91)EE06(92)tMtsmB8kGC+Bwv2ZO5LO1+fMtKdm94BdgemjklPCyG0=
  • Получение типа кода маркировки (валидация) происходит штатными средствами конфигурации 1С, которая определяет, что это код маркировки в формате Data Matrix
  • Далее происходит замена (01), (21), (91), (92), (93) на соответствующие значения без скобок 01, 21, 91, 92, 93
  • Код маркировки без крипто части в формате Data Matrix после очистки будет 31 символ
  • При длине кода (после очистки) больше 31 символа мы делаем вывод, что код маркировки с крипто частью
  • Далее перед кодированием добавляется специальный символ-разделитель имеющий код 29 в таблице символов ASCII (1D hex) после 37 символа и 31 символа в коде маркировки
  • Полученный код кодируется в Base64 и хранится для каждой строки в чеке для передачи в АТОЛ Онлайн