Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

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

НаименованиеТип данныхВозможные значенияОписаниеПримечания
markedgoodsлогический
  • on
  • off
Активация модуля маркированных товаровПо умолчанию off


Code Block
languagetext
titleПример настройки
[plugins]
; on - модуль включен, off - выключен. 
; По умолчанию off
;markedgoods = off

...

Info

Если у подсекции отсутствует маска для проверки Data Matrix или она не уникальна, то настройки подсекции работать не будут.

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


Code Block
languagetext
titleПример настройки
;[MarkedGoods.Milk]
; Маркированное молоко
; Маска для проверки DataMatrix молочной продукции
;mask = "\s*01(?<barcode>[0-9]{14})(21.{13}\s*(17\d{6}|7003\d{10})|21.{6}|21.{8})\s*93.{4}(\s*3103(?<weight>\d{6}))?"

;[MarkedGoods.Camera]
; Маркированные фотокамеры
; Маска для проверки DataMatrix фотокамер
;mask = "01(?<barcode>[0-9]{14})21.{20}\s*91.{4}\s*92.{44}"

;[MarkedGoods.Common]
; Маркированные парфюм, велосипеды, товары легкой промышленности, шины и покрышки и кресла-коляски
; Маска для проверки DataMatrix для парфюма, велосипедов, товаров легкой промышленности, шин и покрышек и кресел-колясок
;mask = "01(?<barcode>[0-9]{14})21.{13}\s*91.{4}\s*92.{44}"

;[MarkedGoods.Water]
; Маркированная вода
; Маска для проверки DataMatrix водной продукции
;mask = "01(?<barcode>[0-9]{14})21.{13}\s*93.{4}\s*"


Warning

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


Info

В случае последовательного сканирования штрих-кода товара и кода маркировки, содержащий другой штрих-код, необходимо использовать маску без именованного захвата значений "(?<barcode>)", например "01[0-9]{14}21.{13}\s*91.{4}\s*92.{44}".

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

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

Продажа маркированных товаров

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

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

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

  • последовательным сканированием штрих-кода товара и кода маркировки;
  • сканированием кода маркировки (код маркировки содержит в себе данные штрих-кода, поэтому сканировать штрих-код не требуется).

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

Добавление в чек маркированных товаров, как обычных (без ввода кода маркировки), определяется параметром addWithoutScanMark в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/markedgoods.ini в секции [MarkedGoods]:

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

...

  • true
  • false

...

Code Block
titleПример настройки
[MarkedGoods]
...
; Добавлять маркированные товары в чек без ввода кода маркировки
; По умолчанию false
;addWithoutScanMark = false

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

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

Возврат маркированных товаров

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

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

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

  • выбрав товар из списка в режиме выбора позиций для возврата и считав код маркировки товара;
  • выбрав товар из списка в режиме выбора позиций для возврата и нажав "без маркировки" в диалоге считывания кода маркировки (если включена настройка addWithoutScanMark);
  • считав код маркировки товара.

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

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

Info

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

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

Проверка кодов маркировки товаров

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

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

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

  • при значении параметра true осуществляется проверка в БД Documents в таблице goodsitem на возможность продажи/возврата маркированного товара:
    • если код маркировки был продан/возвращен ранее, то при попытке продать/вернуть товар на экран выводится сообщение об ошибке "Код маркировки уже был зарегистрирован ранее", товар в чек не добавляется;
    • если код маркировки не был продан/возвращен ранее, то товар добавляется в чек.
  • при значении параметра false проверка кода маркировки в проданной продукции не осуществляется.

...

  • true
  • false

...

Code Block
titleПример настройки
[MarkedGoods]
...
; Проверять уникальность маркировки локально 
; По умолчанию true 
;checkLocalUniqueness = true

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

...


Info

В зависимости от типа сканера разделительные символы в коде маркировки могут быть представлены в различных видах: произвольное количество пробелов или '\u001d'.

Для того чтобы код маркировки, содержащий разделительный символ '\u001d', корректно воспринимался программой, необходимо в маске задать именованный капчуринг remove. Капчурингов remove может быть несколько, при этом после remove всегда должно стоять число, начиная с 1.

Code Block
languagetext
titleПример маски для кода маркировки парфюма, который содержит '\u001d' в качестве разделителя
[MarkedGoods.Common]
mask = "01(?<barcode>[0-9]{14})21.{13}(?<remove1>\s*|\\u001d)91.{4}(?<remove2>\s*|\\u001d)92.{44}"


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

