Маркированный товар
Без крипто части
В типовых конфигурациях 1С код маркировки хранится без крипто части. При передаче кода маркировки без крипто части он будет корректно принят кассой АТОЛ Онлайн и ОФД, но не будет выведен из оборота в Честном знаке, т.к. маркированный товар из оборота выводится только при передаче с крипто частью
Получение кода маркировки перед отправкой в АТОЛ Онлайн в типовых конфигурациях 1С выполняется штатной процедурой:
Рассмотрим на примере (алгоритм обработки для ФФД 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 и хранится для каждой строки в чеке для передачи в АТОЛ Онлайн
Подбор полного кода маркировки
Ниже описан алгоритм, которые используется в типовом модуле начиная с релиза 1.3.2.0 для API v5 (ФФД 1.2)
В документ Чек АТОЛ в табличную часть добавлен реквизит "Полный код маркировки (из регистра Пул кодов маркировки СУЗ)".
Реквизит заполняется программно данными из регистра Пул кодов маркировки СУЗ по следующему алгоритму:
по введенному коду маркрировки в реквизите "Код маркировки" ищем запись в регистре Пул кодов маркировки СУЗ
если запись найдена по короткому коду маркировки (код маркировки без крипто части) и есть значение ПолныйКодМаркировки, то в чеке будет заполнено найденное значение полного кода маркировки
в регистре Пул кодов маркировки СУЗ ПолныйКодМаркировки хранится в кодировке Base64, при заполнении реквизита Полный код маркировки значение из Пула кодов маркировки декодируется из Base64, также из него удаляются символы 29 (т.к. он на уровне платформы 1С:Предприятие отображение таких символов невозможно, будет ошибка о запрещенном символе)
при отправке чека в АТОЛ Онлайн для API v5 (ФФД 1.2) если заполнено значение реквизита "Полный код маркировки (из регистра Пул кодов маркировки СУЗ)", то будет отправлен именно Полный код маркировки с таким же порядком обработки, как и Код маркировки, который описан выше
если реквизит "Полный код маркировки (из регистра Пул кодов маркировки СУЗ)" не заполнен, то все работает как и раньше
Алгоритм заполнения реализован в модуле АТОЛ функцией ПолныйКодМаркировки, которая находится в общем модуле АТОЛ_ЛокализацияСервер (без обфускации) и при необходимости может быть модифицирована собственными силами
Разрешительный режим
Ниже описан алгоритм, которые используется в типовом модуле начиная с релиза 1.3.5.0 для API v5 (ФФД 1.2)
Если для вида маркируемой продукции применим разрешительный режим, то в чеке необходимо передавать по каждому товару с маркировкой дополнительную информацию:
Идентификатор ФОИВ (тег 1262)
Дата нормативного акта федерального органа исполнительной власти, регламентирующего порядок заполнения реквизита «значение отраслевого реквизита» (тег 1263)
Номер нормативного акта федерального органа исполнительной власти, регламентирующего порядок заполнения реквизита «значение отраслевого реквизита» (тег 1264)
Состав значений, определенных нормативного актом федерального органа исполнительной власти (тег 1265)
При записи документа Чек АТОЛ выполняются дополнительные проверки:
если в строке заполнена Номенклатура и Вид продукции ИС требует проверки разрешительного режима (проверка выполняется через типовой регистр сведений НастройкиУчетаМаркируемойПродукцииИСМП) и дата чека больше или равна дате начала применения разрешительного режима (для новый чеков сравниваем с текущей датой)
при выполнении условий у строки в чеке устанавливаются флаги "Требуется проверка кода маркировки" и "Продажа запрещена"
далее по каждой строке, у которой заполнен код маркировки, выполняется проверка возможности продажи кода маркировки
при успешной проверке будут заполнены все необходимые поля:
Идентификатор ФОИВ - из общих настроек
Дата и № документа-основания - из общих настроке
Результат проверки - полученные данные из ответа Честного знака
Флаг "Продажа запрещена" будет снят у строки
при получении ответа от Честного знака, который не подтверждаем возможность продажи марки, в поле "Результат проверки" заполняется текст ошибки, который вернул Честный знак
если в Чеке есть строки, по которым Продажа запрещена, при Отправке чека будет соответствующее сообщение. Подробная информация выводится на вкладке Предупреждения
Last updated