ФГИС МДЛП (Информационная система мониторинга движения лекарственных препаратов) создана с целью информационного обеспечения маркировки товаров средствами идентификации и мониторинга движения лекарственных препаратов.

Система маркировки лекарственных препаратов охватывает все этапы оборота товара: от производителя до потребителя. На каждом шаге код маркировки проверяется.

Для контроля лекарственных препаратов используется двумерный штрих-код Data Matrix, наносимый на поверхность упаковки. Data Matrix содержит в себе сведения о штрих-коде товара и коде идентификации.

Лекарственные препараты могут быть проданы в упаковке или же расфасованы.

Регистрация лекарственного препарата реализована для ФР Атол и Атол 5.0.

Конфигурирование модуля

Модуль МДЛП активируется параметром mdlp в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/mdlp.ini в секции [plugins].

НаименованиеТип данныхВозможные значенияОписаниеПримечания
mdlpлогический
  • on
  • off
Активация модуля МДЛППо умолчанию off
Пример настройки
[plugins]
; Мониторинг движения лекарственных препаратов
;mdlp = off

Настройка модуля МДЛП производится в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/mdlp.ini в секции [Mdlp].

Каждой аптечной сети Минздрав или Росздравнадзор присваивает идентификатор субъекта обращения в ИС МДЛП. Идентификатор необходимо указать с помощью параметра sid.

Маска для проверки кода маркировки лекарственного препарата задается параметром dataMatrixMask.

НаименованиеТип данныхОписаниеПримечания

sid

строковый

Идентификатор места деятельности субъекта обращения

По умолчанию значение не задано
dataMatrixMaskстроковыйМаска для проверки Data Matrix лекарственного препарата

По умолчанию 01\d{14}21[a-zA-Z0-9]{13}91.{4}92.{44}

Пример настройки
[Mdlp]
; Настройки плагина мониторинга движения лекарственных препаратов

; Идентификатор места деятельности субъекта обращения
; По умолчанию ""
;sid = ""

; Маска для проверки DataMatrix лекарственного препарата
; По умолчанию 01\d{14}21[a-zA-Z0-9]{13}91.{4}92.{44}
;dataMatrixMask=01\d{14}21[a-zA-Z0-9]{13}91.{4}92.{44}

Код маркировки должен подходить только под одну маску для проверки DataMatrix.

Продажа лекарственных препаратов

Добавление лекарственных препаратов

Для определения лекарственного препарата у товара должен быть установлен признак tmctype = 5 (БД Dictionaries таблица Barcodes). При добавлении товара требуется считывание кода маркировки товара.

Добавление в чек товара с кодом маркировки осуществляется несколькими способами:

  1. Последовательным сканированием штрих-кода товара и кода маркировки:
    • если штрих-код товара соответствует коду маркировки, то товар будет добавлен в чек,
    • если штрих-код товара не соответствует коду маркировки, то на экран будет выведена ошибка "Код маркировки не соответствует штрих-коду", товар в чек не будет добавлен.
  2. Сканированием кода маркировки (код маркировки содержит в себе данные штрих-кода, поэтому сканировать штрих-код не требуется).
  3. Через форму подбора лекарственных препаратов. (см. ниже в разделе "Подбор лекарственных препаратов").

Добавление лекарственного препарата другими способами (по коду, по наименованию, с помощью горячих клавиш) запрещено.

Так как код маркировки представляет собой уникальный код, то в товарной позиции может быть не более одной единицы товара. Применение модификатора "Изменение количества" к позиции с упаковкой лекарственного препарата запрещено.

Добавление в чек обычного товара по коду маркировки лекарственного препарата определяется параметром oldMedicine в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/mdlp.ini в секции [Mdlp]

  • при значении true товар будет добавлен в чек,
  • при значении false при добавлении товара в чек на экран будет выведена ошибка "У товара не указан признак маркированного лекарственного препарата. Обратитесь в службу техподдержки".

В кассовом ПО Artix существует возможность поиска цены лекарственных препаратов с использованием кода маркировки, для этого необходимо:

  1. Загрузить цены для лекарственных препаратов в БД Dictionaries таблице Prices (поля для заполнения: barcode – код маркировки, price – цена товара, packingprice – цена товара для расфасовки; остальные поля заполняются по необходимости).
  2. Включить настройку useMarkToFindPrice в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/mdlp.ini.

При добавлении лекарственного препарата в чек поиск цены осуществляется по коду маркировки в БД Dictionaries таблице Prices:

  • если в таблице есть соответствующая запись, то используется цена из поля price. При расфасовке используется значение поля paсkingprice,
  • если в таблице нет соответствующей записи, поиск цены осуществляется по умолчанию.
НаименованиеТип данныхВозможные значенияОписаниеПримечания

oldMedicine

логический
  • true
  • false

Добавлять маркированный лекарственный препарат в чек как немаркированный, если признак лекарственного препарата не задан и ввод происходит по коду маркировки

По умолчанию false
useMarkToFindPriceлогический
  • true
  • false