Продажа маркированных товаров

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

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

  • последовательным сканированием штрих-кода товара и кода маркировки,
  • сканированием кода маркировки (код маркировки содержит в себе данные штрих-кода, поэтому сканировать штрих-код не требуется).

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

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

Добавление в чек маркированных товаров, как обычных (без ввода кода маркировки), определяется параметром addWithoutScanMark в конфигурационном файле /linuxcash/cash/conf/ncash. ini.d/markedgoods.ini в секции [MarkedGoods]:

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

Добавление в чек маркированного товара, как обычного товара (по коду маркировки), задаётся параметром allowUnmarked в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/markedgoods.ini в секции [MarkedGoods]:

  • при значении true товар будет добавлен в чек. В выгрузке продаж такой товар будет считаться как обычный, а также будет передан код маркировки. В ОФД товар передается как обычный,
  • при значении false при добавлении товара в чек на экран будет выведена ошибка "Товар не маркирован. Обратитесь в службу техподдержки". Товар в чек не добавляется.
НаименованиеТип данныхВозможные значенияОписаниеПримечания
addWithoutScanMarkлогический
  • true
  • false
Добавлять маркированные товары в чек без ввода кода маркировкиПо умолчанию false
allowUnmarkedлогический
  • true
  • false
Разрешить продажу товара по коду маркировки как не маркированногоПо умолчанию false


Code Block
languagetext
titleПример настройки
[MarkedGoods]
...
; Добавлять маркированные товары в чек без ввода кода маркировки
; По умолчанию false
;addWithoutScanMark = false
...
; Разрешить продажу товара по коду маркировки как не маркированного
; По умолчанию false
;allowUnmarked = false

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

Info

Для корректного закрытия чека на ФР Атол с ФФД 1.2 необходимо задать соотнесение единиц измерения товара и меры количества предмета расчета.

В кассовом ПО Artix реализована возможность изменять количество для весового маркированного товара, регулируется параметром allowChangeQuantity в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/markedgoods.ini в секции [MarkedGoods]:

  • при значении true разрешено изменять количество весового товара. При применении модификатора "Количество" на экран будет выведен диалог ввода количества,
  • при значении false запрещено изменять количество весового товара. При применении модификатора "Количество" на экран будет выведена ошибка "Изменение количества для маркированной позиции запрещено".
НаименованиеТип данныхВозможные значенияОписаниеПримечания
allowChangeQuantityлогический
  • true
  • false
Разрешить изменять количество для весового товараПо умолчанию false


Code Block
languagetext
titleПример настройки
[MarkedGoods]
...
; Разрешить изменять количество для весового товара
; По умолчанию false
;allowChangeQuantity = false

При несоответствии штрих-кода из кода маркировки штрих-коду товара

В кассовом ПО Artix реализована возможность продажи маркированного товара, если штрих-код товара и штрих-код, содержащийся в коде маркировки, не соответствуют друг другу. Данное поведение определяется параметром allowNotMatchingBarcodes в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/markedgoods.ini в секции [MarkedGoods]:

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

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

...

enableMarkVerifyLocal

...

  • true
  • false

...

Code Block
titleПример настройки
[MarkedGoods]
...
; Проверять коды маркировки на кассе
; По умолчанию false
;enableMarkVerifyLocal = false

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

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

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

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

...

  • true
  • false

...

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

Для работы с КС используется следующий url "http://<host>:<port>/CSrest/rest/sales/exciseMark/status".

...

  • true
  • false

...

  • true
  • false

...

  • значении true допускается:
    • сканирование штрих-кода товара из БД после сканирования кода маркировки, штрих-код из которого отсутствует в БД. На экран будет выведено сообщение о необходимости сканирования штрих-кода товара,
    • сканирование штрих-кода товара из БД с последовательным сканированием кода маркировки, штрих-код в котором не соответствует ранее отсканированному штрих-коду товара.
  • при значении false:
    • после сканирования кода маркировки, содержащего штрих-код товара, который отсутствует в БД, на экран будет выведено предупреждение "Товар со штрих-кодом '<штрих-код>' не найден",
    • после сканирования кода маркировки, штрих-код из которого не соответствует ранее отсканированному штрих-коду товара, на экран будет выведена ошибка "Ошибка считывания кода маркировки, повторите сканирование".

Маска разрешенных для несоответствия штрих-кодов может быть задана параметром notMatchingBarcodesMask в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/markedgoods.ini в секции [MarkedGoods].

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

  • при значении true параметров allowNotMatchingBarcodes и checkBarcodesOneArticle производится дополнительная проверка на принадлежность штрих-кода из кода маркировки карточке товара, найденной по штрих-коду,
  • при значении false проверка принадлежности не осуществляется.
