Публичное пространство
Маркировка и МРЦ ◾️ Офлайн-проверка в Интеграционном модуле "Честный знак"
https://crystals.atlassian.net/browse/MARK-620
https://crystals.atlassian.net/browse/CR-12048
SETRETAIL 10.4.12.0
SETMARK 2.21
Глоссарий
КИ - код идентификации.
КМ - код маркировки.
УОТ - участник оборота товаров.
ТТ - торговая точка, конкретный магазин.
Репликация - процесс копирования данных из одного источника в другой.
ЭЦП - цифровой аналог рукописной подписи.
УКЭП - это вид электронной подписи (ЭП). В отличие от простой и неквалифицированной этот вид ЭП обеспечивает наивысший уровень защиты и является подписью прямого действия.
МЧД - машиночитаемая доверенность. Это электронная форма бумажной доверенности, подписанная квалифицированной электронной подписью (КЭП) руководителя организации или индивидуального предпринимателя, создается и представляется в файле формата XML.
Открепленная подпись - это электронная подпись, которая хранится отдельно от подписанного документа. Для проверки такой подписи необходимы сам документ и соответствующий файл подписи.
Криптопровайдер - программное обеспечение или библиотека, выполняющая шифрование и создание электронной подписи.
Описание
С 1 марта 2025 года при невозможности проверить продукцию в режиме онлайн – нужно осуществить проверку в режиме офлайн. Проверка осуществляется по «чёрным спискам» (коды идентификации или коды товара, которые заблокированы по решению ОГВ, ППРФ 1944 п.10а) и контролирует только случай запрета «блокировка по решению ОГВ».
Интеграционный модуль Честный знак (ИМ ЧЗ) - это решение для крупных торговых сетей, осуществляющее репликацию данных по КМ из Честного Знака в БД-хранилище марок ритейлера. Роль ИМ ЧЗ - доставить сведения из ЧЗ в интегрированное решение. В качестве интегрируемого решения используется SetMark Centrum.
Взаимодействие с ИМ ЧЗ осуществляется по сервисам REST API. Списки запрещенных к продаже КМ забираются от ИМ ЧЗ в SetMark Centrum, а квитанции о событиях, наоборот, - передаются от SetMark Centrum в ИМ.
Чем отличается ИМ ЧЗ от ЛМ ЧЗ?
ЛМ ЧЗ: работает на уровне одного магазина и подходит для небольших сетей с ограниченным количеством касс.
ИМ ЧЗ: рассчитан на сети с большим количеством магазинов и касс, где требуется централизованное управление данными для всех точек продаж. Вместо локальной обработки запроса на проверку ИМ устанавливается в центральном офисе и синхронизирует данные с ЧЗ, позволяя проверять марки в одном месте одновременно любому количеству магазинов.
Ценность
В случае недоступности онлайн-проверки в Честном знаке ИМ ЧЗ позволяет осуществлять проверку КМ офлайн в едином централизованном сервисе, чтобы соблюдать требования законодательства по продаже маркированных товаров.
Общая схема работы
Логика работы
Содержимое БД черных списков
БД запрещенных к обороту КИ;
БД запрещенных к обороту GTIN;
БД запрещенных к обороту серий лекарственных препаратов.
Проверка КМ
Проверка КМ в БД черных списков SMC осуществляется при выполнении следующих условий:
ИМ ЧЗ выполняет репликацию черных списков с Оператором ЦРПТ;
выполнена инициализация черных списков (версия каждого списка положительна);
со времени последней актуализации самой старой версии БД черных списков прошло не более 72 часов.
Если по результатам проверки КМ найден в черном списке - возвращать ответ о запрете продажи независимо от других данных в базе SMC (Даже, если по основной БД SMC марка разрешена к продаже)
Если по результатам проверки КМ отсутствует в черном списке - продолжать проверку по основной базе SMC для определения разрешения на продажу. Если КМ прошла проверку в онлайн сервисе ЧЗ - касса не проверяет в БД Черных списков SMC
Если ответа от SMC нет при оффлайн проверки КМ, то в зависимости от настройки
check.excise.ignoreTrueApiTimeout
- продавать или запрещать продажу при отсутствии ответа от сервиса ЧЗ и при настройке “Разрешать операцию, при недоступности сервера” в SMC - касса разрешает или запрещает продажу марки.Сохранить квитанцию о проверке КМ в офлайн в БД SMC. Отправить квитанцию о проверке КМ по локальным БД SMC в ИМ ЧЗ.
Если БД Черных списков SMC не синхронизировалась с ИМ ЧЗ более 72 часов ( или ИМ ЧЗ не выполнял задания на репликацию в течении 72 часов), то касса проверяет марку по загруженным Черным спискам SMC:
если марка есть в Черном списке SMC - касса запрещает продажу;
если марка не найдена в Черном списке SMC -в зависимости от настройки
check.excise.ignoreTrueApiTimeout
- касса разрешает или запрещает продажу марки.
Результаты проверок и ответы от SMC, если марка была найдена в Черных списках БД SMC, сохраняются в Журнале нарушений SetMark и в экспорте чеков.
Синхронизация БД
Реализовать автоматическую проверку необходимости синхронизации таблиц БД Черных списков в SMC, получаемых из ИМ ЧЗ с установленной в настройке SMC периодичностью (по умолчанию раз в 10 минут)
Обеспечить одновременное выполнение синхронизации только разных черных списков для разных экземпляров сервиса Set Mark
По итогам сравнения версий БД Черных списков SMC и ИМ ЧЗ:
Версии равны - фиксация в БД SMC даты-время успешной актуализации. Завершение процесса синхронизации.
При обнаружении расхождения версий БД Черных списков SMC и ИМ ЧЗ - в БД SMC фиксировать время обнаружения расхождения и выполнить паузу (настроенную в SetMark:
setmark.trueapi.integration.module.wait.after.version.changed.minutes
, например, один час) прежде чем начать отслеживать выполнение заданий на репликацию
По истечению времени ожидания - выполняется проверка состояния выполнения заданий на репликацию в ИМЧЗ из БД ЦРПТ.
Если ИМЧЗ всё ещё ожидает получение изменений от ЦРПТ (changes_pending > 0), то запрос изменений не происходит до следующей итерации.
Если ИМЧЗ перестал ожидать получение изменений (changes_pending = 0), то выполняется запрос изменений документов пачками из ИМ ЧЗ в БД Черных списков SMS.
При получении запрошенного ответа с изменениями в данных также содержится последнее значение из последовательности, которое необходимо сохранить в БД SMC, чтобы в случае ошибок, падения и пр. продолжить получать только следующие документы.
По итогу обновления Черных списков (очередной запрос изменений документов вернул пустой список или значение, в котором указан размер списка = 0) - Необходимо реализовать обновление данных локальной БД в SMC:
обновить номер версии черного списка, сбросить время ожидания, обновить дату актуальности обмена с ИМЧЗ
сформировать и сохранить в БД квитанцию об успешной синхронизации для последующей подписи и отправки в ИМЧЗ
Подпись и формирование квитанций
При успешной загрузке обновлений БД из ИМ ЧЗ на каждую БД черных списков формируется отдельная квитанция в формате base64.
Сформированные квитанции отправляются в криптопровайдер для формирования ЭЦП.
Полученная от КриптоПро ЭЦП добавляется в исходную квитанцию.
Квитанции с ЭЦП отправляются в ИМ ЧЗ.
В случае отсутствия связи/ответа от криптопровайдера - квитанция добавляется в очередь на отправку. При восстановлении связи SMC отправляет квитанции в порядке очереди криптопровайдеру для формирования ЭЦП
Квитанции хранятся в БД согласно установленному сроку, по истечении срока хранения – удаляются.
Примеры работы
Проверка КМ в ИМ ЧЗ
Есть товары:
КМ1 - проходит онлайн и офлайн проверки
КМ2 - не проходит онлайн и офлайн проверки
1. Кассир добавляет маркированный товар по КМ1.
2. Касса попыталась выполнить проверку КМ1 в онлайн-сервисе ЧЗ. После последнего возможного запроса к CDN не получила ответ.
3. Касса сделала офлайн-проверку КМ1. КМ1 прошла проверку.
4. Товар с КМ1 добавляется в чек.
5. Кассир добавляет маркированный товар по КМ2.
6. Касса попыталась выполнить проверку КМ2 в онлайн-сервисе ЧЗ. После последнего возможного запроса к CDN касса не получила ответ.
7. Касса сделала офлайн проверку КМ2. КМ2 не прошла проверку. Касса показывает соответствующую ошибку.
8. Кассир переходит к оплате и регистрирует чек.
Нет связи с ИМ ЧЗ
В случае, если ИМ ЧЗ недоступен, поведение определяется настройкой Разрешить продажу при отсутствии ответа от ЧЗ в настройках плагина Валидация в сервисе Честный знак.
Если флажок не установлен - продажа запрещена при отсутствии ответа от онлайн и офлайн сервисов, на кассе отображается сообщение "Сервис проверки марок ЧЗ недоступен. Продажа запрещена. Заберите товар у покупателя".
В файле trueApi.log отображается информация о недоступности онлайн и офлайн сервисов.
Формирование и отправка квитанции
1. SMC обновляет БД Черных списков.
2. БД Черных списков успешно обновлены.
3. SMC формирует квитанцию в формате base64 и отправляет в криптопровайдер для формирования ЭЦП.
4. Криптопровайдер генерирует электронную подпись в формате base64 (тип подписи - открепленная подпись) и возвращает ответ в SMC.
5. SMC вставляет полученную от КриптоПро ЭЦП в исходную квитанцию.
6. SMC сохраняет подписанную квитанцию в своей БД.
7. SMC отправляет в ИМ ЧЗ квитанцию с ЭЦП.
Журнал нарушений SetMark
Все операции и результаты по проверке марок по БД, реплицированных из ИМ ЧЗ, сохраняются в Журнале нарушений SetMark Centrum.
Внутренний код ошибки SetMark: 20
Внешний код ошибки: 25
Требования для интеграции ИМ ЧЗ
Решение реализуется на 3 хостах:
ИМ ЧЗ;
SetMark Centrum (E);
Сервис криптографической подписи (КриптоПро).
Для работы требуется интеграция и запуск работы с сервисом криптографической подписи. Инструкция для получения УКЭП. Услуги предоставляются напрямую поставщиком услуг ООО “КРИПТО-ПРО”.
Для работы требуется приобретение лицензии Лицензия на ПО "SET Mark" плагин Централизованная проверка марок в офлайн режиме. Интеграционный модуль Честного Знака".
Для работы требуется получение лицензии на БД Енисей от ЦРПТ.
Требуется доп. соглашение на услуги технической поддержки.
Версии ПО:
Set Retail - 10.4.12.0;
Set Mark - 2.21.
В зависимости от масштаба сети и существующей архитектурной схемы SetMark Centrum решение поставляется в двух вариантах для разных клиентских сегментов:
Set Mark Centrum Enterprise
Для крупных сетей (от 1000 касс).
Set Mark Centrum
Для сетей до 1000 касс.
Ограничения
Не поддерживается работа с 2 ФР на одной кассе (до версии SetMark 2.23.0). Работа с двумя ФР и с разными юридическими лицами поддерживается начиная с версии SetMark 2.23.0 и SetRetail 10.4.16.0 при использовании УКЭП с МЧД.
Не поддерживается работа с разными юридическими лицами в рамках одной торговой точки (до версии SetMark 2.23.0).
Стабильная работа гарантируется при наличии выделенных каналов связи между магазином и центральным офисом. В случае потери связи между магазином и центральным офисом проверка марок в оффлайн режиме невозможна.
Настройка
Компания CSI предоставляет услуги по установке и настройке модуля силами специалистов CSI. Для получения подробной информации обратитесь к вашему менеджеру.
Получение лицензии на БД Енисей
Для установки ИМ ЧЗ требуется лицензия на БД Енисей.
Получение лицензии и данных для настройки репликации баз данных (логин и пароль для подключения к источнику, из которого будет производиться репликация (Центральная БД РР)) осуществляется через менеджера клиента.
Список необходимых документов:
Карточка компании (выписка из ЕГРЮЛ) - для дальнейшего юридического оформления и данные для лицензии (наименование компании, адрес, ИНН).
ФИО лица, на кого выписывается лицензия, если гендир то из карточки компании. Ответственность определена правилами использования лицензии.
Телефон и email компании или лица, на кого выписывается лицензия.
Получение УКЭП
Квитанции на ряд операций, генерируемые SetMark Centrum, подписываются УКЭП.
Для получения УКЭП необходимо являться лицом, действующим от имени юридического лица без доверенности (генеральный директор).
С собой в ФНС для получения УКЭП необходимо иметь заранее приобретенный физический носитель (Рутокен).
Шаблоны документов:
Использование УКЭП с МЧД
https://crystals.atlassian.net/browse/SRTB-9566
https://crystals.atlassian.net/browse/CR-13956
SET MARK 2.23.0
Начиная с версии SetMark 2.23.0 появилась возможность использовать усиленную квалифицированную электронную подпись (УКЭП) вместе с машиночитаемой доверенностью (МЧД).
МЧД представляет собой электронный документ в формате XML, похожий на УПД или другие стандартные форматы. Его подписывает доверитель — лицо, передающее полномочия, — используя свою УКЭП. Действующая УКЭП физического лица может быть связана с одной или несколькими машиночитаемыми доверенностями от юридических лиц. Это позволяет подписывать квитанции в информационной системе «Честный Знак» от имени этих организаций.
Доверенности не требуется регистрировать в ГИС МТ.
Пример номера МЧД:
С использованием УКЭП с МЧД интеграционный модуль ЧЗ (ИМ ЧЗ или SDK ЛМ ЧЗ) может применяться для работы нескольких ЮЛ в торговой сети, в том числе и для работы 2ФР на одной кассе. Схема работы выглядит следующим образом:
Ограничения
Для подписания квитанций используется одна усиленная квалифицированная электронная подпись (УКЭП) для всех ИНН, на которые оформлены машиночитаемые доверенности (МЧД).
Квитанции подписываются для всех ИНН, указанных в настройке SetMark. Отдельных настроек для включения/отключения подписания не предусмотрено.
Обращаться за проверкой марок могут только кассы, для ИНН которых выпущена и настроена МЧД.
Соответствие ИНН номеру доверенности не проверяется. Ответственность за корректность настройки на стороне ритейлера.
Соответствие ИНН чека и ИНН подписывающих квитанции также не валидируется. Контроль полноты настройки — зона ответственности ритейлера.
Экспорт
Экспорт данных в составе чека
Экспорт данных осуществляется в соответствии с интеграционной документацией:
Экспорт чеков из SetRetail10 в ERP (веб-сервис на стороне ERP)
Экспорт чеков из SetRetail10 в ERP (веб-сервис на стороне SetRetail10)
<position ...>
trueApiReqId
- уникальный идентификатор запроса.trueApiReqTimestamp
- дата и время формирования запроса.trueApiInst
- идентификатор экземпляра ИМ ЧЗ в формате UUID.trueApiImDbVersion
- версия базы данных ИМ ЧЗ, на которой осуществлялась проверка. При наличии нескольких версий (если идет процесс синхронизации БД) указывается более старая версия, новая версия выгружается только после обновления всех БД на новую версию.trueApiValidationResponse
- ответ от онлайн-сервиса ЧЗ с кодом ошибки и статусом проверки.
В отличие от проверки в Локальном модуле, при проверке в ИМ ЧЗ результат проверки не экспортируется в плагинном свойстве localTrueApiResponse
.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<purchases count="1">
<purchase tabNumber="99999" userName="Иванов Иван Иванович" operationType="true" cashOperation="INCOME" operDay="2025-03-03+03:00" shop="779" cash="2" shift="23" number="2" saletime="2025-03-03T14:26:13.737+03:00" begintime="2025-03-03T14:19:43.575+03:00" amount="1770.00" discountAmount="0.00" inn="7802781104" qrcode="t=20250303T1426&s=1770.00&fn=6421589110248625&i=56&fp=0&n=1" fiscalDocNum="56;2">
<plugin-property key="PROMO_PRINT_DISABLED" value="true"/>
<plugin-property key="FN_DOC_NUM_IN_SHIFT" value="1"/>
<plugin-property key="FISCAL_DOC_ID" value="56"/>
<plugin-property key="CASHIER_NAME" value="Иванов Иван Иванович"/>
<plugin-property key="UID_PURCHASE" value="0c297992-dc02-4416-8562-15ce816a6446"/>
<plugin-property key="KPP" value="780101001"/>
<plugin-property key="CASH_TIME_ZONE" value="+03:00"/>
<positions>
<position order="1" departNumber="1" goodsCode="00084595" barCode="4629308877044" count="1.000" cost="1770.00" nds="-1.0" ndsSum="0.00" discountValue="0.00" costWithDiscount="1770.00" amount="1770.00" dateCommit="2025-03-03T14:19:43.598+03:00" insertType="0">
<plugin-property key="trueApiReqId" value="3ee908f4-d4c3-85b5-b6df-03c0dd2e1ecc"/>
<plugin-property key="isWeightScanned" value="true"/>
<plugin-property key="gtin" value="04629308877044"/>
<plugin-property key="trueApiInst" value="4eb2c156-da22-404e-b544-49135c83114c"/>
<plugin-property key="localTrueApiResponse"/>
<plugin-property key="markValidationResult" value="{"fiscalResult":{"input":{},"tag2106":15,"tag2005":15,"tag2105":0,"tag2109":1},"status":"VALID"}"/>
<plugin-property key="salesTax" value="0"/>
<plugin-property key="ffdTag2108"/>
<plugin-property key="trueApiImDbVersion" value="bcf3681f-fa9f-4265-84e9-66a415675ebb"/>
<plugin-property key="lineNumberAfterRegistration" value="1"/>
<plugin-property key="trueApiValidationResponse" value="{"statusCode":"GATEWAY_TIMEOUT","statusCodeValue":504}"/>
<plugin-property key="trueApiReqTimestamp" value="1741000783482"/>
<plugin-property key="priceByMRP" value="177000"/>
<plugin-property key="minimalPrice" value="-1"/>
<plugin-property key="excise-token" value="010462930887704421DzkcYt2"/>
<plugin-property key="marktype" value="TOBACCO"/>
</position>
</positions>
<payments>
<payment order="0" typeClass="CashPaymentEntity" amount="1770.00" description="Оплата наличными"/>
</payments>
</purchase>
</purchases>
Данные обращений в ИМ ЧЗ сохраняются на кассе в базе данных cash в таблице плагинных свойств позиции чека ch_position_properties.
Статьи по теме
© 1994-2025, ООО «Кристалл Сервис Интеграция».
Все права защищены.