Использование кода маркировки для поиска цены лекарственного препаратаПо умолчанию false
Пример настройки
[Mdlp]
; Настройки плагина мониторинга движения лекарственных препаратов
...
; Добавлять маркированный лекарственный препарат в чек как немаркированный, если признак лекарственного препарата не задан и ввод происходит по коду маркировки
; По умолчанию false
;oldMedicine = false
...
; Использование кода маркировки для поиска цены лекарственного препарата
; По умолчанию false
;useMarkToFindPrice = false

Подбор лекарственных препаратов

Использовать подбор лекарственных препаратов рекомендуется при разрешении экрана 1024Х768, при меньших значениях экрана возможны проблемы с отображением.

Учет остатков при подборе лекарственных препаратов (БД Dictionaries таблица Medicine) несовместим с настройками considerRemainsOfGoods и calculateRemainsOfGoods.

В кассовом ПО Artix существует возможность добавления лекарственного препарата через форму подбора, для этого необходимо:

  1. Включить настройку useSelectionMedicationsForm в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/mdlp.ini в секции [Mdlp.Pharmacy].

    НаименованиеТип данныхВозможные значенияОписаниеПримечания
    useSelectionMedicationsFormлогический
    • true
    • false
    Использовать форму подбора лекарственных препаратовПо умолчанию false
    Пример настройки
    [Mdlp.Pharmacy]
    ; Использовать форму подбора лекарственных препаратов
    ; По умолчанию false
    useSelectionMedicationsForm = true
  2. В секции [UI.PharmChoiceForm.Items] настроить отображение полей для формы выбора лекарств. Подробнее о настройке можно прочитать в разделе "Графический интерфейс".

    Пример настройки
    [UI.PharmChoiceForm.Items]
    ; Отображение списка лекарств в форме выбора
    ;fields = "receipt;;-2;true;1, name;Наименование;-1;true;128, country;Страна;-2;true;132, producer;Производитель;-2;true;132, remain;Остаток;-2;true;130, price;Цена;-2;true;130, series;Серия;-2;true;130, shelflife;Годен до;-2;true;130"
  3. Заполнить таблицу Medicine в БД Dictionaries.

    Лекарственные препараты будут добавлены в чек по цене, указанной в таблице Medicine. Цена упаковки задается в поле price, цена блистера в поле packingprice.

  4. В контексте открытого документа нажать клавишу с командой COMMAND_SELECTMEDICINE. Подробнее о настройке действия на клавишу можно прочитать в разделе "Настройка действий".

При нажатии клавиши, настроенной на подбор лекарственных препаратов, на экран выводится список товаров. Выбрать нужный товар можно используя клавиши навигации или функцию фильтрации. При использовании фильтра в список товаров попадают записи, начинающиеся с введенной последовательности.

Фильтрация работает в двух режимах:

  • по наименованию или цене,
  • по МНН (международное непатентованное название).

Переключение режимов выполняется командой COMMAND_SELECTMEDICINE.

При переключении на режим поиска по МНН поле ввода блокируется и в списке товаров остаются только товары, в которых есть полный список МНН выделенного товара.

При выборе лекарственных препаратов из списка будет открыт диалог ввода количества. Допустим ввод целого значения (упаковка) и дробного (блистер).

Пример

Пусть лекарственный препарат может продаваться как в упаковке (2 блистера по 10 таблеток) за 200 рублей, так и блистерами (по 10 таблеток) за 100 рублей.

Тогда необходимо:

  1. В БД Dictionaries таблицу Barcodes указать:
    • в поле cquant = 2.000 (количество блистеров в упаковке).
  2. В БД Dictionaries таблицу Medicine указать:
    • в поле price = 200 (цена за упаковку),
    • в поле packingprice = 100 (цена за блистер),
    • в поле remainquant = 50 (остаток блистеров).

После ввода количества лекарственного препарата требуется сканирование кода маркировки.

Если количество товара состоит из целого и дробного значений, например, 1 упаковка и 1 блистер, то в первую очередь необходимо отсканировать код маркировки целой упаковки, затем код маркировки для блистера.

При сканировании штрих-кода или кода маркировки лекарственного препарата, для которого заполнена таблица Medicine БД Dictionaries, на экран будет выведена форма подбора лекарственных препаратов с товарами, соответствующими введенному штрих-коду.

Разрешенные типы данных для ввода кода маркировки

В кассовом ПО Artix реализована возможность настройки разрешенных типов данных для ввода кода маркировки, задается параметром permittedInput в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/mdlp.ini в секции [Mdlp]:

При добавлении в чек маркированного товара

  • сканированием кода маркировки с типом данных, не указанным в настройке, на экран будет выведена ошибка "Неверный тип ввода данных", 
  • последовательным сканированием штрих-кода и кода маркировки с типом данных, не указанным в настройке, код маркировки будет проигнорирован.
НаименованиеТип данныхВозможные значенияОписаниеПримечания
permittedInput

целочисленный

