Инструменти за потребители

Инструменти за сайта


nomenklaturi:pozicii_i_grupi:maski

Маски на баркодове

Номенклатури > Позиции и групи > Маски на баркодове

В най-простия си вид баркодовете най-често се използват за задаване на уникален в световен мащаб номер на артикул.

SelMatic Plus има специална номенклатура Съответствия баркодове - позиции, с която се намира съответствието между този уникален номер и номера на позицията в номенклатурата.
Баркодове може да се асоциират както с артикул, така и с контрагент.

В един баркод може да бъде кодирана информация освен за номера на артикула, така и за неговата тежест/количество, цена, сериен номер и т.н. Това се прави най-често, ако във Вашата фирма имате електронна везна, с която се претегля артикула, след което везната автоматично печата етикет с баркод, в който се закодира номера на артикула и неговата тежест.

За да може тази информация да се използва, трябва баркода да бъде разпознат, че е от такъв „особен“ тип, а не е обикновен баркод, представляващ просто уникален номер на артикула.
В програмата се прави проверка на маската на баркода и при грешка в нея, софтуера извежда съобщение за това, в коя маска е грешката.

Маската представлява низ от знаци, които определят правилата, по които се извлича информацията от баркода. Системата, по която се задават тези знаци е известна като „Регулярен израз“.

Пример:

Баркод: 24 000200 2569 2 (шпациите са поставени единствено за по-лесно разчитане на отделните групи)

Нека в този баркод е кодиран номера на артикула и неговата тежест. Първите две цифри (24) указват, че това е теглови баркод, 000200 е кода на артикула, 2569 е теглото (2.569 кг) и 2 е проверовъчната (check) сума на баркода (тази последна цифра се използва, за да се провери дали баркода е прочетен правилно и по тази причина не представлява практически интерес за потребителя).

Моля обърнете внимание, че от баркода се извлича директно номера на артикула, така както той се води в номенклатура Позиции.

Необходимо е да се „обясни„ на програмата, че когато срещне баркод:
1.Започващ с 24, 2.след което следват точно 6 цифри от 0 до 9, 3.след което следва група от 4 цифри от 0-9, 4.след което завършва на една цифра от 0-9

да го разпознае и да отдели групичката от 6 цифри като номер на артикула, а групичката от 4 цифри след нея като тежест на артикула, при това е необходимо тази тежест да бъде разделена на 1000, за да се получи в килограми.

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

Регулярният израз (маска), който трябва да се въведе е: 24([0-9]{6})([0-9]{4})([0-9]{1})

Описание на регулярните изрази

Израза започва с 24, т.е. маската изисква прочетеният баркод задължително да започне с цифрите 2 и след това 4.

Обикновените '(' и ')' скоби указват, че това е поредната група, която ще бъде разпознавана.

Вътре в групата, в квадратни скоби се изброяват възможните символи, които могат да следват, в случая [0-9] означава цифрите от 0 до 9 включително. Възможно е да се напише и маска съдържаща други символи, като например [0-9abcABC], означаваща цифрите от 0 до 9 и буквите a, b,c, A, B и C (малките и главните букви са различни). Ако е необходимо да се направи маска, в която да участва символа тире, се изписва (примерно) [a-z/-], т.е. буквите от a до z или тире.

Във фигурните скоби се изписва броят знаци, които се очакват от текущата група. Обърнете внимание, че примерно {5} означава точно пет знака на дадената позиция.

Подробно описание на регулярните изрази (на български) можете да намерите на адрес http://python-bg.sourceforge.net/regex-1.0.1/regex.html

ИЗВЛИЧАНЕ НА ИНФОРМАЦИЯТА

След като баркода бъде разпознат, е необходимо да се укаже от коя група (заградена в обикновени скоби) каква информация ще се извлича.

В колони „ИНДЕКС“ се въвежда номера на групата, от която ще се черпи информацията.

1. Позиция - групата от израза, от която се изтегля номера на артикула (каквито цифри се извлечат от групата се приемат директно за номер на артикула)
2. Код съответствие - групата от израза, от която се изтегля поредица от символи, които после се търсят в съответсвието на Баркод/Позиция, от където в крайна сметка се намира номера на артикула
3. Количество - групата, от която се изтегля количеството
4. Сериен номер - групата, от която се изтегля серийния номер на артикула
5. Контрагент - групата, от която се изтегля контрагента
6. Документ тип - групата, от която се изтегля типа на документа
7. Документ номер - групата, от която се изтегля номера на документа
8. Комплект № - групата, от която се изтегля номера на комплект
При сканиране на баркод, маските разпознават номера на комплекта, ако той е закодиран в баркoда и разпознатия комплект се добавя с количество 1 (ако в баркода има закодирано количество, се попълва то).
В случай, че в документа вече е добавен същия комплект, то неговото количество се увеличава с 1 (ако в баркода има закодирано количество, се увеличава с него).

Колона Позиция № в повечето случаи не се въвежда, но при използване, например на тегловен баркод се ползва.

Колона Множител количество се попълва, ако баркода съдържа количество на позицията. След като количеството бъде извлечено, то се умножава по множител количество и се подава като стойност за количество, от баркода.

Колона Приоритет се попълва, тъй като е възможно, няколко маски едновременно да отговарят на един и същ баркод.
Баркода се съпоставя последователно на маските, сортирани възходящо, по стойността на техния приоритет.

Примери

РЕАЛИЗАЦИЯ НА ПЪРВОНАЧАЛНИЯ ПРИМЕР

За горния пример, трябва да се въведе следното:

Маска: 24([0-9]{6})([0-9]{4})([0-9]{1})
Индекс|Позиция: 1
Индекс|Код на съответствие:(<Няма>)
Индекс|Количество: 2
Индекс|Сериен номер:(<Няма>)
Индекс|Останали колони:(<Няма>)
Множител количество: 0.001
Приоритет: -1
Позиция №: <Не се въвежда>

1. Колона Индекс|Позиция указва, че номера на артикула трябва да се извлече от първата група (от 6 числа).
2. Kолона Индекс|Код на съответствие не се използва (програмата изписва „<Няма>„).
3. В колона Индекс|Количество е поставено числото 2, указващо, че количеството ще се извлече от втората разпозната група от 4 числа.
4. Kолона Индекс|Сериен номер и останалите колони от Индекс не се използват.
5. В колона Множител количество е поставено 0.001, т.е. след като количеството бъде извлечено (за нашия пример 2569) то се умножава по 0.001, с което се получава 2.569 и това се подава като стойност за количеството от баркода.
6. Колона Позиция № се оставя празна

ОЩЕ ПРИМЕРИ

Примерен входящ баркод: 2400020025692.
Извличане само на кода на артикула, намиращ се от 9 до 12 позиция

Маска: 24000200([0-9]{4})([0-9]{1})
Индекс|Позиция: 1
Индекс|Останали колони (<Няма>)
Множител количество: 1
Приоритет: -1
Позиция №: (<Не се въвежда>)

Извличане на кода на артикула, намиращ се от 3 до 9 позиция, тежест намираща се от 10 до 12 позиция, като тежестта трябва да може да бъде от 0.001 грама до 999 килограма.

Очевидно последните три цифри не са достатъчни, за да се кодира в тях от 0.001 до 999, тъй като не се знае къде е десетичната точка.
Прост начин за това е някоя от цифрите на баркода да указва мерната единица, например грамове или килограми. Например баркодовете започващи с 22 могат да са за леките артикули, а с 24 за тежките. Ще бъде необходимо да се въведат две маски:

Първа Маска: 22([0-9]{7})([0-9]{3})([0-9]{1})
Индекс|Позиция: 1
Индекс|Останали колони(<Няма>)
Индекс|Количество: 2
Множител количество: 0.001
Приоритет: -1
Позиция №: (<Не се въвежда>)
Втора Маска: 24([0-9]{7})([0-9]{3})([0-9]{1})
Индекс|Позиция: 1
Индекс|Останали колони(<Няма>)
Индекс|Количество: 2
Множител количество: 1
Приоритет: -1
Позиция №: (<Не се въвежда>)

И така, ако баркода започва с 22 ще бъде разпознат от първата маска и извлеченото количество ще бъде умножено по 0.001, ако започва с 24 ще бъде умножено с 1 и ще остане непроменено.

Задаване на маска, разпознаваща теглови баркод на друга фирма

Баркодовете често се печатат от самите производители на стоката и техните кодове на артикули нямат никаква връзка с използваните в SelMatic Plus. В такъв случай извличането на кода на артикула няма смисъл, без да се зададе съотвествието на кода на производителя с кода използван в SelMatic Plus.

За да се зададе това съотвествие се използва колона Позиция №. Регулярният израз (маската) се използва, за да се „разпознае“ баркода и от него да се извлече количеството.

Необходими настройки за примера:

Нека имаме няколко еднакви артикула с различна тежест, на които производителя е поставил теглови баркодове. Всички баркодове започват с едни и същи 7 цифри, следвани от 5 цифри съдържащи теглото, следвани от 1 цифра за проверовъчна сума.

Нека номера на позицията на тези артикули, в базата данни на фирмата, е например 1234.

Пример:

2400020 02569 2
2400020 01500 3

Необходимо е да се създаде маска, която да указва, че когато се срещне баркод започващ с 2400020, от него трябва да се извлече теглото на артикула с номер 1234, като това тегло трябва да се раздели на 0.001 за да се получи в килограми.

Ето каква трябва да бъде тя:

Маска: 2400020([0-9]{5})([0-9]{1})
Индекс|Позиция: -1 (<Няма>)
Индекс|Останали колони:(<Няма>)
Индекс|Количество: 1
Множител количество: 0.001
Приоритет: -1
Позиция №: 1234

Извличане на серийни номера

Най-често серийните номера се поставят на отделен етикет върху стоката. В тези случаи НЕ Е НЕОБХОДИМО да конфигурирате SelMatic Plus по какъвто и да е било начин - просто прочетете баркода със скенера, докато се намирате в Асоцииране нa серийни номера.

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

Както и при всички примери досега, достатъчно е да създадете маска, която да разпознае баркода и в колона „Сериен номер“ да укажете номера на групата, от която той да се изтегли.

Задаване на маска, разпознаваща Контрагент

За да може да изберете клиент чрез баркода на клиентската му карта, трябва да създадете маска на баркод за контрагент.

В този случай, в колона Индекс|Контрагент се попълва 1.

Пример

Маска: 123([0-9]{6})
Индекс|Позиция:(<Няма>)
Индекс|Останали колони:(<Няма>)
Индекс|Контрагент: 1
Индекс|Количество: (<Няма>)
Множител количество: 1
Приоритет: -1
Позиция №: (<Не се въвежда>)

При така въведената маска, след сканиране например на баркод 123456, ще се зареди клиент с този баркод на клиентската му карта.

С бутон може да проверите, доколко въведената маска е правилно записана.
След сканиране (вписване) на произволен баркод, отговарящ на маската, излиза съобщение дали е намерена маска или не.

Допълнителна информация: Менюта, Бутони и Таблична част.

nomenklaturi/pozicii_i_grupi/maski.txt · Последна промяна: 2018/01/11 15:34 от 127.0.0.1