НаименованиеТип данныхВозможные значенияОписаниеПримечания
allowNotMatchingBarcodesлогический
  • true
  • false
Разрешить несоответствие штрих-кода из кода маркировки штрих-коду товараПо умолчанию false
notMatchingBarcodesMaskстроковый
Маска разрешенных для несоответствия штрих-кодов

По умолчанию "[0-9]*".

Работает в сочетании с настройкой allowNotMatchingBarcodes:

Info
iconfalse

allowNotMatchingBarcodes = true


checkBarcodesOneArticleлогический
  • true
  • false
Проверять несоответствие штрих-кода из кода маркировки карточке товара, найденной по штрих-коду

По умолчанию false.

Работает в сочетании с настройкой allowNotMatchingBarcodes:

Info
iconfalse
  • allowNotMatchingBarcodes = true
  • checkBarcodesOneArticle = true



Code Block
languagetext
titleПример настройки
[MarkedGoods]
...
; ПроверкаРазрешить кодовнесоответствие маркировкиштрих-кода наиз сервере
;кода Помаркировки умолчанию false
;enableMarkVerify=false
; Игнорировать проверку АМ при возврате по чеку (для онлайн-чеков при некорректных АМ)штрих-коду товара.
; Запрашивать штрих-код товара, если штрих-код из кода маркировки не найден в базе данных.
; Отправлять в ФР штрих-код из кода маркировки
; По умолчанию false
;skipCheckExciseMarkallowNotMatchingBarcodes = false

; UrlМаска разрешенных серверадля проверкинесоответствия штрих-кодов маркировкипри включенной настройке allowNotMatchingBarcodes
; Для работы с КС используется следующий url "http://'IP-адрес КС':8080/CSrest/rest/sales/exciseMark/status"
; По умолчанию http://localhost:8080
;markVerifyUrl=http://localhost:8080
; Таймаут обращения к серверу проверки кодов маркировки в секундах
; По умолчанию 30
;markVerifyTimeout=30
; Игнорировать ошибки обращения к серверу проверки кодов маркировкиПо умолчанию "[0-9]*"
;notMatchingBarcodesMask = "[0-9]*"

; Проверять несоответствие штрих-кода из кода маркировки карточке товара, найденной по штрих-коду
; Работает в сочетании с настройкой allowNotMatchingBarcodes
; По умолчанию truefalse
;ignoreMarkVerifyErrors=true

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

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

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

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

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

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

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

...

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

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

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

Разделение настроек для разных категорий маркированных товаров

При необходимости настройки можно переопределить для каждой категории маркированных товаров. Таким образом для каждой подсекции маркированных товаров указываются свои правила поведения. Возможность выделения параметра в отдельную подсекцию указана в таблице:

...

По умолчанию все настройки размещены в секции [MarkedGoods]. При необходимости все или часть индивидуальных настроек можно вынести в отдельную подсекцию [MarkedGoods.<имя_подсекции>]. Если в подсекции [MarkedGoods.<имя_подсекции>] указана только часть индивидуальных настроек, то для остальных настроек будет использовано значение из секции [MarkedGoods].

Info
В подсекции [MarkedGoods.<имя_подсекции>] обязательно должна быть указана маска для проверки Data Matrix.
Code Block
titleПример разделения настроек
[plugins]
markedgoods = on

[MarkedGoods]
; Проверка кодов маркировки на сервере
; По умолчанию false
enableMarkVerify = true

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

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

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

; Проверять коды маркировки на кассе
; По умолчанию false
enableMarkVerifyLocal = false

; Добавлять маркированные товары в чек без ввода кода маркировки
; По умолчанию false
addWithoutScanMark = false

;[MarkedGoods.Milk]
;mask = "\s*01(?<barcode>[0-9]{14})21.{13}\s*(17\d{6}|7003\d{10})\s*93.{4}"
; Проверка кодов маркировки на сервере
; По умолчанию false
enableMarkVerify = false
; Проверять коды маркировки на кассе
; По умолчанию false
enableMarkVerifyLocal = true

;[MarkedGoods.Camera]
;mask = "01(?<barcode>[0-9]{14})21.{20}\s*91.{4}\s*92.{44}"
; Проверка кодов маркировки на сервере
; По умолчанию false
enableMarkVerify = true
; Проверять коды маркировки на кассе
; По умолчанию false
enableMarkVerifyLocal = false

;[MarkedGoods.Common]
;mask = "01(?<barcode>[0-9]{14})21.{13}\s*91.{4}\s*92.{44}"
; Игнорировать ошибки обращения к серверу проверки кодов маркировки
; По умолчанию true
ignoreMarkVerifyErrors = false

;[MarkedGoods.Water]
;mask = "01(?<barcode>[0-9]{14})21.{13}\s*93.{4}\s*"
checkBarcodesOneArticle = false


Panel
titleПример с добавлением весового маркированного товара

allowNotMatchingBarcodes = true

"21???????????=BBBBBBBQQ.QQQX" – правило интерпретации штрих-кода из bcode.ini

010460704243920021nqmQ&IjzWJ+T*93dGVs – код маркировки, штрих-код из которого отсутствует в БД кассы

2103321055451 – штрих-код маркированного товара из БД с весом 5.545

Panel
titleПример 1

При сканировании кода маркировки "010460704243920021nqmQ&IjzWJ+T*93dGVs" на экран будет выведено сообщение "Нет соответствий с введенным кодом маркировки. Отсканируйте штрих-код товара".

Далее сканируем штрих-код маркированного товара с весом "2103321055451".

Маркированный товар будет добавлен в чек с количеством "5.545".

После закрытия чека в БД Documents таблицу Goodsitem будут записаны следующие данные:

  • bcode – 2103321,
  • excisemark – 010460704243920021nqmQ&IjzWJ+T*93dGVs,
  • additionalbarcode – 4607042439200.


Panel
titleПример 2

Сканируем штрих-код маркированного товара с весом "2103321055451".

Далее сканируем код маркировки "010460704243920021nqmQ&IjzWJ+T*93dGVs".

Маркированный товар будет добавлен в чек.

После закрытия чека в БД Documents таблицу Goodsitem будут записаны следующие данные:

  • bcode – 2103321,
  • excisemark – 010460704243920021nqmQ&IjzWJ+T*93dGVs,
  • additionalbarcode – 4607042439200.



Panel
titleПример с добавлением штучного маркированного товара

allowNotMatchingBarcodes = true

4607042439162 – штрих-код маркированного товара из БД кассы

010460704243920021nqmQ&IjzWJ+T*93dGVz – код маркировки, штрих-код из которого отсутствует в БД кассы

Panel
titleПример 1

При сканировании кода маркировки "010460704243920021nqmQ&IjzWJ+T*93dGVz" на экран будет выведено сообщение "Нет соответствий с введенным кодом маркировки. Отсканируйте штрих-код товара".

Далее сканируем штрих-код маркированного товара "4607042439162".

Маркированный товар будет добавлен в чек.

После закрытия чека в БД Documents таблицу Goodsitem будут записаны следующие данные:

  • bcode – 4607042439162,
  • excisemark – 010460704243920021nqmQ&IjzWJ+T*93dGVz,
  • additionalbarcode – 4607042439200.


Panel
titleПример 2

Сканируем штрих-код маркированного товара "4607042439162".

Далее сканируем код маркировки "010460704243920021nqmQ&IjzWJ+T*93dGVz".

Маркированный товар будет добавлен в чек.

После закрытия чека в БД Documents таблицу Goodsitem будут записаны следующие данные:

  • bcode – 4607042439162,
  • excisemark – 010460704243920021nqmQ&IjzWJ+T*93dGVz,
  • additionalbarcode – 4607042439200.



Panel
titleПример проверки по маске ШК товара, разрешенного для несоответствия ШК из КМ

allowNotMatchingBarcodes = true

notMatchingBarcodesMask = "29\d{11}"

2912345678900 – первый штрих-код маркированного товара

4607022741898 – второй штрих-код маркированного товара

010291234567890021QWERTYUIOPASD1720101093RKWP – код маркировки, соответствующий первому штрих-коду товара

010460702274189821QWERTYUIOPASD1720101093RKWP – код маркировки, соответствующий второму штрих-коду товара

Panel
titleПример 1

Сканируем первый штрих-код маркированного товара "2912345678900".

Далее сканируем код маркировки, соответствующий второму штрих-коду товара "010460702274189821QWERTYUIOPASD1720101093RKWP".

Отсканированный штрих-код проходит по маске. Маркированный товар будет добавлен в чек.


Panel
titleПример 2

Сканируем второй штрих-код маркированного товара "4607022741898".

Далее сканируем код маркировки, соответствующий первому штрих-коду товара "010291234567890021QWERTYUIOPASD1720101093RKWP".

Отсканированный штрих-код не проходит по маске. Маркированный товар не будет добавлен в чек.