(битовая маска)

  • 0 – запрет ввода любых данных,
  • 1 – текстовые данные,
  • 2 – бинарные данные (если устройство может посылать непечатные символы),
  • 3 – текстовые и бинарные данные.
Разрешенные типы вводимых данных

По умолчанию разрешены все типы вводимых данных

Пример настройки
[Mdlp]
...
; Разрешенные типы вводимых данных
; По умолчанию "" - все типы вводимых данных
;permittedInput =

Удаление лекарственных препаратов

При сторнировании лекарственных препаратов требуется считывание кода маркировки товара. После сканирования кода маркировки из чека удаляется именно та позиция, данные которой были считаны, независимо от того, какая позиция была выделена при операции сторнирования. При сторнировании всего чека, содержащего лекарственные препараты, операция выполняется без считывания кодов маркировки.

Возврат лекарственных препаратов

Возврат лекарственных препаратов в аптечную сеть может быть осуществлен в режиме возврата или возврата по чеку продажи.

В режиме возврата добавление лекарственного препарата в чек выполняется аналогично добавлению в чек продажи.

При возврате по чеку продажи позицию для возврата можно выбрать:

  1. Используя клавиши навигации с подтверждением выбора нажатием клавиши "Ввод" и последующим считыванием кода маркировки товара.  
  2. Считав штрих-код товара и код маркировки.
  3. Считав код маркировки.

Если при возврате по чеку продажи не используется форма выбора товаров, то при переходе к формированию чека возврата лекарственные препараты удаляются из чека.

Выбор лекарственных препаратов в форме выбора товара для возврата не может быть отменен. Сторнирование лекарственных препаратов в этом случае выполняется в режиме формирования чека возврата.

Вернуть лекарственный препарат, который не был продан невозможно. Возврат лекарственных препаратов по чеку продажи на другой кассе запрещен.

Расфасовка лекарственных препаратов

В упаковке лекарственного препарата может быть несколько блистеров, которые можно продать по отдельности друг от друга. Для таких товаров в кассовом ПО Artix существует возможность применения расфасовки. Подробнее о настройке и применении модификатора можно прочитать в разделе "Расфасовка товара".

При продаже расфасованных лекарственных препаратов необходимо отсканировать код маркировки, который нанесен на упаковку товара.

При продаже/возврате расфасованных лекарственных препаратов осуществляется контроль количества товара. При попытке продать/вернуть большее количество блистеров, чем было в упаковке на экран будет выведена ошибка "Количество товара с кодом маркировки не может превышать количество товара в упаковке".

Если была осуществлена продажа упаковки лекарственного препарата (без расфасовки), то при попытке вернуть лекарственный препарат частично на экран будет выведена ошибка "Нельзя вернуть позицию с расфасовкой. Товар был продан упаковкой".

Пример продажи расфасованного лекарственного препарата

В упаковке лекарственного препарата 10 блистеров.

Первый покупатель приобретает 3 блистера. Кассир добавляет в чек лекарственный препарат с расфасовкой, указывая количество 3. При добавлении товара необходимо сканировать код маркировки с упаковки.

Второй покупатель приобретает 7 блистеров. Кассир добавляет в чек лекарственный препарат с расфасовкой, указывая количество 7. При добавлении товара необходимо сканировать код маркировки с упаковки.

Последующая продажа лекарственного препарата с данным кодом маркировки невозможна.

Заказ лекарственных препаратов

В кассовом ПО Artix реализована возможность заказа лекарственных препаратов. Для совершения заказа необходимо:

  1. Настроить подключение к серверу для заказа лекарственных препаратов в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/mdlp.ini в секции [Mdlp.Pharmacy.Order].

    НаименованиеТип данныхОписаниеПримечания
    urlстроковый

    Адрес сервера для заказа лекарственных средств

    По умолчанию http://localhost
    timeoutцелочисленныйТаймаут запроса к серверуПо умолчанию 5 секунд
    Пример настройки
    [Mdlp.Pharmacy.Order]
    ; Адрес сервера для заказа лекарственных средств
    ; Значение по умолчанию http://localhost
    ;url = "http://localhost"
    
    ; Таймаут запроса к серверу (в секундах)
    ; Значение по умолчанию 5
    ;timeout = 5
  2. В контексте подбора лекарственных препаратов выбрать нужный товар и нажать клавишу с командой COMMAND_ORDERMEDICINE.

При нажатии клавиши, настроенной на заказ лекарственных препаратов, на экран выводится окно индикатора процесса отправки запроса на сервер:

  • если запрос успешно отправлен и получен ответ, то на экран будет выведено сообщение "Заказ на <наименование_лекарственного_препарата> успешно отправлен",
  • если при отправке запроса возникла ошибка, то на экран будет выведено соответствующее сообщение.

Проверка кодов маркировки лекарственных препаратов

