Błąd w identyfikacji towaru kosztuje tym więcej, im później zostanie wykryty. Zła partia wykryta przy skanowaniu to poprawka trwająca kilka sekund. Ta sama pomyłka wykryta przy inwentaryzacji to dzień pracy na uzgadnianie stanów, a wykryta przez odbiorcę to reklamacja i rozmowa o karze umownej. Smart Scan przesuwa punkt kontroli na sam początek operacji - etykieta jest sprawdzana w momencie, w którym operator kieruje na nią czytnik.

O czym przeczytasz na tej stronie

Trzy kroki weryfikacji etykiety

Zwykłe skanowanie sprowadza się do porównania jednego ciągu znaków z jedną wartością w bazie. Przy etykiecie zbiorczej takie podejście nie wystarcza, bo jeden symbol niesie równocześnie numer towaru, numer partii, termin ważności i numer nośnika. Smart Scan rozkłada tę operację na trzy etapy, których stan widać na wskaźniku u góry ekranu.

Przebieg weryfikacji etykiety w transakcji Smart Scan
KrokCo robi systemRola operatora
1. Skanprzyjmuje surowy ciąg znaków razem z identyfikatorem symboliki wysłanym przez czytnikkieruje terminal na etykietę
2. Dekompozycjarozpoznaje standard, dzieli ciąg na pola, przelicza cyfry kontrolne, normalizuje datyczeka, przetwarzanie trwa ułamek sekundy
3. Potwierdzeniezestawia wynik z regułami bieżącego zadania i wydaje werdyktreaguje na komunikat - akceptuje albo odrzuca jednostkę

W kroku pierwszym istotny jest szczegół, o którym łatwo zapomnieć przy konfiguracji sprzętu. Czytnik wysyła nie samą treść, ale też identyfikator symboliki - trzyznakowy przedrostek w rodzaju ]C1 dla kodu GS1-128 albo ]d2 dla GS1 DataMatrix. To on pozwala odróżnić etykietę zgodną ze standardem od zwykłego ciągu znaków, który przypadkiem zaczyna się od dwóch cyfr. Szczegóły budowy obu symbolik opisujemy na stronie o kodach GS1-128 i GS1 DataMatrix.

Krok trzeci to nie tylko zapis do bazy. System odnosi odczytane wartości do reguł bieżącego zadania - do awizacji przyjęcia, do zlecenia kompletacji albo do listy załadunkowej - i dopiero na tej podstawie decyduje, czy operacja może iść dalej. Ta sama etykieta może więc zostać przyjęta w jednym zadaniu i odrzucona w innym.

Dekompozycja kodu na pola bazy danych

Silnik dekompozycji rozbija jeden długi ciąg na atrybuty i przypisuje każdy z nich do konkretnej kolumny. Mapowanie jest elementem konfiguracji, a nie regułą zaszytą w kodzie, więc przy nietypowym układzie danych da się je zmienić bez zmian w programie.

Co system robi z poszczególnymi polami odczytanej etykiety
IdentyfikatorOdczytana wartośćGdzie trafiaDo czego służy dalej
(01)numer GTIN towaruindeks kartoteki asortymentowejjednoznaczne wskazanie towaru bez wpisywania nazwy
(10)numer partii produkcyjnejpole partii pozycji dokumentuśledzenie pochodzenia i wycofania partii z obrotu
(17)termin ważnościpole daty, po przeliczeniu na ISO 8601podstawa wydawania według reguły FEFO
(00)numer SSCC nośnikarejestr jednostek logistycznychpowiązanie całej palety z jednym numerem
(37)liczba jednostek na nośnikuilość pozycji dokumentukontrola zgodności z awizacją

Jedno naciśnięcie spustu wypełnia komplet pól pozycji. Operator uzupełnia wyłącznie to, czego etykieta nie zawiera, czyli zwykle liczbę faktycznie przyjętych sztuk i lokalizację docelową - pozostałe pola system blokuje do edycji, żeby dane z kodu nie zostały przypadkiem nadpisane. Przy pracy na terminalu mobilnym z systemem Android ma to konkretne znaczenie, bo wpisywanie długich numerów na małym ekranie jest najwolniejszą i najbardziej zawodną częścią całej operacji.

Odczytany numer SSCC nie kończy życia w polu dokumentu. Trafia do rejestru jednostek logistycznych, w którym opakowanie należy do kartonu, a karton do palety. Zeskanowanie numeru nośnika ujawnia więc całą jego zawartość, bez otwierania folii i przeliczania kartonów.

Studio WMS.net - rejestr jednostek logistycznych SSCC z drzewem agregacji paleta, karton, opakowanie
Rejestr jednostek logistycznych - paleta z numerem SSCC i karton jako osobne poziomy agregacji

Cztery werdykty parsera

Weryfikacja ma sens tylko wtedy, gdy system potrafi zareagować na to, co wykrył. Smart Scan nie ogranicza się do dwóch stanów w rodzaju przeszło albo nie przeszło - wynik trafia do jednej z czterech kategorii, a każda z nich prowadzi do innego działania.

Werdykty parsera i wynikające z nich działanie
WerdyktKiedy występujeCo dzieje się dalej
Poprawnastruktura, cyfry kontrolne i daty zgodne ze specyfikacjąpozycja wypełnia się automatycznie, operacja idzie dalej
Warunkowo zgodnaodczyt wymagał trybu awaryjnego albo dane wymagają decyzji, na przykład krótszy termin ważności niż zakłada profil odbiorusystem prosi o świadome potwierdzenie i zostawia ślad w protokole
Błędnaktóraś z kontroli nie przeszła, najczęściej cyfra kontrolna numeru GTIN albo SSCCodczyt zostaje odrzucony, wartość nie trafia do bazy
Nierozpoznanakod nie pasuje do żadnego obsługiwanego standardusystem nazywa przyczynę i wskazuje potrzebę osobnego profilu parsowania

Werdykt błędny nie jest arbitralny - protokół kontroli pokazuje wynik każdego testu osobno, więc widać, na czym dokładnie odczyt się zatrzymał. W przykładzie poniżej struktura pól jest w porządku, separator nie był potrzebny, pola dat nie występują, a zawiódł wyłącznie test sumy kontrolnej numeru towaru.

Studio WMS.net - komunikat o etykiecie niezgodnej ze standardem z powodu błędnej cyfry kontrolnej GTIN
Etykieta odrzucona przez parser - struktura jest poprawna, ale cyfra kontrolna numeru GTIN nie zgadza się

Osobno traktowana jest etykieta, której system w ogóle nie rozpoznaje. Parser sprawdza kolejno cechy charakterystyczne obsługiwanych standardów i jeśli żadna nie występuje, kod trafia do kategorii nierozpoznanych. To lepsze rozwiązanie niż próba odgadnięcia znaczenia - zapisanie przypadkowych wartości do kartoteki byłoby błędem trudniejszym do wykrycia niż jawna odmowa.

Studio WMS.net - komunikat o nierozpoznanym formacie kodu przy etykiecie wewnętrznej dostawcy
Kod spoza standardów GS1 i HIBC - parser nazywa przyczynę zamiast zapisywać przypadkowe wartości

Reguła bezpieczeństwa operacyjnego. Przy werdykcie błędnym system nie pozwala przejść do kolejnego kroku procedury, dopóki operator nie skoryguje pomyłki albo nie odłoży jednostki na bok. Werdykt warunkowy przepuszcza operację dalej, ale wymaga świadomego potwierdzenia i zostaje odnotowany.

Pułapka - poprawna etykieta z błędnymi danymi

Werdykt poprawny nie zawsze oznacza, że dane są prawidłowe. Sprawdziliśmy to w środowisku demonstracyjnym, podając parserowi kod GS1-128, w którym po polu partii pominięto separator pól.

podany ciąg:
]C1010590999123456010LOT2026A17271130
oczekiwane trzy pola: towar, partia, termin ważności

Parser zameldował poprawną etykietę GS1. Wszystkie testy przeszły, cyfra kontrolna numeru towaru się zgadza, a komunikat o separatorze brzmi, że nie był potrzebny. W dekompozycji widać jednak tylko dwa pola zamiast trzech, a numer partii ma wartość LOT2026A17271130, czyli rzeczywistą partię z doklejonym terminem ważności. Pole daty nie powstało w ogóle.

Studio WMS.net - numer partii, który wchłonął termin ważności po pominięciu separatora pól w kodzie
Kod bez separatora przechodzi kontrolę, ale numer partii wchłonął termin ważności - dwa pola zamiast trzech

Konsekwencja jest poważna i cicha. Towar wchodzi na stan, dokument się zapisuje, nikt nie widzi komunikatu, ale pozycja nie ma terminu ważności, więc wypada z obsługi według reguły FEFO. Błąd ujawni się dopiero wtedy, gdy z magazynu wyjedzie partia starsza niż powinna. Dlatego przy uruchamianiu odczytu warto patrzeć nie tylko na werdykt, ale też na liczbę wyodrębnionych pól, którą parser podaje w protokole - jeśli spodziewamy się trzech, a system zgłasza dwa, etykieta wymaga poprawy u źródła. Ma to bezpośrednie znaczenie tam, gdzie prowadzimy ewidencję partii produkcyjnych i dat ważności.

Smart Scan przy przyjęciu towaru

Strefa przyjęć to miejsce, w którym stan faktyczny spotyka się z deklaracją dostawcy. Każda niezgodność przepuszczona na tym etapie mnoży się w kolejnych operacjach, bo błędna pozycja bierze udział w kompletacji, inwentaryzacji i wydaniu.

Cały przebieg tego procesu, razem z dokumentami, które przy nim powstają, opisujemy szczegółowo na stronie o przyjęciu towaru do magazynu.

Smart Scan przy kompletacji i wydaniu

Przy wydaniu stawka jest inna niż przy przyjęciu. Błąd na przyjęciu zostaje w magazynie i da się go naprawić, błąd przy wydaniu jedzie do odbiorcy. Weryfikacja w momencie skanowania pełni tu funkcję ostatniej bramki.

Dane z każdego potwierdzonego odczytu aktualizują stany magazynowe od razu, bez nocnego przeliczania, dlatego obraz magazynu w systemie odpowiada temu, co faktycznie stoi na regałach.

Dziennik parsowania jako narzędzie rozmowy z dostawcą

Pojedyncze odrzucenie etykiety to zdarzenie operacyjne. Powtarzające się odrzucenia z tego samego źródła to temat na rozmowę handlową. Każdy odczyt zapisuje się w dzienniku parsowania razem z werdyktem, a zestawienie grupuje nieprawidłowości na dwa sposoby - według komunikatu błędu oraz według prefiksu firmy nadającej numery.

To drugie ujęcie jest istotne, bo prefiks jednoznacznie wskazuje dostawcę. Zamiast ogólnego stwierdzenia, że etykiety bywają wadliwe, można podać liczbę odrzuconych odczytów w danym okresie i konkretną przyczynę, na przykład brak separatora po polu partii. Dziennik zawiera też odczyty warunkowe, czyli te, które przeszły dzięki trybowi awaryjnemu - ich liczba pokazuje, ile etykiet działa tylko dlatego, że system je ratuje.

Zestawienie można wyeksportować i dołączyć do korespondencji z dostawcą albo do protokołu odbioru. Podobnie jak przy inwentaryzacji, wartość ma tu nie sam pomiar, lecz możliwość pokazania go w formie, której nie da się podważyć. Zbiorczy obraz tych danych opisujemy przy wskaźnikach jakości skanowania.

Co daje przesunięcie kontroli na moment skanowania

Korzyść nie polega na tym, że błędy przestają powstawać - powstają nadal, bo etykiety drukują ludzie i maszyny w firmach, na które nie mamy wpływu. Zmienia się moment i koszt ich wykrycia.

Moment wykrycia błędu a zakres działań naprawczych
Kiedy błąd zostaje wykrytyCo trzeba zrobićKogo to angażuje
przy skanowaniupoprawić odczyt albo odłożyć jednostkęoperator przy terminalu
przy kompletacjiprzerwać zlecenie, znaleźć właściwy towar, skorygować stanoperator i kierownik zmiany
przy inwentaryzacjiuzgodnić różnicę, odtworzyć historię ruchów, skorygować dokumentymagazyn i księgowość
u odbiorcyprzyjąć zwrot, wyjaśnić przyczynę, rozliczyć koszt transportumagazyn, obsługa klienta, dział handlowy

Przesunięcie kontroli na moment skanowania skraca też samą operację, bo znika przepisywanie numerów partii i dat z etykiety do formularza. Skala oszczędności zależy od tego, ile pól operator wypełniał wcześniej ręcznie i jak długie były te wartości, więc rzetelny pomiar trzeba wykonać na własnych danych przed wdrożeniem i po nim. Przy pozycjach z numerem partii, terminem ważności i numerem seryjnego różnica jest odczuwalna, przy prostych towarach bez cech dodatkowych - znacznie mniejsza.

Smart Scan zamienia terminal w punkt kontroli jakości danych. Nie zastępuje uporządkowanej etykiety logistycznej GS1 ani poprawnie prowadzonych kartotek - działa dokładnie tak dobrze, jak dobre są dane, które dostaje. Daje jednak coś, czego nie da żadna kontrola wykonana później: informację w momencie, w którym poprawka jest jeszcze tania.

Najczęściej zadawane pytania

Poniżej odpowiedzi na pytania, które najczęściej pojawiają się przy uruchamianiu weryfikacji etykiet w czasie rzeczywistym.

Zwykły odczyt porównuje jeden ciąg znaków z jedną wartością w bazie. Smart Scan najpierw rozpoznaje standard etykiety, rozbija kod na pojedyncze pola, przelicza cyfry kontrolne i normalizuje daty, a dopiero potem zestawia wynik z regułami bieżącego zadania magazynowego. Efektem nie jest sama wartość, lecz werdykt o tym, czy etykietę można obsłużyć automatycznie.

Są cztery. Poprawna oznacza etykietę zgodną ze specyfikacją. Warunkowo zgodna to odczyt wymagający decyzji operatora, na przykład po zadziałaniu trybu awaryjnego. Błędna to kod, który nie przeszedł którejś z kontroli, na przykład sumy kontrolnej. Nierozpoznana to etykieta spoza obsługiwanych standardów. Każdy werdykt trafia do dziennika parsowania.

Nie zawsze. Sprawdziliśmy to w środowisku demonstracyjnym: kod GS1-128 pozbawiony separatora po polu partii przechodzi wszystkie testy, bo formalnie jest poprawny, ale numer partii wchłania doklejony termin ważności i pole daty w ogóle nie powstaje. Dlatego oprócz werdyktu warto patrzeć na liczbę wyodrębnionych pól, którą parser podaje w protokole kontroli.

Odrzuca ją i nazywa przyczynę, zamiast zapisywać przypadkowe wartości. Parser sprawdza kolejno cechy obsługiwanych standardów i jeśli żadna nie występuje, oznacza kod jako nierozpoznany. Obsługa takiej etykiety wymaga osobnego scenariusza mapowania, przypisanego do prefiksu konkretnego dostawcy.

Tak, transakcja jest przeznaczona przede wszystkim do pracy na terminalu z systemem Android. Pola wypełnione danymi z kodu są blokowane do edycji, więc operator uzupełnia wyłącznie to, czego etykieta nie zawiera, czyli zwykle liczbę sztuk i lokalizację docelową.

W dzienniku parsowania. Każdy odczyt zapisuje się razem z werdyktem, a zestawienie grupuje błędy zarówno według komunikatu, jak i według prefiksu firmy nadającej numery. Dzięki temu rozmowa z dostawcą opiera się na liczbie odrzuconych etykiet w danym okresie, a nie na ogólnym wrażeniu.

Glosariusz pojęć

Parsowanie
rozbicie surowego ciągu znaków z kodu na pojedyncze pola danych zgodnie z regułami standardu.
Surowy ciąg (raw data)
treść przekazana przez czytnik przed jakąkolwiek interpretacją, razem z identyfikatorem symboliki i znakami sterującymi.
Werdykt parsera
ocena etykiety w jednej z czterech kategorii: poprawna, warunkowo zgodna, błędna albo nierozpoznana.
Tryb awaryjny
zachowanie parsera przy braku separatora, w którym pole zmiennej długości jest dopasowywane po maksymalnej długości identyfikatora.
FEFO
reguła wydawania towaru według najkrótszego terminu ważności, oparta na dacie odczytanej z etykiety.
DESADV
elektroniczny komunikat awizacji dostawy, zawierający wykaz jednostek logistycznych i ich zawartość.
Agregacja jednostek
powiązanie opakowania z kartonem, a kartonu z paletą, dzięki któremu odczyt numeru nośnika ujawnia całą jego zawartość.
Dziennik parsowania
rejestr wszystkich odczytów z werdyktem parsera, służący do analizy jakości etykiet w podziale na dostawców.

Warto przeczytać