Použítí čárových kódů ve standardu GS1

PříspěvekNapsal: 09.01.2017 15:30
od jan.havranek
Systém GS1 je mezinárodní identifikační standard pro výměnu dat v různých odvětvích (průmyslová výroba, malobchod, logistika, doprava, zdravotnictví). Detaily standardů jsou uvedeny na stránkách správce standardů GS1.
http://www.gs1cz.org/
http://www.gs1.org/

V rámci GS1 se pro automatizované zpracování dat používají standardizované formáty čárových kódů,
do kterých se pomocí tvz. aplikačních identifikátorů (AI) kódují různé obchodní a logistické informace.

Z hlediska použití v HELIOS Orange jsou nejčastější tyto údaje (aplikační identifikátory):

AI (01)
  • tzv. GTIN (Global Trade Item Number)
  • jde o identifikaci zboží, většinou je údaj naplněn čárovým kódem položky
  • tento AI je číselný a má pevnou délku 14 znaků, v EU se obvykle plní hodnotou EAN13 (GTIN-13), které musí přecházet nula (tvz. levostranná nula + 13 číslic)
AI (10)
  • šarže/dávka, obvykle se plní výrobním číslem položky
  • tento AI je textový a má délku proměnnou (1-20 znaků)
AI (17)
  • datum expirace
  • identifikátor je číselný, má pevnou délku (6 znaků) a musí být ve tvaru RRMMDD
AI (37)
  • počet logistických jednotek
  • identifikátor je číselný, musí to být celé číslo a má proměnnou délku (1-8 znaků)

Vzorový čárový kód s aplikačními identifikátory (GS1-128)
GS1BCvzor.png
GS1BCvzor.png (2.68 KiB) Zobrazeno 13989 krát

V rámci čárového kódu mohou být použity i další identifikátory GS1, podle potřeby.
Pravidlem je, že mezi identifikátorem s proměnnou délkou a následujícím identifikátorem musí být umístěn oddělovací ASCII symbol (viz popis typů čárových kódů).
Aplikování GS1 pro tisk čárových kódů je možné v HELIOS Orange prostřednictvím komponenty ReportBuilder (RB) - nástroj pro tvorbu tiskových formulářů.



1D (jednorozměrný) čárový kód GS1-128
  • v RB je třeba použít grafický objekt BarCode
  • objekt je třeba přes Nastavení přepnout na typ Code 128 a vypnout Automatické kódování
  • do objektu se pomocí Calcu vloží potřebné řídící ASCII symboly, aplikační identifikátory (AI) a samotná data z datových zdrojů
  • pro GS1 se používá CODE 128, subset A, řídícím ASCII symbolem pro přepnutí subsetu je char(208), ten musí být vždy na začátku celého kódu
  • pro uvození GS1 v CODE 128 se používá tzv. fukční znak (FNC1) který je vyjádřen ASCII symbolem char(207), ten je umístěn vždy jako druhý v kódu
  • FNC1, tedy char(207) musí být také umístěn jako oddělovač za každým AI s proměnnou délkou, pokud za takovým následuje další AI
Více informací ke CODE 128 v RB na stránkách výrobce http://www.digital-metaphors.com:8080/index.php?title=RCL/BarCode/Manual_Encode_128

GS128_1.png
GS128_1.png (35.97 KiB) Zobrazeno 14007 krát


Příklad RB kódu (Calcu) pro GS1 128:
Definice formuláře > záložka Kalkulace > objekt BarCodeNNN > událost OnPrint:
Kód: Vybrat vše
{deklarace proměnné BC14, ta lze použít pro doplnění čárového kódu položky nulami, do pevné délky 14 znaků}
var BC14:string;

{přiřazení datového pole čárový kód položky do proměnné BC14 a doplnění nulami zleva}
begin
BC14:=xPohybyZbozi_15['BarCode'];
  while length(BC14)<14 do BC14:='0'+BC14;

