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

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


nomenklaturi:pozicii:maski

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

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

В номенклатура Позиции, таб „Баркодове“ се задава съответствието между този уникален номер и номера на позицията в номенклатурата.
Баркодове може да се асоциират както с артикул, така и с контрагент.

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

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

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

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

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

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

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

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

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

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

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

  1. Позиция - група от израза, от която се изтегля номерът на артикула (цифрите, които бъдат извлечени от групата се приемат директно за номер на артикула)
  2. Сериен/партиден номер - група, от която се изтегля сериен/партиден номер на артикула
  3. Баркод на позиция - група от израза, от която се изтегля поредица от символи, които се търсят като съответствие на Баркод/Позиция, чрез номера на артикула в баркода се идентифицира номерът на артикула
  4. Кол. - група, от която се изтегля количеството
  5. Цена без ДДС преди ТО - група, от която се изтегля цената
  6. Контрагент - група, от която се изтегля контрагентът
  7. Баркод на контрагент - служи да разпознае баркод на контрагент от номенклатурата баркодове на контрагента
  8. Роля на контрагента, с три опции:
    1. Източник - за да се постави контрагентът като източник, в баркода в групичката за „роля на контрагента“ трябва да пише „1“ (без кавичките)
    2. Посредник - за да се постави контрагентът като посредник, в баркода в групичката за „роля на контрагента“ трябва да пише „2“
    3. Получател - за да се постави контрагентът като получател, в баркода в групичката за „роля на контрагента“ трябва да пише „3“
  9. Клас номер - група, от която се изтегля номер на класа, според регистрираните класове документи
  10. Документ номер - група, от която се изтегля номер на документа
  11. Местоположение - група, от която се изтегля местоположението
  12. Цвят - група, от която се изтегля цветът
  13. Размер - група, от която се изтегля размерът

Пояснение:

Независимо, дали има настройка на Търговски документ, от която се определя дали баркодът на контрагент отива в Източник/Посредник/Получател, е необходимо да настроите възможността това да става и чрез маска, тъй като се използват с различно предназначение.
Идеята е да може в една и съща продажба да се сканират два различни баркода, от където чрез маската да се разпознае, че например единият баркод се отнася за Получател, а другият за Посредник.

Важно:

В Настройките на документи (търговски и финансови) в таб Други, има поле за „при избор на контрагент чрез баркод“, което работи само, ако преди това чрез маска в баркода не е разпозната ролята на контрагента (Източник/Посредник/Получател).

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

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

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

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

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

Възможно е баркодовете да съдържат серийни/партидни номера, които се приемат за „текст“ идвайки от баркода. В случай, че пред серийния/партидния номер има водещи нули и желаете те да се игнорират при сканиране, отпред пред групата за сериен/партиден номер се слага „0*“. Същевременно за групата, с която се описва серийният/партидният номер, не се слага твърдо брой символи, а се записват граници (отделят се със запетая).

Пример:

Маска ^30*([0-9]{1,8})$ - префикс 3; 0*-премахване на водещи нули; броя на символите за серийния/партидния номер може да е от 1 до 8.
Примерен баркод: 30003305007

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

  • Ако има Индекс на групата|Количество - тя е с най-висок приоритет;
  • Ако Количество|Количество е празна – за Количество се приема стойност 1-ца;
  • Ако Количество|Количество има стойност (например 5) - за Количество се взима тази стойност (т.е. за количество ще се постави 5).

Относно „Мерната единица“, по която ще се попълва съответното количество възможните стойности са следните: Подразбираща се мерна единица (подразбираща се ст-ст при нов запис); МЕ1; МЕ2; МЕ3 или МЕ4. Ако има попълнен индекс за количество в индексите, колона „Константи/Количество/Количество“ е неактивна.
За оптимизиране на сканирането на баркодове, можете да указвате дали дадена маска е активна или не чрез съответната отметка.

Важно:

При ъпгрейд от релийзи преди 2015.08 всички съществуващи маски стават активни и за мерна единица се попълва МЕ1.

При приемане на стока e много удобно, използвайки баркод четец, да се сканират етикетите на палети, кашони и т.н., като обикновено в тях доставчиците са кодирали информация, освен за артикул, количество и сериен/партиден номер, също така и за Срок на годност. По този начин на готово може да се попълни цялата необходима информация в документа за заприхождаване, без да се дописва нещо на ръка.
За покриването на този начин на работа в маските на баркодове може да се разпознава и попълва Срок на годност. Целта е при сканиране на баркод, съдържащ информация за Срок на годност, същият да се попълни в ТД, в таблица „Серийни/партидни номера“.