Panel
titleПример добавления товара с несоответствием ШК и КМ в пределах карточки товара

allowNotMatchingBarcodes = true

checkBarcodesOneArticle = true

4607022741896 – первый штрих-код маркированного товара из карточки товара

4607022741898 – второй штрих-код маркированного товара из карточки товара

010460702274189821QWERTYUIOPASD1720101093RKWP – код маркировки, соответствующий второму штрих-коду товара

Panel
titleПример 1

Сканируем первый штрих-код маркированного товара "4607022741896".

Далее сканируем код маркировки, соответствующий второму штрих-коду товара "010460702274189821QWERTYUIOPASD1720101093RKWP".

Маркированный товар будет добавлен в чек.


Из каталога

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

  1. В БД кассы для маркированного товара задать:
    • штрих-код маркированного товара, который соответствует штрих-коду из маркировки,
    • штрих-код, содержащий вес товара.

      Info

      Штрих-коды должны относиться к одному товару.


  2. Создать каталог, содержащий перечень маркированных товаров.
  3. В конфигурационном файле /linuxcash/cash/conf/ncash. ini.d/markedgoods.ini в секции [MarkedGoods] для параметра askForBarcodeFromCatalogs задать коды каталогов, которые содержат маркированные товары.
НаименованиеТип данныхОписаниеПримечания
askForBarcodeFromCatalogsлогическийЗапрашивать штрих-код товара, если он входит в каталог из списка и добавляется по коду маркировкиМожет указываться через запятую


Code Block
languagetext
titleПример настройки
[MarkedGoods]
...
; Запрашивать штрих-код товара, если он входит в каталог из списка и добавляется по коду маркировки
; Разрешить несоответствие штрих-кода из кода маркировки штрих-коду товара при условии, что оба штрих-кода относятся к одному товару, входящему в каталог из списка
; Отправлять в ФР штрих-код из кода маркировки
; По умолчанию "" 
;askForBarcodeFromCatalogs = "" 


Panel
titleПример с добавлением весового маркированного товара из каталога

askForBarcodeFromCatalogs = 2

"21???????????=BBBBBBBQQ.QQQX" – правило интерпретации штрих-кода из bcode.ini

4607042430633 – штрих-код маркированного товара из БД кассы (входит в каталог 2)

010460704243063321nqmQ&IjzWJ+T*93dGVz – код маркировки, штрих-код из которого есть в БД кассы

2103321055451 – штрих-код маркированного товара из БД с весом 5.545

Panel
titleПример последовательного сканирования кода маркировки и штрих-кода маркированного товара

При сканировании кода маркировки "010460704243063321nqmQ&IjzWJ+T*93dGVz" на экран будет выведено сообщение "Необходима дополнительная информация. Отсканируйте штрих-код товара".

Далее сканируем штрих-код маркированного товара с весом "2103321055451".

Маркированный товар будет добавлен в чек с количеством "5.545".

После закрытия чека в БД Documents таблицу Goodsitem будут записаны следующие данные:

  • bcode – 2103321,
  • excisemark – 010460704243063321nqmQ&IjzWJ+T*93dGVz,
  • additionalbarcode – 4607042430633.


Panel
titleПример последовательного сканирования штрих-кода маркированного товара и кода маркировки

При сканировании штрих-кода маркированного товара с весом "2103321055451" на экран будет выведен диалог сканирования кода маркировки.

Далее сканируем код маркировки "010460704243063321nqmQ&IjzWJ+T*93dGVz".

Маркированный товар будет добавлен в чек с количеством "5.545".

После закрытия чека в БД Documents таблицу Goodsitem будут записаны следующие данные:

  • bcode – 2103321,
  • excisemark – 010460704243063321nqmQ&IjzWJ+T*93dGVz,
  • additionalbarcode – 4607042430633.


По маске

Info

Реализовано только для молочной продукции.

Маркированный товар может содержать в коде маркировки вес товара. Для получения веса из маркировки, при добавлении товара в чек, необходимо в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/markedgoods.ini в нужной подсекции настроить маску с капчурингом weight для параметра mask.

Code Block
languagetext
titleПример настройки
;[MarkedGoods.Milk]
; Маркированное молоко
; Маска для проверки DataMatrix молочной продукции
;mask = "\s*01(?<barcode>[0-9]{14})(21.{13}\s*(17\d{6}|7003\d{10})|21.{6}|21.{8})\s*93.{4}(\s*3103(?<weight>\d{6}))?"


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

При сканировании кода маркировки " 0103041094787443215Qbag! 93Zjqw 3103000353 " в чек будет добавлен товар со штрих-кодом 3041094787443 и весом 0.353.

