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
- Dekompozycja kodu na pola bazy danych
- Cztery werdykty parsera
- Pułapka - poprawna etykieta z błędnymi danymi
- Smart Scan przy przyjęciu towaru
- Smart Scan przy kompletacji i wydaniu
- Dziennik parsowania jako narzędzie rozmowy z dostawcą
- Co daje przesunięcie kontroli na moment skanowania
- Najczęściej zadawane pytania
- Glosariusz pojęć
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.
| Krok | Co robi system | Rola operatora |
|---|---|---|
| 1. Skan | przyjmuje surowy ciąg znaków razem z identyfikatorem symboliki wysłanym przez czytnik | kieruje terminal na etykietę |
| 2. Dekompozycja | rozpoznaje standard, dzieli ciąg na pola, przelicza cyfry kontrolne, normalizuje daty | czeka, przetwarzanie trwa ułamek sekundy |
| 3. Potwierdzenie | zestawia wynik z regułami bieżącego zadania i wydaje werdykt | reaguje 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.
| Identyfikator | Odczytana wartość | Gdzie trafia | Do czego służy dalej |
|---|---|---|---|
| (01) | numer GTIN towaru | indeks kartoteki asortymentowej | jednoznaczne wskazanie towaru bez wpisywania nazwy |
| (10) | numer partii produkcyjnej | pole partii pozycji dokumentu | śledzenie pochodzenia i wycofania partii z obrotu |
| (17) | termin ważności | pole daty, po przeliczeniu na ISO 8601 | podstawa wydawania według reguły FEFO |
| (00) | numer SSCC nośnika | rejestr jednostek logistycznych | powiązanie całej palety z jednym numerem |
| (37) | liczba jednostek na nośniku | ilość pozycji dokumentu | kontrola 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.
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.
| Werdykt | Kiedy występuje | Co dzieje się dalej |
|---|---|---|
| Poprawna | struktura, cyfry kontrolne i daty zgodne ze specyfikacją | pozycja wypełnia się automatycznie, operacja idzie dalej |
| Warunkowo zgodna | odczyt wymagał trybu awaryjnego albo dane wymagają decyzji, na przykład krótszy termin ważności niż zakłada profil odbioru | system prosi o świadome potwierdzenie i zostawia ślad w protokole |
| Błędna | któraś z kontroli nie przeszła, najczęściej cyfra kontrolna numeru GTIN albo SSCC | odczyt zostaje odrzucony, wartość nie trafia do bazy |
| Nierozpoznana | kod nie pasuje do żadnego obsługiwanego standardu | system 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.
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.
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.
]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.
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.
- Zestawienie etykiety z awizacją. Odczytany numer nośnika system porównuje z elektronicznym komunikatem awizacji dostawy, dzięki czemu od razu wiadomo, czy paleta należy do oczekiwanej przesyłki. Współpracę tych dwóch mechanizmów opisujemy przy awizacji dostaw i oknach czasowych transportu.
- Kontrola terminu ważności. Odczytana data pozwala sprawdzić, czy dostawa spełnia minimalny okres przydatności ustalony w umowie handlowej, zanim towar trafi na regał.
- Rejestracja jednostek bez przepisywania. Numery SSCC z etykiet fabrycznych zakładają jednostki w strefie buforowej automatycznie, bez ręcznego wpisywania numerów serii.
- Zgodność z kartoteką. Numer GTIN musi mieć odpowiednik w kartotece magazynowej, w przeciwnym razie odczyt jest formalnie poprawny, ale nie wskazuje żadnego towaru.
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.
- Kontrola reguły FEFO. Jeśli operator sięga po partię o dłuższym terminie ważności, podczas gdy w magazynie leży partia starsza, system zatrzymuje operację i wskazuje właściwą lokalizację. Bez odczytanej z etykiety daty ta kontrola nie ma na czym się oprzeć.
- Zgodność asortymentu. Skanowanie przy pakowaniu potwierdza, że do kartonu trafia towar z zamówienia, a nie podobnie wyglądający wariant różniący się rozmiarem albo pojemnością. Szerzej piszemy o tym przy kompletacji zleceń.
- Kontrola załadunku. Odczyt numeru SSCC przy wprowadzaniu palety na naczepę wiąże nośnik z konkretnym dokumentem, co ogranicza ryzyko pomylenia doków i wysyłki pod niewłaściwy adres. Ten etap opisujemy przy wydaniu z magazynu.
- Zgodność liczby jednostek. Wartość odczytana z pola liczby jednostek na nośniku porównywana jest z ilością na dokumencie, więc różnica ujawnia się przy załadunku, a nie u odbiorcy.
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.
| Kiedy błąd zostaje wykryty | Co trzeba zrobić | Kogo to angażuje |
|---|---|---|
| przy skanowaniu | poprawić odczyt albo odłożyć jednostkę | operator przy terminalu |
| przy kompletacji | przerwać zlecenie, znaleźć właściwy towar, skorygować stan | operator i kierownik zmiany |
| przy inwentaryzacji | uzgodnić różnicę, odtworzyć historię ruchów, skorygować dokumenty | magazyn i księgowość |
| u odbiorcy | przyjąć zwrot, wyjaśnić przyczynę, rozliczyć koszt transportu | magazyn, 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.