{naplnění dat do čárového kódu}
BarCode1.Data:=
chr(208)                                                               {uvození subsetu A CODE 128}
+ chr(207)                                                             {uvození GS1, tedy znak FNC1}
+ '01'                                                                 {AI - GTIN}
+ BC14                                                                 {vlastní data - hodnota BC14, tedy čárový kód položky doplněný na 14 znaků}
+ '10'                                                                 {AI - BATCH/LOT}
+ StavVyrCisel['Nazev1']                                               {vlastní data - Výrobní číslo položky}
+ chr(207)                                                             {oddělení AI s proměnnou délkou, znak FNC1}
+ '17'                                                                 {AI - datum expirace}
+ FormatDateTime('YYMMDD', xPohybyVyrobCisel_15_31['DatExpirace_X'])   {vlastni data - datum expirace zformátovaný do tvaru RRMMDD }
+ '37'                                                                 {AI - počet ks}
+ xPohybyZbozi_15['Mnozstvi'];                                         {vlastní data - množství položky}


GS128_2.png
GS128_2.png (24.17 KiB) Zobrazeno 14007 krát


Plusy: 1D formáty zpracuje každá běžná čtečka BC.
Mínusy: Kód s AI vyžaduje dostatek místa pro tisk (šířka strany), je široký a může být problematické ho načíst ruční čtečkou.




2D (dvojrozměrný) čárový kód GS1 DataMatrix
  • DataMatrix je plošný čárový kód, který funguje podobně jako QR kód, informace jsou rozloženy do 2D matice
  • v RB je třeba použít grafický objekt 2DBarCode
  • objekt je třeba pomocí panelu nástrojů Strom sestavy přepnout na typ bcDataMatrix
  • ve Stromu sestavy se na objektu nastaví EncodeType = etdmASCII
  • do objektu se pomocí Calcu vloží potřebné řídící ASCII znaky, aplikační identifikátory (AI) a samotná data z datových zdrojů
  • pro uvození GS1 v DataMatrix se používá ASCII znak char(29), ten musí být použit na první pozici celého kódu
  • char(29) se stejným způsobem použije jako oddělovač za každým AI s proměnnou délkou, pokud za takovým následuje další AI

GSDataMatrix_1.png
GSDataMatrix_1.png (26.64 KiB) Zobrazeno 14007 krát


Příklad RB kódu (Calcu) pro GS1 Data Matrix:
Definice formuláře > záložka Kalkulace > objekt TwoDBarCodeNNN > událost OnPrint:
Kód: Vybrat vše
{deklarace proměnné BC14, ta lze použít pro doplnění čárového kódu položky nulami, do pevné délky 14 znaků}
var BC14:string;

{přiřazení datového pole čárový kód položky do proměnné BC14 a doplnění nulami zleva}
begin
BC14:=xPohybyZbozi_15['BarCode'];
  while length(BC14)<14 do BC14:='0'+BC14;

{naplnění dat do čárového kódu}
TwoDBarCode1.Data:=
chr(29)                                                                {uvození GS1}
+ '01'                                                                 {AI - GTIN}
+ BC14                                                                 {vlastní data - hodnota BC14, tedy čárový kód položky doplněný na 14 znaků}
+ '10'                                                                 {AI - BATCH/LOT}
+ StavVyrCisel['Nazev1']                                               {vlastní data - Výrobní číslo položky}
+ chr(29)                                                              {oddělení AI s proměnnou délkou}
+ '17'                                                                 {AI - datum expirace}
+ FormatDateTime('YYMMDD', xPohybyVyrobCisel_15_31['DatExpirace_X'])   {vlastni data - datum expirace zformátovaný do tvaru RRMMDD }
+ '37'                                                                 {AI - počet ks}
+ xPohybyZbozi_15['Mnozstvi'];                                         {vlastní data - množství položky}


GSDataMatrix_2.png
GSDataMatrix_2.png (23.08 KiB) Zobrazeno 14007 krát


Plusy: 2D formát dokáže na menší tištěné ploše zakódovat více informací než 1D.
Mínusy: Pro čtení 2D kódů jsou potřeba obvykle nákladnější 2D čtečky.

GS1 čárový kód - čitelná část

PříspěvekNapsal: 10.01.2017 11:49
od jan.havranek
Objekty čárových kódů v čitelné části (Human Readable) čárového kódu v tisku nezobrazují AI se závorkami. Závorky se do AI v kódu BC nedají ani ručně vložit, čtečky by tyto znaky snímaly jako hodnoty samotných dat.

Pokud je tedy třeba tisknout AI včetně závorek pro snazší optické (lidské) čtení, je třeba pro to vytvořit nový popisný objekt v RB, např. Proměnnou (Variable).

  • V panelu nástrojů Strom sestavy pro daný objekt Barcode (resp. Two2DBarcode) v sekci Barcode vypnout vlastnost PrintHumanReadable
  • Do Návrhu vložit objekt Proměnná (Variable), umístit podle potřeby v blízkosti BarCode
  • V záložce Kalkulace najít objekt VariableNNN > událost OnCalc > vložit potřebný kód
  • Kód Variable je téměř stejný jako kód vlastního BC, jsou z něj vyřazeny řídící znaky a do AI jsou doplněny závorky pro tisk
  • Následně se tedy tiskne BarCode bez textové části + textová hodnota BC, zobrazená pomocí Variable.

BCreadable.png
BCreadable.png (25.61 KiB) Zobrazeno 13983 krát



Vzorový kód (Calc) Proměnné pro tisk čitelné části čárového kódu s aplikačními identifikátory.

Kód: Vybrat vše
{deklarace proměnné BC14, ta lze použít pro doplnění čárového kódu položky nulami, do pevné délky 14 znaků}
var BC14:string;

{přiřazení datového pole čárový kód položky do proměnné BC14 a doplnění nulami zleva}
begin
BC14:=xPohybyZbozi_15['BarCode'];
  while length(BC14)<14 do BC14:='0'+BC14;

{naplnění dat do čárového kódu}
Value:=
'(01)'                                                                 {AI - GTIN}
+ BC14                                                                 {vlastní data - hodnota BC14, tedy čárový kód položky doplněný na 14 znaků}
+ '(10)'                                                               {AI - BATCH/LOT}
+ StavVyrCisel['Nazev1']                                               {vlastní data - Výrobní číslo položky}
+ '(17)'                                                               {AI - datum expirace}
+ FormatDateTime('YYMMDD', xPohybyVyrobCisel_15_31['DatExpirace_X'])   {vlastni data - datum expirace zformátovaný do tvaru RRMMDD }
+ '(37)'                                                               {AI - počet ks}
+ xPohybyZbozi_15['Mnozstvi'];                                         {vlastní data - množství položky}


GS1variable.png
GS1variable.png (25.9 KiB) Zobrazeno 13983 krát

Re: Použítí čárových kódů ve standardu GS1

PříspěvekNapsal: 16.05.2018 12:49
od jan.zocek
Pro WMS lze využít:
AI (93) - pro ID výr. příkazu (ID z TabPrikaz – pokud jej systém nepotřebuje, tak je ignorován)
AI (90) - pro identifikaci duplicity (nenačtu do dokladu dva čárové kódy, které mají v tomto identifikátoru stejnou hodnotu)

Re: Použítí čárových kódů ve standardu GS1

PříspěvekNapsal: 17.09.2018 13:38
od jan.zocek
2D (dvojrozměrný) čárový kód GS1 DataMatrix
  • Nově dle standardu GS1 musí být na první pozici kódu znak FNC1 = chr(269).
  • EncodeType = etdmASCIIManual
  • Čárový kod může tedy vypadat takto:
  • TwoDBarCode1.Data:=chr(269)+'0112345678901234'+'101234'+chr(29)+'3728';
    -> čárový kód položky = 12345678901234; výrobní číslo = 1234; množství = 28;
    -> tzn.:
    FNC1 = chr(269)
    Aplikační identifikátor = 01
    hodnota daného pole = 12345678901234
    Aplikační identifikátor (předchozí AI má pevnou délku, takže není použit oddělovat AI) = 10
    hodnota daného pole = 1234
    oddělovač AI = chr(29)
    Aplikační identifikátor = 37
    hodnota daného pole + = 28

Re: Použítí čárových kódů ve standardu GS1

PříspěvekNapsal: 03.04.2019 09:45
od jan.zocek
Aktuální popis tvorby čárových kódu je umistěn zde:

"https://forum.helios.eu/orange/help/cs/Kódy_s_aplikačními_identifikátory_-_sklady"