Регламент работы по проверке кодов маркировки при продаже/возврате лекарственных препаратов определяется структурой торговой сети. Проверка кодов маркировки предполагает:

  • проверку на факт продажи/возврата лекарственных препаратов (в БД кассовой программы),
  • проверку статуса кода маркировки на кассовом сервере,
  • проверку кода маркировки в "белом" списке на сервере (коды маркировки, разрешенные к продаже).

Проверка кода маркировки в проданной продукции на кассе задается параметром checkLocalUniqueness в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/mdlp.ini в секции [Mdlp]:

  • при значении параметра true осуществляется проверка в БД Documents в таблице Goodsitem на возможность продажи/возврата лекарственных препаратов:
    • если код маркировки был продан/возвращен ранее, то при попытке продать/вернуть товар на экран выводится сообщение об ошибке "Код маркировки уже был зарегистрирован ранее", товар в чек не добавляется,
    • если код маркировки не был продан/возвращен ранее, то товар добавляется в чек.
  • при значении параметра false проверка кода маркировки в проданной продукции не осуществляется.
НаименованиеТип данныхВозможные значенияОписаниеПримечания
checkLocalUniquenessлогический
  • true
  • false
Проверка кода маркировки в проданной продукции на кассеПо умолчанию true
Пример настройки
[Mdlp]
; Настройки плагина мониторинга движения лекарственных препаратов
...
; Проверка кода маркировки в проданной продукции на кассе
; По умолчанию true
;checkLocalUniqueness = true

Структура сети без кассовых серверов (только кассы)

Проверка кодов маркировки в "белом" списке в БД кассовой программы задается параметром enableMarkVerifyLocal в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/mdlp.ini в секции [Mdlp]:

  • при значении параметра true проверка кода маркировки осуществляется в БД Dictionaries в таблице Excisemarkwhite:
    • если код маркировки найден в списке, то товар добавляется в чек продажи,
    • если код маркировки отсутствует в списке, то на экран выводится сообщение об ошибке "Товар с таким кодом маркировки запрещен к продаже", товар в чек не добавляется.
  • при значении параметра false проверка кода маркировки в "белом" списке не выполняется.

Проверка кодов маркировки в "белом" списке на кассе выполняется только при значении параметра enableMarkVerify = false (проверка на кассовом сервере отключена).

НаименованиеТип данныхВозможные значенияОписаниеПримечания
enableMarkVerifyLocalлогический
  • true
  • false
Проверять коды маркировки на кассеПо умолчанию false
Пример настройки
[Mdlp] 
; Настройки плагина мониторинга движения лекарственных препаратов
...
; Проверять коды маркировки на кассе
; По умолчанию false
;enableMarkVerifyLocal = false

Структура сети с кассовыми серверами

Структура сети с кассовыми серверами позволяет осуществлять контроль:

  • дублирования кодов маркировки (запрет повторной продажи/возврата одной и той же упаковки/блистера),
  • разрешенных к продаже кодов маркировки (запрет продажи/возврата товаров, коды маркировки которых не были внесены в "белый" список).

Настройки подключения к кассовому серверу задаются в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/mdlp.ini в секции [Mdlp]:

НаименованиеТип данныхВозможные значенияОписаниеПримечания

enableMarkVerify

логический
  • true
  • false
Проверка кодов маркировки на сервереПо умолчанию false

markVerifyUrl

строковый
Url сервера проверки кодов маркировки

По умолчанию http://localhost:8080.

Для работы с КС используется следующий url "http://'IP-адрес КС':8080/CSrest/rest/partialmark/"

markVerifyTimeout

целочисленный
Таймаут обращения к серверу проверки кодов маркировки в секундахПо умолчанию 30

ignoreMarkVerifyErrors

логический
  • true
  • false
Игнорировать ошибки обращения к серверу проверки кодов маркировкиПо умолчанию true

uniqueIdPattern

строковый


Шаблон для формирования уникального идентификатора операции резервирования

По умолчанию "%(document.shopCode[04d])%(document.cashCode[02d])%(document.shift[04d])%(document.num[07d])%(position.posnum[04d])"
Пример настройки
[Mdlp]
; Настройки плагина мониторинга движения лекарственных препаратов
...
; Проверка кодов маркировки на сервере
; По умолчанию false
;enableMarkVerify = false

; Url сервера проверки кодов маркировки
; Для работы с КС используется следующий url "http://'IP-адрес КС':8080/CSrest/rest/partialmark/"
;markVerifyUrl = http://localhost:8080/

; Таймаут обращения к серверу проверки кодов маркировки в секундах
; По умолчанию 30
;markVerifyTimeout = 30

; Игнорировать ошибки обращения к серверу проверки кодов маркировки
; По умолчанию true
;ignoreMarkVerifyErrors = true

; Шаблон для формирования уникального идентификатора операции резервирования
; По умолчанию %(document.shopCode[04d])%(document.cashCode[02d])%(document.shift[04d])%(document.num[07d])%(position.posnum[04d])
;uniqueIdPattern = %(document.shopCode[04d])%(document.cashCode[02d])%(document.shift[04d])%(document.num[07d])%(position.posnum[04d])