После закрытия чека в БД Documents таблицу Goodsitem будут записаны следующие данные:

  • bcode – 3041094787443 ,
  • excisemark – 0103041094787443215Qbag! 93Zjqw 3103000353 .

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

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

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

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

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

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

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

Чтобы разрешить ввод только текстовых данных со сканера в режиме клавиатурной эмуляции, необходимо установить значение настройки permittedInput=1.

Info
Соответственно, при значении настройки permittedInput=1 ввод бинарных данных со сканера, подключенного по com-порту, будет запрещен.

Чтобы разрешить ввод только бинарных данных со сканера, подключенного по com-порту, необходимо установить значение настройки permittedInput=2.

Info
Соответственно, при значении настройки permittedInput=2 ввод текстовых данных со сканера в режиме клавиатурной эмуляции будет запрещен.



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

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


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


Info

При необходимости настройку можно выносить в отдельную подсекцию [MarkedGoods.<имя_подсекции>], настройка из подсекции будет учитываться только при добавлении маркированного товара в чек сканированием кода маркировки.

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

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

Возврат маркированных товаров

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

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

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

  • выбрав товар из списка в режиме выбора позиций для возврата и считав код маркировки товара,
  • считав код маркировки товара.

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

  • при значении true при добавлении в чек товара для возврата на экран будет выведен диалог сканирования кода маркировки, в котором есть возможность добавить товар без маркировки,
  • при значении false при добавлении в чек товара для возврата на экран будет выведен диалог сканирования кода маркировки.
НаименованиеТип данныхВозможные значенияОписаниеПримечания
addWithoutScanMarkInBackBySaleлогический
  • true
  • false
Добавлять маркированные товары в чек возврата и в чек возврата по чеку продажи без ввода кода маркировкиПо умолчанию false


Code Block
languagetext
titleПример настройки
[MarkedGoods]
...
; Добавлять маркированные товары в чек возврата по чеку продажи без ввода кода маркировки
; По умолчанию false
;addWithoutScanMarkInBackBySale = false

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

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

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

Код маркировки, заданный вручную, для возврата товаров без ввода кода маркировки

В кассовом ПО Artix реализована возможность задавать вручную значение кода маркировки для товаров, добавленных в чек возврата без ввода кода маркировки. Значение кода маркировки регулируется параметром addWithoutScanMarkMarkingCode в конфигурационном файле /linuxcash/cash/conf/ncash. ini.d/markedgoods.ini в секции [MarkedGoods]:

  • если значение параметра задано, то при возврате товара данное значение будет сохраняться как код маркировки в формате Base64 в БД Documents в таблицу Goodsitem в поле markingcode,
  • если значение параметра не задано (по умолчанию), то:
    • при добавлении в чек товара в режиме возврата по чеку продажи в БД Documents в таблицу Goodsitem в поле markingcode будет сохраняться код маркировки, указанный в чеке продажи,
    • при добавлении в чек товара в режиме возврата код маркировки в БД сохраняться не будет.
Info

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


НаименованиеТип данныхВозможные значенияОписаниеПримечания
addWithoutScanMarkMarkingCodeстроковый
  • " " – пустое значение
  • значение кода маркировки

Код маркировки товаров, добавленных в чек возврата без ввода маркировки, который сохраняется в БД в формате Base64

По умолчанию " " пустое значение 


Code Block
languagetext
titleПример настройки
[MarkedGoods]
... 
; Код маркировки, который сохраняется для товаров, добавленных без ввода маркировки
; По умолчанию ""
addWithoutScanMarkMarkingCode = "Пример"


Info
iconfalse
В БД Documents в таблицу Goodsitem в поле markingcode в данном случае сохранится значение "0J/RgNC40LzQtdGA" ("Пример" в формате Base64).