Тъй като различните стандарти използват различен формат за изписване на датата, в конфигурацията на маските има възможност да укажете формат за въвеждане на дата (YYMMDD или DDMMYYYY и т.н.).
В случай, че сканирането на баркод от етикет може да се извърши и при изписване на стока (продажба), където партидата вече може да има попълнен Срок на годност (още при доставката) съществуващият Срок на годност (въведен към партидата) е с приоритет. Ако липсва такъв, се взима този от баркода.

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

  • Дата на пакетиране
    * Най-добър до
    * За продажба до
    * Срок на плащане
    * Дата на производство
    * Срок на годност

Изброените дати може да се разпознават от маските на баркодовете, като всяка дата може да има собствена маска.
Попълването на тези полета става при: сканиране на баркод в ТД; ръчно писане в ТД; протокола за Атрибути на сериен/партиден номер.

Трябва да се има предвид, че взаимовръзката на полетата Дата на производство и Срок на годност се запазва. Т.е. ако няма зададени Брой и Мярка на Срок на годност и ако от баркода бъдат разпознати Дата на производство и Срок на годност, едно от полетата ще остане празно (Например, ако първоначално се попълни Дата на производство, а след това Срок на годност, тъй като няма на каква база от него да се изчисли Датата на производство, тя ще остане празна и обратно).

В практиката, когато се говори за малка вътрешна опаковка (например вафла), най-често баркодът съдържа само идентификация на артикула и нищо друго (пример: баркод по EAN13 стандарт). Когато се говори за голяма външна опаковка (например кашон от същите вафли), най-често се използва баркод, който съдържа повече информация. Пример: EAN128 стандарта, в себе си може да съдържа EAN13 идентификатора, Количество в определена мерна единица, Партида, Срок на годност и др.

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

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

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

Специфичен момент е, ако в маска има избрана мерна единица (първа, втора, …) и има количество в сканирания баркод (или като група или като константа), тогава се игнорира стойността на мерната единица от баркода на позицията и се гледа тази от маската.
Ако в маската е посочена подразбираща се мерна единица, тогава се взима подразбиращата се МЕ за баркода на позицията, ако няма се гледа подразбиращата се МЕ на сериен/партиден номер и най-накрая подразбиращата се МЕ на позицията (ако няма друга).

За да може да се реализира запомняне на местоположението за Източник, Посредник или Получател при сканиране с баркод четец в ТД, в номенклатурата на Маските на баркодове е налична възможност за посочване и разпознаване на произволни стойности в баркодовете на база три „Универсални групи 1-3“. За всяка група се задава Индекс (поредност в маската) и Тип, относно това какво представлява стойността в тази група. За в бъдеще това може улесни възможността за разпознаване на други типове стойности в баркодовете, без това да налага добавяне на нови полета в маските.

Текущо, чрез тези три групи е възможно разпознаване на подразбиращи се Местоположения за Източник/Посредник/Получател. При разпознаване в баркод на някое от тях, то подменя съответното подразбиращо се местоположение в ТД.

Тъй като при промени в номенклатурата на Маски на баркодове е необходимо те да влизат в сила веднага, без да се налага рестарт на системата, същите са включени в „Изчистването на кешираните данни“ с цел опресняване на данните.

ПРОВЕРКА НА БАРКОД

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

Примери:

Важно:

При сканиране с баркод четец трябва да се внимава дали сте на латиница или кирилица. Например, ако сте на кирилица, вместо баркод 101#000051 ще дойде 101+000051.
Баркод четецът е прост емулатор на клавиатура. При изписване в текстов редактор на #, ако езикът е на USA (английски) ще се изпише „#“, но ако е UK ще се изпише „£“, а когато е на кирилица (БДС) ще изпише „+“.
За да не се получават подобни проблеми, трябва да се използват изцяло числови баркодове или за разделител да се ползва символ, който се изписва с натискане на един и същ бутон във всички популярни клавиатурни подредби.

Вижте още Специфики при сканиране с баркод четец на баркодове с цифрено/буквено изражение.

Допълнителна информация: Основни табове и бутони, Редакция на изгледи, Таблична част, Моделиране на таблици, Филтриране на данни.

nomenklaturi/pozicii/maski.txt · Последна промяна: 2022/08/24 07:25 от t.lalova