Проверка кодов маркировки на сервере задается при помощи параметра enableMarkVerify в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/mdlp.ini в секции [Mdlp]:

  • при значении true осуществляется проверка кода маркировки на сервере,
  • при значении false проверка кода маркировки на сервере не осуществляется.

Для проверки кодов маркировки на сервере торговой сети в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/mdlp.ini в секции [Mdlp] необходимо задать параметры подключения к серверу:

  • markVerifyUrl - URL сервера, где хранятся данные о кодах маркировки,
  • markVerifyTimeout - таймаут ожидания ответа от сервера при проверке кодов маркировки.

Настройками программы можно разрешать или запрещать продажу/возврат лекарственных товаров при возникновении ошибок обращения к серверу. Возможность игнорирования возникающих ошибок определяется параметром ignoreMarkVerifyErrors в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/mdlp.ini в секции [Mdlp]:

  • при значении true в случае возникновения ошибок подключения к серверу они игнорируются, продажа/возврат лекарственных товаров осуществляется без проверки кодов маркировки на сервере,
  • при значении false в случае возникновения ошибок подключения к серверу продажа товара не может быть выполнена. На экран будет выведена ошибка "Нет связи с сервером. Попробуйте позже".

Шаблон для формирования уникального идентификатора операции резервирования определяется параметром uniqueIdPattern конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/mdlp.ini в секции [Mdlp]. Идентификатор записывается БД DocumentsAll таблица Partialmark в поле reserveId (БД кассового сервера). 

При добавлении лекарственных товаров в чек продажи/возврата на кассовый сервер отправляется REST-запрос на получение статуса кода маркировки. Статус кода маркировки может принимать следующие значения: 

  • 0 – Марка не зарегистрирована в БД.
  • 7 – Акцизная марка отсутствует в списке разрешенных к продаже.
  • 10 – Штрих-код для проверки в списке акцизных марок, разрешенных к продаже, не передан.
  • 11 – Соответствие акцизной марки и штрих-кода в списке акцизных марок, разрешенных к продаже, не найдено.
  • 100 – Повторный запрос подтверждения продажи марки.
  • 101 – Заблокирована продажа/возврат марки в справочнике.
  • 102 – Превышен лимит продажи товара, который продается частями. Например, продажа блистеров из одной упаковки.
  • Любое другое значение – неизвестный статус акцизной марки.

Дальнейшее поведение программы определяется полученным статусом.

Статус кода маркировкиПоведение кассы при продажеПоведение кассы при возврате
Марка не зарегистрирована в БДТовар с акцизной маркой добавляется в чек и может быть продан

Если товар был продан, то он будет добавлен в чек возврата.

Если товар не был ранее продан, то на экран выводится сообщение "Товар с таким кодом маркировки не был продан", товар не добавляется в чек и не может быть возвращен

Акцизная марка отсутствует в списке разрешенных к продажеТовар в чек не добавляется, на экран выводится ошибка "Товар с такой акцизной маркой запрещен к продаже"
Штрих-код для проверки в списке акцизных марок, разрешенных к продаже, не переданТовар в чек не добавляется, на экран выводится ошибка "Товар с такой акцизной маркой запрещен к продаже. Не заполнен штрих-код для проверки в белом списке"
Соответствие акцизной марки и штрих-кода в списке акцизных марок, разрешенных к продаже, не найденоТовар в чек не добавляется, на экран выводится ошибка "Товар с такой акцизной маркой запрещен к продаже. Не найдено соответствие акцизной марки и штрих-кода в белом списке"

Повторный запрос подтверждения продажи марки

Товар в чек не добавляется, на экран выводится ошибка "Товар с такой акцизной маркой запрещен к продаже. По такому запросу уже было подтверждение продажи марки"
Заблокирована продажа/возврат марки в справочникеТовар в чек не добавляется, на экран выводится ошибка "Товар с такой акцизной маркой запрещен к продаже. Заблокирована продажа/возврат в справочнике"
Превышен лимит продажи товара, который продается частями. Например, продажа блистеров из одной упаковкиТовар в чек не добавляется, на экран выводится ошибка "Товар с такой акцизной маркой запрещен к продаже. Превышен лимит продажи"
Неизвестный статус акцизной маркиТовар в чек не добавляется, на экран выводится ошибка "Неизвестный статус акцизной марки на сервере"

После добавления товара в чек продажи/возврата код маркировки ставится в резерв на кассовом сервере.

Изменение статуса кода маркировки на кассовом сервере в зависимости от операции выполняется:

  • в режиме онлайн (по REST-запросу) – резервирование кода маркировки,
  • в режиме оффлайн (через очередь Artix-Queue) – снятие с резерва кода маркировки (сторнирование), после закрытия чека перевод в статус "продан", "возвращен".

Разрешительный режим

В кассовом ПО Artix реализован разрешительный режим – обязательная проверка кодов маркировки в системе цифровой маркировки "Честный знак".

