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

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


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.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Примери:

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

nomenklaturi/pozicii/maski.1517577534.txt.gz · Последна промяна: 2018/02/02 13:18 от k.kyurkchieva