Ограничения для добавления товара без сканирования кода маркировки

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

  1. Активировать плагин проверки ограничений в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/restrictions.ini в секции [plugins] с помощью параметра restrictions.

    НаименованиеТип данныхВозможные значенияОписание
    restrictionsстроковый
    • on
    • off
    Активация плагина проверки ограничений


  2. Указать роли, для которых разрешено добавление маркированного товара без сканирования кода маркировки. Данное поведение регулируется с помощью параметров addWithoutScanMarkRoles и addWithoutScanMarkInBackBySaleRoles в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/restrictions.ini в секции [Restrictions.Card.MarkedGoods].

    НаименованиеТип данныхОписаниеПримечания
    addWithoutScanMarkRolesстроковыйСписок ролей, которым разрешено добавлять маркированный товар без сканирования маркировки

    Список задается через запятую.

    По умолчанию ограничения не заданы

    addWithoutScanMarkInBackBySaleRolesстроковый

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


    Code Block
    titleПример настройки
    [plugins]
    ; Плагин проверки ограничений
    ;restrictions = off
    
    ... 
    ;[Restrictions.MarkedGoods]
    ; Настройка ограничений при работе с маркированными товарами
    
    ; Список ролей, которым разрешено добавлять маркированный товар без сканирования маркировки
    ; По умолчанию ""
    ;addWithoutScanMarkRoles = ""
    
    ; Список ролей, которым разрешено добавлять маркированный товар без сканирования маркировки
    ; при возврате по чеку продажи
    ; По умолчанию ""
    ;addWithoutScanMarkInBackBySaleRoles = ""


Проверка кодов маркировки товаров

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

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

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

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


Code Block
languagetext
titleПример настройки
[MarkedGoods]
...
; Проверка кода маркировки в проданной продукции на кассе
; По умолчанию true
;checkLocalUniqueness = true

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

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

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

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


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

enableMarkVerifyLocal

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


Code Block
languagetext
titleПример настройки
[MarkedGoods]
...
; Проверять коды маркировки на кассе
; По умолчанию false
;enableMarkVerifyLocal = false

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

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

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

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

НаименованиеТип данныхВозможные значенияОписаниеПримечания
enableMarkVerifyлогический
  • true
  • false
Проверка кодов маркировки на сервереПо умолчанию false
markVerifyUrlстроковый
Url сервера проверки кодов маркировки

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

Для работы с КС используется url "http://<host>:<port>/CSrest/rest/sales/exciseMark/status"

markVerifyTimeoutстроковый
Таймаут обращения к серверу проверки кодов маркировки в секундахПо умолчанию 30
ignoreMarkVerifyErrorsлогический
  • true
  • false
Игнорировать ошибки обращения к серверу проверки кодов маркировкиПо умолчанию true
skipCheckExciseMarkлогический
  • true
  • false
Игнорировать проверку АМ при возврате по чеку (для онлайн-чеков при некорректных АМ)По умолчанию false


Code Block
languagetext
titleПример настройки
[MarkedGoods]
...
; Проверка кодов маркировки на сервере
; По умолчанию false
;enableMarkVerify=false
; Игнорировать проверку АМ при возврате по чеку (для онлайн-чеков при некорректных АМ)
; По умолчанию false
;skipCheckExciseMark = false
; Url сервера проверки кодов маркировки
; Для работы с КС используется следующий url "http://'IP-адрес КС':8080/CSrest/rest/sales/exciseMark/status"
; По умолчанию http://localhost:8080
;markVerifyUrl=http://localhost:8080
; Таймаут обращения к серверу проверки кодов маркировки в секундах
; По умолчанию 30
;markVerifyTimeout=30
; Игнорировать ошибки обращения к серверу проверки кодов маркировки
; По умолчанию true
;ignoreMarkVerifyErrors=true

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

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

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

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

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

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

Для корректной проверки кодов маркировки на кассовом сервере также необходимо:

В настройках Artix Control Center:

  1. Перейти в меню "Настройки сервера" в раздел "Акцизная продукция".
  2. В настройке "Проверять список разрешенных к продаже кодов маркировки прочих товаров" установить значение "Проверять по коду маркировки".

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

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

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

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

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

Разделение настроек для разных категорий маркированных товаров

При необходимости настройки можно переопределить для каждой категории маркированных товаров. Таким образом для каждой подсекции маркированных товаров указываются свои правила поведения. Возможность выделения параметра в отдельную подсекцию указана в таблице:

Наименование настройкиСтатус
markedgoodsобщая
addWithoutScanMark
skipCheckExciseMark
allowNotMatchingBarcodes
askForBarcodeFromCatalogs
allowChangeQuantity
scanMarkInInventory
addWithoutScanMarkInBackBySale
markScanImage
checkBarcodesOneArticle
addWithoutScanMarkMarkingCode
markVerifyCrptUrl
enableMarkVerifyиндивидуальная
markVerifyUrl
markVerifyTimeout
ignoreMarkVerifyErrors
enableMarkVerifyLocal
mask
checkLocalUniqueness
allowUnmarked
ignoreCrptStatusValid
ignoreCrptStatusVerified
ignoreCrptStatusUtilised
ignoreCrptStatusRealizable
ignoreCrptStatusExpireDate
ignoreCrptStatusSold
ignoreCrptStatusIsBlocked
ignoreCrptStatusFound
permittedInput
ignoreCrptStatusSold
ignoreCrptStatusIsBlocked
ignoreCrptStatusFound

