Na jednym opakowaniu jest EAN, a na drugim kod producenta bez identyfikatora produktu. Maska kodu kreskowego na kolektorze rozwiązuje ten drugi przypadek: drugi skan jest cięty na pola według pozycji znaków.
Kolektor ma jedno pole Kod. Kod krótszy niż 15 znaków jest szukany w kartotece jako EAN lub drugi identyfikator towaru, a dłuższy system najpierw rozbija jako kod GS1 i dopiero gdy się nie uda, szuka go jak EAN. Kod producenta bez EAN sam nie identyfikuje towaru, więc po skanie EAN drugi skan tnie maska pozycyjna przypisana do indeksu.
Etykiety zostały sklasyfikowane przed startem kolektorów
Z ustaleń z etapu analizy wynikało, że towary mają etykiety w kilku układach. Na części etykiet kod niesie sam numer produktu, a partia i termin są tylko wydrukowane. Są też kody GS1 z polami oraz Data Matrix producenta z polami rozdzielonymi spacjami. Nie wszystkie towary miały EAN i nie każda sztuka była oklejona.
To były ustalenia z analizy, a nie opis zachowania systemu. Opisują jednak, dlaczego jedno pole Kod musi radzić sobie z kodami o różnej budowie i dlaczego część z nich wymaga dodatkowego kroku. Etykietę paletową z trzema kodami opisuje inny artykuł z innego wdrożenia: skanowanie etykiety GS1-128 w WMS.
Jedno pole Kod rozpoznaje kod według długości
Pole Kod jest wspólne dla ekranów kolektora. Krótszy kod jest szukany w kartotece jako EAN lub drugi identyfikator towaru. Kod o długości 15 znaków i więcej system najpierw próbuje rozbić jako kod GS1, a gdy się nie uda, szuka go jak EAN. Symbolikę kodów i druk etykiet opisuje strona o kodach kreskowych w magazynie.
Wynik rozpoznania ma cztery stany: brak danych dla kodu („Brak danych dla podanego kodu!”), kod GS1 rozbity na pola, EAN z istniejącą maską oraz EAN bez maski. Na ekranie przyjęcia ten ostatni stan pokazuje komunikat „Poprawny kod EAN. Brak masek kodów!”, i to tylko dla towaru obecnego na zleceniu.
| Rodzaj kodu | Jak go rozpoznaje kolektor | Co trafia do pól |
|---|---|---|
| EAN krótszy niż 15 znaków | Szukanie kartoteki po EAN lub drugim identyfikatorze towaru | Kartoteka towaru; bez wymagań i bez maski ekran przechodzi dalej od razu |
| Kod GS1 (15 znaków i więcej) | Rozbiór kodu przez serwer platformy, a przy niepowodzeniu szukanie jak EAN | Numer seryjny, partia, termin i ilość w polach ekranu, GTIN w polu Kod |
| EAN z maską i drugi skan | Po EAN ekran prosi o drugi skan i tnie go maską przypisaną do indeksu | Trzy pola: SN, LOT i EXP, z wartości wyciętych według pozycji znaków |
| Kod, którego nie rozpoznano | Ani rozbiór GS1, ani szukanie po EAN nie znajdują kartoteki | „Brak danych dla podanego kodu!” |
Kod GS1 wypełnia pola sam
Kod GS1 rozbiera serwer platformy, a skrypt kolektora mapuje pola: numer seryjny, termin ważności, GTIN, partię i ilość. Data produkcji z kodu jest odczytywana, ale żaden ekran kolektora nie wpisuje jej do pola. Magazynier nie zobaczy więc daty produkcji z kodu w żadnym polu.
Wartości z kodu GS1 trafiają tylko do pustych pól ekranu. Ilość wpisuje się z kodu, a pole Kod przyjmuje GTIN, po czym ekran szuka kartoteki jeszcze raz i pokazuje „Przypisano skanowane wartości”. Gdy kod dostarczył wszystkie pola wymagane przez kartotekę, ekran przechodzi dalej po ułamku sekundy; w przeciwnym razie magazynier uzupełnia brakujące pola. Kartoteka bez wymagań i bez maski przechodzi dalej od razu po EAN. To, które pola są wymagane, wynika z kartoteki, o czym pisze artykuł o kartotece sterującej kolektorem.
Drugi skan i maska pozycyjna dla kodu producenta
Kod producenta (Data Matrix z polami rozdzielonymi spacjami, bez GTIN) sam nie identyfikuje towaru. Dlatego najpierw skanuje się EAN z pudełka, a gdy indeks ma maskę, kolektor na ekranie przyjęcia, dla towaru ze zlecenia przyjęcia, pokazuje „Poprawny kod EAN. Zeskanuj niestandardowy kod” i tnie maską następny skan. Skan krótszy niż 6 znaków daje „Zbyt krótki kod maski!”. Dla towaru spoza zlecenia ekran pyta zamiast tego o nadmiar, co opisuje artykuł o nadmiarze przy przyjęciu.
Maska jest tabelą pozycji. Jeden wiersz to jedno pole kodu: znak początkowy, znak końcowy i rodzaj informacji, do wyboru spośród trzech: Numer LOT, Termin ważności albo Nr. serii asortymentu. Słownik zawiera także rodzaj „Data produkcji”, ale żaden ekran kolektora nie wpisuje jej do pola, więc w praktyce maska wypełnia trzy pola: SN, LOT i EXP (format RRRRMMDD). Wartości tekstowe, czyli numer seryjny i partię, kolektor wpisuje bez zmian.
Maska należy do indeksu, a nie do pojedynczej kartoteki: ekran szuka jej po indeksie towaru z poprzedniego skanu, więc jedna definicja obsługuje wszystkie kartoteki tego indeksu.
Maska wskazuje pole przez numer pierwszego i ostatniego znaku, a termin bez podanego dnia zamienia na datę z ostatnim dniem miesiąca.
Z fragmentu terminu zostają same cyfry. Osiem cyfr to RRRRMMDD, a cztery cyfry to RRMM z ostatnim dniem miesiąca. Sześć cyfr to RRMMDD, gdy przy masce zaznaczono „Podany dzień”, a w przeciwnym razie RRRRMM z ostatnim dniem miesiąca. Wynik ma postać RRRR-MM-DD, więc „2026/11” daje 2026-11-30. Analogiczny odczyt etykiet dwoma skanami w innym wdrożeniu opisuje artykuł o kontroli etykiet na kolektorze.
Biuro definiuje maskę dla indeksu w ekranie Maski kodów
Maski definiuje biuro w pozycji menu Maski kodów w sekcji kartotek, a także przyciskiem Maski Kodów w rejestrze kartotek, z filtrem wybranego indeksu. Maskę ustawia się przy jednym asortymencie wskazanym na liście, jedna pozycja na indeks, a odczyt działa dla wszystkich kartotek tego indeksu.
Formularz zaczyna się od pola Aktywne i wyboru asortymentu, dalej jest zakres znaków (Znak od i Znak do) oraz Rodzaj informacji, a na końcu pole wyboru Podany dzień i pole Uwagi. Podpowiedź przy polu Znak do przypomina, że trzeba policzyć także znaki między cyframi, na przykład ukośnik, które odczyt pomija. Wiązanie kodu z kartoteką opisuje strona o kartotekach magazynowych.
Brakujący EAN nadaje się zleceniem biura i skanem
Brakujący EAN dopisuje się w dwóch krokach. Biuro tworzy zlecenie dopisania EAN z indeksami bez kodu, a zlecenie ma trzy stany: bufor, oczekujące i zrealizowane. Magazynier wybiera zlecenie na kolektorze i indeks, skanuje kod i zatwierdza.
Kolektor sprawdza długość kodu: poniżej 4 znaków daje „Podany kod EAN jest za krótki!”, a powyżej 30 „Podany kod EAN jest zbyt długi!”. Z kodu GS1 do kartoteki trafia sam GTIN, a gdy w kodzie GS1 nie ma GTIN, ekran odpowiada „Nie znaleziono wartości odpowiadającej EAN!”.
Zatwierdzenie zapisuje kod we wszystkich aktywnych kartotekach tego indeksu i zamyka pozycję zlecenia, a w historii dopisuje wpis „Zmiana kodu EAN”. Po zapisie ekran pokazuje „Zapisano kod EAN … dla indeksu …”, a po zapisie ostatniej pozycji zlecenia pokazuje „Dokument został zatwierdzony” i pyta „Czy chcesz zrealizować nowy dokument?”. Numer seryjny, który często towarzyszy takiemu kodowi, opisuje strona o skanowaniu numeru seryjnego.
Przykład: trzy artykuły, trzy ścieżki w jednym polu
Przykład: Artykuł A ma na pudełku kod EAN, a w środku Data Matrix producenta o treści „A1234567 LOT0001 2027/05”. Magazynier skanuje EAN, a kolektor odpowiada „Poprawny kod EAN. Zeskanuj niestandardowy kod”, bo indeks Artykułu A ma maskę i towar jest na zleceniu przyjęcia. Po drugim skanie maska wycina trzy pola: znaki 1-8 jako numer serii, znaki 10-16 jako partię i znaki 18-24 jako termin, który system zapisuje jako 2027-05-31.
Przy Artykule B z etykietą GS1 magazynier skanuje jeden kod, a pola wypełniają się same. Gdy Artykuł C nie ma żadnego kodu w kartotece, biuro tworzy zlecenie dopisania EAN, a magazynier skanuje kod z opakowania. Dane tego przykładu są wymyślone. Przyjęcie z danych etykiet dostawcy zapisanych wcześniej w bazie opisuje artykuł o generowaniu PZ po czterech kontrolach.
Pytania do zadania na etapie analizy
Zanim ktoś wdroży podobne rozpoznawanie kodów u siebie, powinien odpowiedzieć na cztery pytania o etykiety i o utrzymanie masek.
- Rodziny etykiet. Jakie rodziny etykiet występują na Waszych towarach i które produkty nie mają EAN w kodzie?
- Pola kodu producenta. Czy pola kodu producenta mają stałe miejsce w kodzie, czy ich długość zmienia się między partiami?
- Utrzymanie masek. Kto w biurze utrzyma maski, gdy producent zmieni układ kodu?
- Separator w skanerze. Czy skanery przekazują do pola Kod znak rozdzielający pola kodu GS1?