На основании Постановления Правительства Российской Федерации от 21.11.2023 № 1944 с 1 апреля 2024 года в розничных магазинах при продаже маркированных товаров должна осуществляться обязательная проверка кодов маркировки в системе цифровой маркировки "Честный знак".

Разрешительный режим вводится в несколько этапов и имеет отличия по срокам для товарных групп, категорий продавцов и применения проверок в онлайн и офлайн режимах.

Рекомендуется дополнительно ознакомиться с методическими рекомендациями по разрешительному режиму здесь, со сроками запуска разрешительного режима и с другой информацией на официальной странице "Честного знака".

Проверка производится только для товаров в чеке продажи.

Помимо проверки валидности марки осуществляется проверка срока годности товара. Если у срока годности товара указана дата, но не указано время (в часах, минутах и секундах), то данный товар будет запрещен к продаже в полночь того же дня.

При проверке кодов маркировки некоторых товаров, ввозимых в Россию из стран таможенного союза, могут возникать ошибки.

Разрешительный режим также поддержан для софт-чеков и онлайн-чеков:

  • проверка кодов маркировки в онлайн-чеках происходит одновременно для нескольких товаров, если код маркировки хотя бы одного товара в онлайн-чеке не прошел проверку в системе цифровой маркировки "Честный знак", то онлайн-чек восстановлен не будет,
  • для софт-чеков проверка кода маркировки товара происходит при сканировании маркированной позиции в заказе.

Если параметры проверки заданы некорректно или задан недействительный токен авторизации, то:

  • продажа маркированных товаров будет осуществляться без проверки в системе цифровой маркировки "Честный знак",
  • тег 1265 с результатом проверки заполняться не будет.

Обязательная проверка кодов маркировки на сервере системы "Честный знак" задается при помощи параметра enableMarkVerifyCrpt в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/mdlp.ini в секции [Mdlp]:

  • при значении true осуществляется проверка кода маркировки на сервере системы "Честный знак",
  • при значении false проверка кода маркировки на сервере системы "Честный знак" не осуществляется.

Возможность игнорировать ошибки обращения к серверу системы "Честный знак" задается при помощи параметра ignoreMarkVerifyCrptConnectionErrors в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/mdlp.ini в секции [Mdlp]:

  • при значении true ошибки обращения к серверу системы "Честный знак" игнорируются, продажа может быть выполнена,
  • при значении false в случае возникновения ошибок при проверке кода маркировки на сервере системы "Честный знак" на экран будет выведено сообщение "Не удалось выполнить проверку кода маркировки (Ошибка соединения с сервером)", продажа не может быть выполнена.

Возможность запросить подтверждение добавления товара при провале проверки маркировки задается при помощи параметра markVerifyCrptAskConfirmation в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/mdlp.ini в секции [Mdlp]:

  • при значении true на экран будет выведен диалог с сообщением об ошибке: по нажатию клавиши "Ввод" товар будет добавлен в чек, по нажатию клавиши "Отмена" товар не будет добавлен в чек,
  • при значении false на экран будет выведен диалог с сообщением об ошибке, после закрытия диалога товар не будет добавлен в чек.
НаименованиеТипа данныхВозможные значенияОписаниеПримечание
enableMarkVerifyCrptлогический
  • true
  • false
Проверка кодов маркировки на сервере честного знакаПо умолчанию false
markVerifyCrptUrlстроковый
Url сервера проверки кодов маркировки честного знака

По умолчанию https://cdn.crpt.ru

Можно указать несколько значений через запятую

markVerifyCrptTimeoutцелочисленный


Таймаут обращения к серверу проверки кодов маркировки честного знака в секундах

По умолчанию 30

Минимальное значение, которое можно указать – 2

ignoreMarkVerifyCrptConnectionErrorsлогический
  • true
  • false
Игнорировать ошибки обращения к серверу честного знакаПо умолчанию true
markVerifyCrptAskConfirmationлогический
  • true
  • false
Запросить подтверждение добавления товара при провале проверки маркировкиПо умолчанию false
Пример настройки
[Mdlp]
...
; Проверка кодов маркировки на сервере честного знака
; По умолчанию false
;enableMarkVerifyCrpt = false

; Url сервера проверки кодов маркировки честного знака
; По умолчанию https://cdn.crpt.ru
;markVerifyCrptUrl = https://cdn.crpt.ru

; Таймаут обращения к серверу проверки кодов маркировки честного знака в секундах
; По умолчанию 30
;markVerifyCrptTimeout = 30

; Игнорировать ошибки обращения к серверу честного знака
; По умолчанию true
;ignoreMarkVerifyCrptConnectionErrors = true

; Запросить подтверждение добавления товара при провале проверки маркировки
; По умолчанию false
;markVerifyCrptAskConfirmation = false
...

В кассовом ПО Artix реализована возможность авторизации по токену УОТ (участника оборота товаров) в системе цифровой маркировки "Честный знак". Данная возможность задается при помощи параметра xapikey в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/mdlp.ini в секции [Mdlp]:

НаименованиеТип данныхОписаниеПримечания
xapikeyстроковыйТокен для доступа к серверу честного знака
  • При использовании одного токена для нескольких юридических лиц:
    xapikey = [<отдел1>.<отдел2>:<токен>]
  • При использовании токена только для одного из юридических лиц, например, только для <отдел2>:
    xapikey = [<отдел1>:1],[<отдел2>:<токен>]
  • При использовании токена для одного юридического лица:
    xapikey = [-1:<токен>]

Использование токена вида xapikey = [1:<токен>] недопустимо.

С информацией о получении токена можно ознакомиться в Методических рекомендациях по разрешительному режиму.

Пример настройки
[Mdlp]
...
; Токен для доступа к серверу честного знака
; При использовании нескольких юрлиц задаются токены для отделов:
; xapikey = [<отдел1>:<токен1>],[<отдел2>.<отдел3>:<токен2>]
; При использовании одного юрлица токен задается для отдела -1
; xapikey = [-1:<токен>]
;xapikey =
...

Если задан невалидный токен, то будет выведено уведомление "Честный знак: ошибка токена. Чеки будут сформированы некорректно".

После авторизации по токену УОТ (участника оборота товаров) в момент запуска кассы в системе цифровой маркировки "Честный знак" будет получен список CDN-площадок для осуществления проверки кодов маркировки.

CDN-площадка для проверки кодов маркировки выбирается в порядке приоритета в зависимости от среднего времени ответа, получаемого при запросе статуса CDN-площадок. Самый высокий приоритет имеет CDN-площадка с наименьшим средним временем ответа.

Если соединение с приоритетной CDN-площадкой было потеряно, то данная CDN-площадка будет недоступна для проверки кодов маркировки в течение 15 минут, проверка будет осуществляться в той CDN-площадке, которая следует далее по приоритету.

Если в течение таймаута, заданного в настройке markVerifyCrptTimeout, ни одна из CDN-площадок из списка не ответила или оказалась недоступна, то товар может быть добавлен в чек без проверки кода маркировки.

Настройки получения информации о CDN-площадках осуществляются в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/crpt.ini в секции [CRPT]:

НаименованиеТип данныхОписаниеПримечания
getInfoTimeoutцелочисленныйТаймаут получения списка CDN-площадокПо умолчанию 10 секунд
healthCheckTimeoutцелочисленныйТаймаут получения состояния CDN-площадкиПо умолчанию 10 секунд
Пример настройки
[CRPT]
; Настройки взаимодействия с ЦРПТ

; Таймаут получения списка CDN-площадок
; по умолчанию 10 секунд
;getInfoTimeout = 10

; Таймаут получения состояния CDN-площадки
; по умолчанию 10 секунд
;healthCheckTimeout = 10

При добавлении маркированных товаров в чек продажи на сервер системы "Честный знак" отправляется REST-запрос на получение статуса кода маркировки.

Статус кода маркировкиПоведение кассы при продаже по умолчанию
Товар с некорректным кодом маркировкиТовар в чек не добавляется, на экран выводится ошибка "Ошибка проверки кода маркировки позиции <...>. Код маркировки некорректен"
Товар с такой маркой не прошел проверку подлинностиТовар в чек не добавляется, на экран выводится ошибка "Ошибка проверки кода маркировки позиции <...>. Код маркировки не прошел проверку крипто подписи"
Товар не имеет признака нанесения марки на упаковкуТовар в чек не добавляется, на экран выводится ошибка "Ошибка проверки кода маркировки позиции <...>. У кода маркировки отсутствует признак нанесения на упаковку"
Товар с такой маркой продан или снят с продажиТовар в чек не добавляется, на экран выводится ошибка "Ошибка проверки кода маркировки позиции <...>. Код маркировки не в обороте"
Товар с такой маркой имеет истекший срок годностиТовар в чек не добавляется, на экран выводится ошибка "Ошибка проверки кода маркировки позиции <...>. Товар с таким кодом маркировки просрочен"
Код маркировки данного товара выведен из оборотаТовар в чек не добавляется, на экран выводится ошибка "Ошибка проверки кода маркировки позиции <...>. Код маркировки выведен из оборота"
Товар с таким кодом маркировки не найденТовар в чек не добавляется, на экран выводится ошибка "Ошибка проверки кода маркировки позиции <...>. Код маркировки не найден"
Товар заблокирован одной из CDN-площадокТовар в чек не добавляется, на экран выводится ошибка "Ошибка проверки кода маркировки позиции <...>. Товар с таким кодом маркировки заблокирован "<CDN-площадкой>"

В кассовом ПО Artix реализована возможность игнорировать конкретные статусы, получаемые при проверке кода маркировки на сервере системы "Честный знак".

Функционал доступен только при выключенной настройке markVerifyCrptAskConfirmation.

