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

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


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. Документ номер - групата, от която се изтегля номера на документа
  9. Местоположение - групата, от която се изтегля местоположението
  10. Цвят - групата, от която се изтегля цветът
  11. Размер - групата, от която се изтегля размерът
  12. Баркод на контрагент - служи да разпознае баркод на контрагент от номенклатурата баркодове на контрагента
  13. Роля на контрагента, с три опции:
    1. Източник - за да се постави контрагента като източник, трябва в баркода в групичката за „роля на контрагента“ да пише „1“ (без кавичките)
    2. Посредник - за да се постави контрагента като посредник, трябва в баркода в групичката за „роля на контрагента“ да пише „2“
    3. Получател - за да се постави контрагента като получател, трябва в баркода в групичката за „роля на контрагента“ да пише „3“

Пояснение:

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

Важно:

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

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

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

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

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

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

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

Пример:

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

За по-голяма яснота, относно начина на работа и съобразно идентичността на системата от релийз 2016.1 бандове Множител, Позиция, Контрагент и Количество се обединяват под един общ банд „Константи“, а колона „Цена“ от банд „Индекс на групата“ се преименува на „Цена без ДДС преди ТО“.

Често в практиката баркодовете на позициите, които се използват не са по първа мерна единица, а по втора, трета и т.н.. До момента при сканиране на баркод, даже и подразбиращата се мерна единица на артикула да е различна от МЕ1, то сканираното количество се вписва в Кол.1.

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

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

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

Създадени са и други две нови колони, относно маските - „Коментар“ и „Активна ДА/НЕ“ (по подразбиране ДА при нов запис). Наличието на активни и неактивни маски ще оптимизира сканирането на баркодове на база само активните маски.

Важно:

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

В практиката при зареждане на позиции в документите чрез използване на баркод четец и работа с местоположения е удобно при разпознаване на баркода да се разпознава и кое местоположение е сканирано (Източник, Посредник или Получател).

За реализацията на това от релийз 2016.12 в номенклатурата на Маските на баркодове е добавена възможност за указване (разпознаване от баркода) ролята на местоположението (Източник-1, Посредник-2 или Получател-3). Подобно на контрагентите e създадена отделна група в индексите на маските за Роля на местоположението. Съобразено е посочването на роля да може да се задава и в маски за Позиции. Новата група се разпознава и при тест за проверка на маските.

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

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

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

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

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

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

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

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

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

Примери:

За да се улесни попълването на условията на отделните промоции и да е по-ясно кои колони изискват попълването и на други свързани с тях колони, в релийз 2016.1 е направено така, че съответните колони да се активират, само когато се пише в колоните, с които влияят едновременно. Приложена е и промяна на цвета на неактивните колони.

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

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

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

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

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

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

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

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

nomenklaturi/pozicii/maski.1498224769.txt.gz · Последна промяна: 2018/01/11 15:29 (външна редакция)