По умолчанию все настройки размещены в секции [MarkedGoods]. При необходимости все или часть индивидуальных настроек можно вынести в отдельную подсекцию [MarkedGoods.<имя_подсекции>]. Если в подсекции [MarkedGoods.<имя_подсекции>] указана только часть индивидуальных настроек, то для остальных настроек будет использовано значение из секции [MarkedGoods].

Info

В подсекции [MarkedGoods.<имя_подсекции>] обязательно должна быть указана маска для проверки Data Matrix.


Code Block
languagetext
titleПример разделения настроек
[plugins]
markedgoods = on

[MarkedGoods]
; Проверка кодов маркировки на сервере
; По умолчанию false
enableMarkVerify = true

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

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

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

; Проверять коды маркировки на кассе
; По умолчанию false
enableMarkVerifyLocal = false

; Добавлять маркированные товары в чек без ввода кода маркировки
; По умолчанию false
addWithoutScanMark = false

; Разрешить несоответствие штрих-кода из DataMatrix линейному штрих-коду товара
; По умолчанию false
;allowNotMatchingBarcodes = true

; Разрешить изменять количество для весового товара
; По умолчанию false
;allowChangeQuantity = true

; Сканирование кода маркировки для документа инвентаризации
; По умолчанию false
;scanMarkInInventory = true

;[MarkedGoods.Milk]
;mask = "\s*01(?<barcode>[0-9]{14})(21.{13}\s*(17\d{6}|7003\d{10})|21.{6}|21.{8})\s*93.{4}(\s*3103(?<weight>\d{6}))?"
; Проверка кодов маркировки на сервере
; По умолчанию false
enableMarkVerify = false
; Проверять коды маркировки на кассе
; По умолчанию false
enableMarkVerifyLocal = true
; Проверка кода маркировки в проданной продукции на кассе
; По умолчанию true 
checkLocalUniqueness = true
; Запрашивать линейный штрих-код, если товар входит в каталог из списка
; По умолчанию ""
;askForBarcodeFromCatalogs = "1"

;[MarkedGoods.Camera]
;mask = "01(?<barcode>[0-9]{14})21.{20}\s*91.{4}\s*92.{44}"
; Проверка кодов маркировки на сервере
; По умолчанию false
enableMarkVerify = true
; Проверять коды маркировки на кассе
; По умолчанию false
enableMarkVerifyLocal = false
; Проверка кода маркировки в проданной продукции на кассе
; По умолчанию true
checkLocalUniqueness = false

;[MarkedGoods.Common]
;mask = "01(?<barcode>[0-9]{14})21.{13}\s*91.{4}\s*92.{44}"
; Игнорировать ошибки обращения к серверу проверки кодов маркировки
; По умолчанию true
ignoreMarkVerifyErrors = false
; Проверка кода маркировки в проданной продукции на кассе
; По умолчанию true
checkLocalUniqueness = false

;[MarkedGoods.Water]
;mask = "01(?<barcode>[0-9]{14})21.{13}\s*93.{4}\s*"

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

Panel

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

Warning

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

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

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


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


Info

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


Info

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


Info

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

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


Note

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

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


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

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

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

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

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

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

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

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

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


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

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

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

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


Code Block
languagetext
titleПример настройки
[MarkedGoods]
...
; Проверка кодов маркировки на сервере честного знака
; По умолчанию 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/markedgoods.ini в секции [MarkedGoods]:

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


Tip

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



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


Info

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

После авторизации по токену УОТ (участника оборота товаров) в момент запуска кассы в системе цифровой маркировки "Честный знак" будет получен список 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 секунд


Code Block
languagetext
titleПример настройки
[CRPT]
; Настройки взаимодействия с ЦРПТ

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

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

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

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

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

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

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

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


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


Info
Чтобы добавить проверку кодов маркировки на сервере системы "Честный знак" для заданной категории маркированных товаров, необходимо скопировать данные настройки в подсекцию [MarkedGoods.<имя_подсекции>] в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/markedgoods.ini и отредактировать их. Если в подсекции [MarkedGoods.<имя_подсекции>] не указаны настройки для проверки кодов на сервере системы "Честный знак", то для нее будут использованы значения настроек из секции [MarkedGoods].

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

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

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

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

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

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

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

Tip

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

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

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

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

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

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

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

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

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

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

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

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

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


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


Info

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


Info

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

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

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