Настройка кодов "Честный Знак"
Проверка DataMatrix-кода
https://честныйзнак.рф/upload/Структура DataMatrix.pdf или Структура DataMatrix_ЧЗ.pdf.
В файле находится описание кодов Датаматрикс. Обновляется примерно раз в 6 мес.
Проверка DataMatrix-кода на соответствие стандарту проверяется регулярными выражениями
Новые настройки в файле abonementmanager.ini
[TrueMark]
RegExpListFillMode=0
Порядок формирования списка для проверки соответствия трека Честному знаку
0 - Если [TrueMark.RegExp] не пустая, то используется только содержимое [TrueMark.RegExp], в противном случае используются только встроенные регулярки
1 - Если [TrueMark.RegExp] не пустая, то используется только содержимое [TrueMark.RegExp] и этот список дополняется встроенными регулярками
Нижеперечисленные регулярные выражения являются встроенными:
[TrueMark.RegExp]
0=^01(0(\d{13}))21(.{13}).*$
1=^\(01\)(0(\d{13}))\(21\)(.{13}).*$
2=(^0(\d{13}))(.{7}).{4}.{4}$
3=(^0(\d{13}))(.{13}).{4}$
4=(^0(\d{13}))(.?.?.?.?.?.?.?.?.?.?.?.?.?)$
Для GTIN
0=(0(\d{13}))(){1,14}$
Регулярные выражения на проверку соответствия трека Честному знаку
Если список не пустой, то он используется в первую очередь. Смотри также RegExpListFillMode
У регулярных выражений должно быть минимум 3 группы (3 блока круглых скобок)
Группа 1: 14 символов - код группы товара ()
Группа 2: 13 символов - Бар-код товара (Обычно это 1 группа без первого символа "0", если первый символ - это "0")
Группа 3: 13 символов или меньше - Индивидуальный серийный номер единицы товара
Группа 4: Дополнительная - Цена единицы измерения товара. Если в считанной последовательности по стандарту GS1 содержится дополнительный идентификатор применения «8005», то эта группа также участвует в формировании тега 1162
Тег 1162 формируется конкатенацией Группа 1 + Группа 3 + Группа 4
Группа 2 служит для быстрого поиска товара по его Бар-коду в справочнике услуг Абонемента
При задании регулярных выражений в ini-файле следует использовать следующий формат: НазваниеПараметра=РегулярноеВыражение
Пример настройки сканера
abonementmanager.ini
[TCPCardReader]
UseTCPCardReader=1
UseAnySymbolsInBarCode=1
PORT=7760
HOST=127.0.0.1
StartTermChars=;
FinishTermChars=]#13;#10;#0;
BarCodePrefix=Bar
PrefixMaskForProhibitDecode =Bar*
TCPCardReader.ini
[READER1]
;Честный знак
COMPORT=8
COMPORTPARAMS=baud=9600 data=8 parity=N stop=1
Prefix=;Bar
Postfix=]
;использовать decodecards.dll
useDecodeCards=0
StartTermChars=C;
FinishTermChars=?#13;#10;#0;
TrackLogFile=
ConvertTrackLog=0
IncludeTypeStartTermChar=0
IncludeStartTermChar=0
NeedCheckAndReopenCom=1