В шаблонах штрихкодов (номенклатуры, ячеек, палет) можно использовать регулярные выражения. Шаблон состоит из односимвольных или многосимвольных литералов, операторов или конструкций.
В регулярных выражениях можно использовать как цифры, так и буквенные символы латинского алфавита (в верхнем и нижнем регистре).
Шаблоны штрихкода с регулярными выражениями задаются примерно такого вида:
{Позиция:@[A-D]}{Barcode:@[0-9]+} |
Позиция, Barcode — в какую колонку будут сохраняться данные, найденные по этому шаблону (названия в шаблоне должны соответствовать названиям колонок, если в колонках не найдено такое название, то данные по этому названию никуда не записываются).
-
@ — означает, что после этого символа будет идти регулярное выражение;
-
[A-D] — означает буквенные символы латинского алфавита в верхнем регистре от A до D;
-
[0-9]+ — означает одна или несколько десятичных цифр (если нет знака «+» [0-9] — означает одна десятичная цифра).
Регулярное выражение используется для проверки соответствия строки шаблона
Символ регулярного выражения |
Значение выражения |
Фактическая отработка в шаблонах |
[\w]* |
ноль или более символов из указанного набора |
поддерживается |
[A-D]* |
||
[\W]* |
ноль или более буквенных символов, не являющихся символами латинского алфавита, десятичными цифрами или символами _ |
поддерживается |
[0-9]+ |
одна или несколько десятичных цифр |
поддерживается |
[0]/[N] |
явно указанное число/буква. В данном примере '0' и 'N' |
поддерживается |
[\w]+ |
один или более буквенных символов латинского алфавита, десятичных цифр или или символов _ |
поддерживается |
[\W]+ |
один или более символов, не являющиxся буквой латинского алфавита, десятичной цифрой или или символом _ |
поддерживается |
[A-Da-d] |
один буквенный символ латинского алфавита в верхнем или нижнем регистре от A до D |
поддерживается |
Для шаблонов [\W], [\w] и [\W]* помимо букв и цифр, ещё учитывается символ подчёркивания "_"
Отладить и протестировать шаблоны с регулярными выражениями можно здесь http://regexstorm.net/tester.
Пример 1 | Шаблон номенклатуры с регулярными выражениями
Выгруженные данные:
Шаблон имени |
Шаблон штрихкода |
45{tmp:@[0]*} {Barcode:@[\w]+} |
{tmp:@[0]*} [0]* указывают на один или более буквенных символов латинского алфавита (в верхнем и нижнем регистре) или десятичных цифр. {Barcode:@[\w]+} [\w]+ означает один или более буквенных символов латинского алфавита (в верхнем и нижнем регистре) или десятичных цифр |
Сканируемые (вводимые) данные:
Штрихкоды: «04Z67», «451799067», «23GH67», «450004Е87»
Разбор по шаблону:
«04Z67» не подходит к шаблону, нет префикса 45. «451799067» подходит к шаблону. «23GH67» не подходит к шаблону, нет префикса 45. «450004Е87» подходит к шаблону. |
Пример 2 | Шаблон номенклатуры с регулярными выражениями
Выгруженные шаблоны:
45{tmp:@[0-9]+}{Barcode:@[\w]+} 45{tmp:@[0]*}{Barcode:@[\W]+} 45{tmp:@[0]*}{Barcode:@[\w]+} {Префикс:@[\d]{2}}{tmp:@[0]*}{Barcode:@[\w]+} |
Где
45{tmp:@[0-9]+}{Barcode:@[\w]+}
-
[0-9]+ — означает одна или несколько десятичных цифр;
-
[\w]+ — означает означает один или более буквенных символов латинского алфавита (в верхнем и нижнем регистре) или десятичных цифр;
45{tmp:@[0]*}{Barcode:@[\W]+}
-
[0]* — указывают на один или более буквенных символов латинского алфавита (в верхнем и нижнем регистре) или десятичных цифр;
-
[\W]+ — означает любой символ, не являющийся буквой или цифрой;
45{tmp:@[0]*}{Barcode:@[\w]+}
-
[0]* — указывают на один или более буквенных символов латинского алфавита (в верхнем и нижнем регистре) или десятичных цифр;
-
[\w]+ — означает означает один или более буквенных символов латинского алфавита (в верхнем и нижнем регистре) или десятичных цифр;
{Префикс:@[\d]{2}}{tmp:@[0]*}{Barcode:@[\w]+}
-
[\d]{2} — означает две любые десятичные цифры;
-
[0]* — указывают на один или более буквенных символов латинского алфавита (в верхнем и нижнем регистре) или десятичных цифр;
-
[\w]+ — означает означает один или более буквенных символов латинского алфавита (в верхнем и нижнем регистре) или десятичных цифр.
Сканируемые (вводимые) данные: Штрихкод: «4500000023GH67»
Разбор по шаблону:
При вводе штрихкода «4500000023GH67», будет производиться поиск подходящего шаблона.
45{tmp:@[0-9]+}{Barcode:@[\w]+} - шаблон не подходит, Barcode не будет найден. 45{tmp:@[0]*}{Barcode:@[\W]+} - шаблон не подходит, Barcode не будет найден. 45{tmp:@[0]*}{Barcode:@[\w]+} - шаблон подходит |
{Префикс:@[\d]{2}}{tmp:@[0]*}{Barcode:@[\w]+} — шаблон подходит, но он слишком общий и к нему подойдут штрихкоды с другими префиксами, состоящие из 2 цифр.
Пример 3 | Шаблон палет с регулярными выражениями
Выгруженные шаблоны:
{Позиция:@[A-D]}{Номер:@[0-9]+} {Палета:@[A-Da-d]}{Номер:@[0-9]} {Позиция:@[A-Da-d]}{Номер:@[0-9]+} {Бочка:@[A-Da-d]}{Номер:3} |
Где
{Позиция:@[A-D]}{Номер:@[0-9]+}
-
[A-D] — означает буквенные символы латинского алфавита в верхнем регистре от A до D, [0-9]+ - означает одна или несколько десятичных цифр;
{Палета:@[A-Da-d]}{Номер:@[0-9]}
-
[A-Da-d] — означает буквенные символы латинского алфавита в верхнем и нижнем регистре от A до D, [0-9] - означает одна десятичная цифра;
{Позиция:@[A-Da-d]}{Номер:@[0-9]+}
-
[A-Da-d] — означает буквенные символы латинского алфавита в верхнем и нижнем регистре от A до D, [0-9]+ - означает одна или несколько десятичных цифр;
{Бочка:@[A-Da-d]}{Номер:3}
-
[A-Da-d] — означает буквенные символы латинского алфавита в верхнем и нижнем регистре от A до D, {Номер:3} - цифры после «:» означают количество символов в параметрах.
Сканируемые (вводимые) данные:
Штрихкод: «b123»
Разбор по шаблону:
При вводе штрихкода контейнера «b123», будет производиться поиск подходящего шаблона.
{Позиция:@[A-D]}{Номер:@[0-9]+} - шаблон не подходит, не совпадает регистр буквенного символа {Палета:@[A-Da-d]}{Номер:@[0-9]} - шаблон не подходит, не хватает цифровых символов {Позиция:@[A-Da-d]}{Номер:@[0-9]+} - шаблон подходит {Бочка:@[A-Da-d]}{Номер:3} - шаблон подходит |
Результат:
В данном примере подходят 2 шаблона {Позиция:@[A-Da-d]}{Номер:@[0-9]+} и {Бочка:@[A-Da-d]}{Номер:3} у них подходят как буквенные части так и цифровые.
Пример 4 | Шаблон ячеек с регулярными выражениями
Выгруженные данные:
Шаблон имени |
Шаблон штрихкода |
99{Стеллаж:@[A-Za-z]{3}}{Позиция:@[0-9]+} |
{Стеллаж:@[A-Za-z]{3}} [A-Za-z] означает буквенные символы латинского алфавита в верхнем и нижнем регистре {3} означает число буквенных символов штрихкода {Позиция:@[0-9]+} [0-9]+ означает одна или несколько десятичных цифр |
Сканируемые (вводимые) данные
Штрихкоды: «99SDF8», «99fgh786», «99WJG6R3», «99ФБУ63», «99WG6», «99WGH»
Разбор по шаблону
Ячейка «99SDF8» подходит к шаблону. Ячейка «99fgh786» подходит к шаблону. Ячейка «99WJG6R3» не подходит к шаблону, лишние символы. Ячейка «99ФБУ63» не подходит к шаблону, не совпадает буквенная часть (русские буквы) в «Стеллаж». Ячейка «99WG6» не подходит к шаблону, не хватает буквенных символов в «Стеллаж». Ячейка «99WGH» не подходит к шаблону, нет символов «Позиция». |
Результат:
В данном примере к шаблону подходят ячейки «99SDF8», «99fgh786».
Пример 5 | Шаблон ячеек с регулярными выражениями
Выгруженные данные:
Шаблон имени |
Шаблон штрихкода |
{Ряд:@[A-F]}{Позиция:@(0[1-9]|[1-2][0-9]|3[0-5])}{Этаж:@[1-3] |
{Ряд:@[A-F]} [A-F] означает буквенные символы латинского алфавита в верхнем регистре от A до F {Позиция:@(0[1-9]|[1-2][0-9]|3[0-5])} (0[1-9]|[1-2][0-9]|3[0-5]) означает число из десятичных цифр от 01 до 35 {Этаж:@[1-3]} [1-3] означает одна из цифр от 1 до 3 |
Сканируемые (вводимые) данные: штрихкоды: «A93», «F352», «R213», «A362», «B154», «b282»
Разбор по шаблону
Ячейка «F352» подходит к шаблону. Ячейка «A093» подходит к шаблону. Ячейка «A93» не подходит к шаблону, неверно указана «Позиция», не может быть 9, необходимо вводить 09. Ячейка «R213» не подходит к шаблону, неверно указан «Ряд». Ячейка «A362» не подходит к шаблону, неверно указана «Позиция», превышает число 35. Ячейка «A02» не подходит к шаблону, неверно указана «Позиция», не может быть 0. Ячейка «B154» не подходит к шаблону, не верно указан «Этаж», не может превышать 3. Ячейка «b282» подходит к шаблону. |
Результат:
В данном примере к шаблону подходят ячейки «A093», «F352».
Обратите внимание. Какой регистр в регулярных выражениях заявлен в ШК, такой и придет обратно. Если же при сканировании используется классы CellSelectAction и функция ProcessBarcodeInt то, в действиях выбора ячейки будет убрано приведение к верхнему регистру.
Статьи по теме: