Tipi di codici a barre

GS1-128 e Application Identifier: come leggere lotto, scadenza, SSCC e peso con il lettore

Il GS1-128 è un Code 128 che inizia con il carattere FNC1 e contiene dati strutturati con gli Application Identifier (AI): prefissi numerici come (01) per il GTIN, (10) per il lotto, (17) per la scadenza. Le parentesi si vedono solo nel testo stampato, non nei dati letti. I campi variabili sono separati dal carattere GS (ASCII 29), che il lettore deve trasmettere correttamente.

Come funziona un codice GS1-128

Un GS1-128 non è una simbologia diversa dal Code 128: è un Code 128 con regole sui contenuti. Il primo carattere dopo lo start è FNC1, ed è questo che dice al lettore "i dati seguono la sintassi GS1". Poi si susseguono coppie AI + valore:

Testo stampato sotto il codice:
(01)18001234567894(17)271231(10)L2405A

Dati trasmessi dal lettore:
01180012345678941727123110L2405A

Ripulito: 01 + 18001234567894 (GTIN-14), 17 + 271231 (scadenza 31 dicembre 2027), 10 + L2405A (lotto). La stringa che arriva al PC è un'unica sequenza di caratteri: è il software che deve saperla scomporre. Per farlo a mano o per verificare un'etichetta usa il decodificatore GS1.

Gli Application Identifier più usati

AI frequenti in logistica, alimentare e sanità
AIContenutoFormato del valoreLunghezza
(00)SSCC, codice dell'unità logistica (pallet, collo)18 cifreFissa
(01)GTIN dell'articolo14 cifreFissa
(02)GTIN degli articoli contenuti (si usa con 37)14 cifreFissa
(10)LottoFino a 20 caratteri alfanumericiVariabile
(11)Data di produzioneAAMMGGFissa
(15)Da consumarsi preferibilmente entroAAMMGGFissa
(17)Data di scadenzaAAMMGGFissa
(21)Numero di serieFino a 20 caratteri alfanumericiVariabile
(37)Quantità di articoli contenutiFino a 8 cifreVariabile
(3103)Peso netto in kg con 3 decimali6 cifreFissa
(392n)Prezzo da pagare, n = decimaliFino a 15 cifreVariabile
(400)Numero d'ordine del clienteFino a 30 caratteriVariabile

Alcune regole da conoscere per interpretare i dati:

  • Le date sono AAMMGG. Se il giorno è 00, la data indica il mese intero (si intende l'ultimo giorno del mese).
  • Il peso (310n): l'ultima cifra dell'AI indica quanti decimali. 3103 + 012500 = 12,500 kg; 3102 + 001250 = 12,50 kg.
  • Il GTIN in (01) è sempre a 14 cifre: un EAN-13 diventa 0 + 13 cifre. Il gestionale che cerca l'EAN-13 deve togliere lo zero iniziale.

Campi variabili e separatore GS

Quando un campo ha lunghezza fissa, il software sa dove finisce. Quando è variabile (lotto, seriale, quantità) e non è l'ultimo, serve un separatore: nel simbolo è un FNC1, nei dati trasmessi diventa il carattere GS, codice ASCII 29 (esadecimale 1D). L'ultimo campo non ha bisogno di separatore.

Testo stampato:      (01)18001234567894(10)L2405A(17)271231
Dati trasmessi:      011800123456789410L2405A<GS>17271231

Chi progetta le etichette mette di solito i campi a lunghezza fissa prima e un solo campo variabile in fondo, proprio per evitare il separatore. Ma non sempre è possibile, e le etichette dei fornitori le ricevi come sono.

La lunghezza fissa vale per un elenco di AI predefinito nelle GS1 General Specifications (tra cui 00, 01, 02, 11, 15, 17 e la famiglia 310n): il software lo conosce e non ha bisogno di separatori dopo questi campi.

Il problema del GS in emulazione tastiera

Il GS non è un tasto: in emulazione tastiera molti lettori lo inviano come combinazione Ctrl+], che a seconda del layout del PC e dell'applicazione produce un carattere strano, nulla, oppure un comando. Risultato: lotto e scadenza si "fondono" e il software non riesce a separarli. Le soluzioni (sostituire il GS con un carattere visibile, usare la modalità ALT, passare a porta COM virtuale) sono descritte in carattere GS e FNC1 e in modalità ALT e tastiera universale.

L'etichetta logistica con SSCC

Sul pallet trovi l'etichetta logistica GS1 con l'SSCC in (00): 18 cifre, composte da cifra di estensione, prefisso aziendale, numero seriale e cifra di controllo mod 10.

Testo stampato:  (00)380012340000000012
Dati trasmessi:  00380012340000000012
Con AIM ID:      ]C100380012340000000012

Il calcolo della cifra di controllo dell'SSCC è spiegato nella pagina sulla cifra di controllo. Per un quadro sull'uso in spedizione vedi logistica e spedizioni.

Lettori e impostazioni

Il GS1-128 si legge con qualsiasi lettore lineare o 2D; è spesso abilitato di fabbrica insieme al Code 128, a volte come opzione separata ("GS1-128" o "UCC/EAN-128"). Le etichette con molti AI diventano lunghe (lo standard ammette fino a 48 caratteri dati e una larghezza massima di 165 mm): un imager lineare o 2D con campo ampio le legge meglio di un laser economico.

Opzioni da verificare nel manuale:

  • Trasmissione dell'identificatore AIM: con ]C1 il software capisce che deve interpretare la stringa come GS1. Molti software GS1 lo richiedono.
  • Carattere con cui viene trasmesso FNC1/GS: alcuni lettori permettono di sostituirlo.
  • Interpretazione con parentesi: alcuni modelli possono trasmettere il testo con gli AI tra parentesi, utile per la lettura umana ma da evitare se il software si aspetta il formato grezzo.

Caso tipico: un magazzino alimentare legge le etichette dei cartoni in un foglio Excel. Le righe mostrano 011800123456789410L2405A17271231: il GS si è perso e non si sa più se il lotto è L2405A o L2405A17. Impostando il lettore per sostituire il GS con un carattere visibile, per esempio |, i dati arrivano separabili e una formula li divide in colonne.

Errori comuni

  • Stampare le parentesi nei dati. Le parentesi vanno solo nel testo leggibile; un generatore non GS1 le codifica come caratteri e il codice non è più un GS1-128 valido.
  • Codice generato senza FNC1 iniziale: il lettore lo legge come Code 128 normale (]C0) e i software GS1 lo rifiutano.
  • GTIN a 13 cifre in (01): va sempre completato a 14 con lo zero iniziale.
  • Data in formato GGMMAA: il formato GS1 è AAMMGG.

Domande frequenti

Che differenza c'è tra GS1-128 ed EAN-128?

Nessuna: EAN-128 e UCC/EAN-128 sono i nomi precedenti della stessa simbologia. Nei manuali dei lettori trovi ancora spesso questi nomi.

Gli Application Identifier esistono anche nei codici 2D?

Sì: GS1 DataMatrix, GS1 QR Code e GS1 DataBar Expanded usano la stessa sintassi. I dati trasmessi sono identici, cambia solo l'identificatore AIM. Vedi Data Matrix.

Il mio gestionale vuole solo il GTIN: come lo estraggo?

Se il codice inizia con 01, le 14 cifre successive sono il GTIN. Puoi estrarlo nel software oppure, su molti lettori, con regole di formattazione dei dati.

Fonti e riferimenti

  • GS1 General Specifications, elenco degli Application Identifier e regole di concatenazione, GS1
  • GS1 Italy, guida all'etichetta logistica, gs1it.org
  • ISO/IEC 15417, simbologia Code 128, ISO
  • Product Reference Guide del lettore in uso, sezioni GS1-128 e trasmissione FNC1

Altro in Tipi di codici a barre

Tutta la sezione Tipi di codici a barre