Данное поведение задается при помощи параметров, соответствующих полученным статусам, в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/mdlp.ini в секции [Mdlp]:

  • при значении deny в случае возникновения ошибок на экран будет выведен диалог с сообщением об ошибке, после закрытия диалога товар не будет добавлен в чек,
  • при значении ask в случае возникновения ошибок на экран будет выведен диалог с сообщением об ошибке: по нажатию клавиши "Продолжить" товар добавляется в чек, по нажатию клавиши "Отмена" товар не будет добавлен в чек,
  • при значении allow статус игнорируется, товар будет добавлен в чек.
НаименованиеТипа данныхВозможные значенияОписаниеПримечание
ignoreCrptStatusValidстроковый
  • deny
  • ask
  • allow
Игнорировать результат проверки валидности кода маркировкиПо умолчанию deny
ignoreCrptStatusVerifiedстроковыйИгнорировать результат проверки крипто подписи кода маркировки
ignoreCrptStatusUtilisedстроковыйИгнорировать признак нанесения кода маркировки на упаковку
ignoreCrptStatusRealizableстроковыйИгнорировать признак возможности реализации кода маркировки
ignoreCrptStatusExpireDateстроковыйИгнорировать срок годности
ignoreCrptStatusSoldстроковыйИгнорировать вывод из оборота
ignoreCrptStatusIsBlockedстроковыйИгнорировать блокировку КМ
ignoreCrptStatusFoundстроковыйИгнорировать не найденный КМ
Пример настройки
[Mdlp]
...
; Игнорировать получаемые статусы кода маркировки при проверке на сервере честного знака
; Возможные значения: "deny" - запретить продажу товара, если сервер вернул неверный статус,
; "ask" - запросить подтверждение продажи у кассира,
; "allow" - всегда разрешать продажу товара, независимо от получаемого статуса
; По умолчанию "deny"
; Игнорировать результат проверки валидности КМ
;ignoreCrptStatusValid = deny
; Игнорировать результат проверки крипто подписи КМ
;ignoreCrptStatusVerified = deny
; Игнорировать признак нанесения КМ на упаковку
;ignoreCrptStatusUtilised = deny
; Игнорировать признак возможности реализации КМ
;ignoreCrptStatusRealizable = deny
; Игнорировать срок годности
;ignoreCrptStatusExpireDate = deny
; Игнорировать вывод из оборота
;ignoreCrptStatusSold = deny
; Игнорировать блокировку КМ
;ignoreCrptStatusIsBlocked = deny
; Игнорировать не найденный КМ
;ignoreCrptStatusFound = deny
...

Отраслевые реквизиты

Отраслевые реквизиты передаются в ОФД только в чеках продажи. Их заполнение обязательно всеми участниками оборота для тех товарных групп, которые подлежат обязательной проверке в системе цифровой маркировки "Честный знак".

Настройки отраслевых реквизитов задаются в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/mdlp.ini в секции [Mdlp]:

НаименованиеТип данныхОписаниеПримечания
foivстроковыйОтраслевой реквизит: идентификатор ФОИВ

По умолчанию "030".

Указывается идентификатор ФОИВ.

Идентификатор ФОИВ – это идентификатор федерального органа исполнительной власти.

На текущий момент, согласно Постановлению Правительства Российской Федерации от 21.11.2023 № 1944, федеральный орган исполнительной власти – Министерство промышленности и торговли Российской Федерации.

Соответственно параметр foiv должен принимать значение идентификатора ФОИВ – 030.

Реквизит передается в теге 1262

documentDateстроковыйОтраслевой реквизит: дата документа основания (дд.мм.гггг)

По умолчанию "21.11.2023".

Указывается дата документа основания.

На текущий момент документ основания – это Постановление Правительства Российской Федерации от 21.11.2023 № 1944, соответственно дата документа основания – 21.11.2023.

Реквизит передается в теге 1263

documentNumberстроковыйОтраслевой реквизит: номер документа основания

По умолчанию "1944".

Указывается номер документа основания.

На текущий момент документ основания – это Постановление Правительства Российской Федерации от 21.11.2023 № 1944, соответственно номер документа основания – 1944.

Реквизит передается в теге 1264

Пример настройки
[Mdlp]
...  
; Отраслевой реквизит: идентификатор ФОИВ
; По умолчанию "030"
;foiv = 030
; Отраслевой реквизит: дата документа основания (дд.мм.гггг)
; По умолчанию "21.11.2023"
;documentDate = 21.11.2023
; Отраслевой реквизит: номер документа основания
; По умолчанию "1944"
;documentNumber = 1944 
...

Если один из параметров foiv, documentDate, documentNumber пуст, то будет выведено уведомление "Честный знак: ошибка в отраслевых реквизитах. Чеки будут сформированы некорректно".

По результатам проверки в системе цифровой маркировки "Честный знак" формируется отраслевой реквизит вида "UUID=<reqId>&Time=<reqTimestamp>", который передается в ОФД в теге 1265.

Значения атрибутов подставляются из ответа от сервера системы цифровой маркировки "Честный знак":

  • reqId=2ce10bdb-6510-4d37-be04-dd473b98c728,
  • reqTimestamp=1692691702065.
  • No labels