Kody kreskowe 1D i 2D w StudioSystem: jak dobrać symbolikę do towaru i jak skanować przy przyjęciach oraz wydaniach. Dodatkowo konfiguracja skorowidza i kod C#.
Program SoftwareStudio generuje kody kreskowe i kody QR z funkcji bibliotecznych oraz konfiguracji systemu. Opisujemy tu dobór symboliki i identyfikację towaru po kodzie, a dalej skanowanie przy przyjęciach oraz wydaniach. Na końcu stoi konfiguracja skorowidza z przykładami wywołań w C#.
Wstęp
Kod kreskowy zamienia towar albo miejsce składowania na rekord w bazie danych. Czytnik odczytuje ciąg znaków, a program wyszukuje go w kartotece i rozpoznaje pozycję. W praktyce magazynu przekłada się to na cztery mechanizmy.
Szybkie skanowanie
Magazynier jednym ruchem czytnika wczytuje miejsce składowania albo towar i nie wpisuje indeksu z klawiatury. Przyjęcie i wydanie przebiegają szybciej, bo każda pozycja dokumentu powstaje ze skanu. Przemieszczenie między lokalizacjami działa tak samo.
Mniej pomyłek przy wprowadzaniu danych
Ręczne przepisywanie indeksu to główne źródło błędów: zamienione cyfry albo pominięta pozycja. Skan wyklucza literówkę, a czytnik odrzuca odczyt, w którym nie zgadza się cyfra kontrolna kodu.
Bieżące stany magazynowe
Każdy skan zapisuje operację na konkretnej pozycji i lokalizacji, więc stany magazynowe nadążają za faktycznym ruchem towaru. Jednoznaczne oznaczenie miejsc kodami pozwala też optymalizować wykorzystanie przestrzeni magazynowej, bo widać lokalizacje puste i przepełnione.
Wspólny klucz dla systemów
Ten sam kod służy programowi magazynowemu i systemowi zewnętrznemu, na przykład ERP. Wymiana danych opiera się wtedy na identycznym symbolu towaru po obu stronach, a zasady opisują strony o relacji WMS i ERP oraz o integracjach. Samo skanowanie w magazynie opisuje sekcja o integracji skanowania z WMS.
Symbolika 1D i 2D oraz wybór kodu
Symbolika określa, jak znaki zamieniają się na paski albo moduły. Kody 1D czytnik odczytuje wzdłuż jednej linii skanu, a kody 2D, jak QR, zapisują dane w siatce modułów i mieszczą ich więcej na mniejszej powierzchni. Konfiguracja StudioSystem obsługuje oba rodzaje, a typy zestawiono w tabeli.
| Typ kodu | Rodzaj | Kodowane dane | Typowe zastosowanie w magazynie |
|---|---|---|---|
| EAN13 | 1D, liczbowy, 13 cyfr | Wyłącznie cyfry | Standardowe oznaczenie jednostkowe towaru |
| EAN128 | 1D, alfanumeryczny, zmienna długość | Znaki alfanumeryczne oraz identyfikatory GS1 | Etykiety logistyczne jednostek zbiorczych i palet |
| CODE128 | 1D, alfanumeryczny, wysoka gęstość | Cyfry i litery | Numery seryjne i lokalizacje na etykietach wewnętrznych |
| CODE39 | 1D, alfanumeryczny, mniejsza gęstość | Znaki alfanumeryczne w ograniczonym zestawie | Proste oznaczenia wewnętrzne |
| 2 of 5 | 1D, liczbowy | Wyłącznie cyfry | Oznaczenia przemysłowe, kartony zbiorcze |
| QR | 2D, wysoka pojemność (domyślnie 140x140 px) | Znaki alfanumeryczne i specjalne, duża ilość danych | Szybkie skanowanie terminalem lub smartfonem |
O wyborze decyduje to, co kodujemy i kto czyta etykietę. Pojedynczy towar sprzedawany w handlu oznacza się EAN-13, bo ten symbol rozpoznaje każdy skaner. Paleta i karton zbiorczy dostają etykietę logistyczną w EAN-128, czyli w Code 128 z identyfikatorami GS1. Lokalizacje i numery seryjne wystarczy zakodować w Code 128, a QR wybiera się przy większej ilości danych albo przy odczycie smartfonem.
Typ kodu dobieramy do danych na etykiecie, nie do wyglądu: EAN-13 przyjmuje wyłącznie cyfry, więc indeksu z literami nie da się w nim zapisać.
EAN-13 i identyfikatory GS1
EAN-13 ma trzynaście cyfr. Pierwsze nadaje organizacja GS1 jako prefiks, środkowe wskazują firmę i towar, a ostatnia jest cyfrą kontrolną. Prefiks nie oznacza kraju produkcji, tylko organizację, która przydzieliła numer firmy; polskie numery zaczynają się od 590.
Etykieta logistyczna w EAN-128 składa się z par: identyfikator aplikacji w nawiasie i wartość. Zasady budowy opisują strony o generowaniu etykiet GS1 i o etykiecie logistycznej, a pełną specyfikację publikuje GS1 Polska. Na etykiecie najczęściej stoją cztery identyfikatory:
- (00) - numer SSCC jednostki logistycznej, czyli palety albo kartonu zbiorczego;
- (01) - numer GTIN towaru;
- (10) - numer partii produkcyjnej;
- (17) - data ważności w formacie RRMMDD.
Kody QR i korekcja błędów
Kod QR ma wbudowaną korekcję błędów w czterech poziomach, od L do H, dlatego czytnik odczyta etykietę częściowo zabrudzoną albo uszkodzoną. Cena jest prosta: wyższy poziom korekcji zajmuje więcej modułów, więc kod rośnie przy tej samej ilości danych. W StudioSystem rozmiar kodu QR ustawia się w pikselach, a domyślna wartość to 140 x 140 px. Kamera terminala odczytuje też zniszczone lub zabrudzone kody, a przy kodach 2D potrafi wczytać kilka etykiet naraz.
Identyfikacja towaru po kodzie w systemie
Sam skan niczego nie rozpoznaje. Czytnik przekazuje ciąg znaków, a program magazynowy porównuje go z danymi w kartotece. Kod EAN wpisany w kartotece asortymentu jest kluczem, po którym baza znajduje właściwy rekord.
Ten sam towar bywa oznaczony różnymi kodami: inny ma sztuka, a inny karton zbiorczy. W kartotece warto więc utrzymywać osobny kod dla każdego poziomu opakowania. Gdy dostawca zmieni opakowanie i nada nowy GTIN, skan nie znajdzie towaru, dopóki kod nie trafi do kartoteki.
Miejsca składowania i palety dostają kody generowane przez system, bo nie istnieją poza magazynem. Skan lokalizacji wskazuje wtedy jednoznaczny adres, a skan palety jej zawartość. Tabela zestawia, co identyfikuje kod w poszczególnych przypadkach.
| Obiekt | Typowy kod | Co wskazuje skan | Źródło treści kodu |
|---|---|---|---|
| Towar jednostkowy | EAN-13 (GTIN) | Pozycję kartoteki asortymentu | Producent, kod wpisany w kartotece |
| Karton zbiorczy | EAN-128 lub 2 of 5 | Pozycję w opakowaniu zbiorczym | Producent albo magazyn |
| Paleta | SSCC w EAN-128 | Jednostkę logistyczną i jej lokalizację | Etykieta logistyczna |
| Miejsce składowania | CODE128 lub QR | Adres lokalizacji w magazynie | Skorowidz kodów, kolumna miejsca składowania |
| Numer seryjny | CODE128 lub QR | Pojedynczy egzemplarz towaru | Skorowidz kodów, kolumna numeru seryjnego |
Integracja skanowania z przyjęciami i wydaniami w WMS
Skan trafia bezpośrednio do dokumentu magazynowego i do bazy, bez pośredniego przepisywania. Czytnik w terminalu z Androidem wczytuje kod, a aplikacja przekazuje go do bazy StudioSystem. Schemat pokazuje drogę jednego skanu.
Przyjęcie towaru
Przy przyjęciu do magazynu magazynier skanuje etykietę logistyczną z numerem SSCC, a system porównuje ją z awizowanym zamówieniem zakupu i dokumentem dostawy. Rozbieżność widać, zanim towar trafi na regał. Dostawę bez zlecenia rejestruje dokument PZB, a numer palety i lokalizację składowania uzupełnia się w jego pozycji. Etykiety z kodami dla przyjętego towaru drukuje się z systemu, co opisuje strona o etykietowaniu produktów.
Wydanie i kompletacja
Przy wydaniu z magazynu skan potwierdza każdą pobraną pozycję. W formularzu WZ asortyment można wskazać kodem kreskowym, a lokalizację kodem miejsca składowania, więc dokument powstaje z odczytów zamiast z ręcznych wpisów. Kompletacja korzysta z tego samego mechanizmu: pomyłka wychodzi w chwili skanu, a nie dopiero przy kontroli pakowania.
Przesunięcia i inwentaryzacja
Przesunięcie palety wymaga skanu jej numeru i kodu lokalizacji docelowej, więc mapa magazynu w systemie pozostaje zgodna ze stanem faktycznym. W inwentaryzacji terminal prowadzi spisującego od lokalizacji do lokalizacji i wymusza zeskanowanie kodu miejsca. Zliczone ilości trafiają od razu na serwer, dlatego kierownik widzi postęp spisu przed jego końcem.
| Operacja | Dokument | Skanowany kod | Co sprawdza system |
|---|---|---|---|
| Przyjęcie | PZ, PZB | Etykieta logistyczna z numerem SSCC | Zgodność z awizowanym zamówieniem i dokumentem dostawy |
| Wydanie | WZ | Kod towaru i kod miejsca składowania | Czy pozycja i lokalizacja zgadzają się z dokumentem |
| Przesunięcie | ZL | Numer palety i lokalizacja docelowa | Czy miejsce docelowe istnieje i pasuje do palety |
| Inwentaryzacja | Arkusz inwentaryzacyjny | Kod lokalizacji i kody towarów | Czy pracownik stoi w wymaganym miejscu |
Każdy skan zostawia w bazie ślad: historię operacji na pozycji i jej aktualną lokalizację. Z tych danych raporty pokazują rotację towaru oraz sezonowe wahania popytu, a wyniki wspierają planowanie zamówień i miejsca w magazynie, co omawia strona o business intelligence dla logistyki. Obsługę terminali opisuje mobilna obsługa magazynu, a dobór sprzętu strona o narzędziach do skanowania kodów.
Konfiguracja
Administrator w sekcji SYSTEMOWE ma dostęp do skorowidza, w którym definiuje się, jakie kody kreskowe i z czego mają powstawać. Każdy wpis skorowidza opisuje osiem parametrów.
| Parametr | Znaczenie | Dopuszczalne wartości |
|---|---|---|
| KOD | Dowolne oznaczenie kodu | Tekst |
| TYP | Rodzaj kodu kreskowego | EAN128, EAN13, QR, CODE39, CODE128, 2of5 |
| TYPMIME | Format graficzny zapisywanego obrazu | image/jpeg, image/png, image/bmp, image/gif |
| KOLUMNA(Y) | Kolumna lub suma kolumn tekstowych (varchar), z których powstaje kodowana informacja, np. indeks, numer seryjny albo miejsce składowania | Nazwy kolumn tabeli lub widoku |
| TABELA | Tabela lub widok SQL, z którego czytane są dane do kodowania | Nazwa obiektu SQL |
| FILTROWANIE | Kolumna, według której program wyszukuje informację w tabeli | Nazwa kolumny |
| ROZMIAR KOD EAN | Wysokość generowanego kodu w pikselach | Liczba px; 0 oznacza domyślne 80 px |
| ROZMIAR KOD QR | Wysokość i szerokość kodu w pikselach | Liczba px; 0 oznacza domyślne 140 px |
Pole FILTROWANIE wyznacza, po czym program odnajduje w tabeli rekord do zakodowania. Przykłady wywołań w następnej sekcji używają w tym celu identyfikatora REFNO.
Przykłady konfiguracji
Przykłady wykorzystania w projekcie
KodyKreskowe.KodKreskowy ssKK = new KodyKreskowe.KodKreskowy();
Utworzenie odwołania do przestrzeni kodów kreskowych.
ssKK.KodyKreskowe(„3135143623390”);
Metoda generuje kody dla pozycji oznaczonych identyfikatorem REFNO = 3135143623390.
ssKK.KodyKreskowe(„3136142127801”, „knaso”);
Zapisy trafiają do tabeli dpean, a jej cztery kolumny przechowują:
- [TYP] - rodzaj kodu kreskowego, np. EAN128;
- [KOD] - informację zakodowaną w kodzie, np. indeks towaru albo numer palety;
- [TYPMIME] - sposób kodowania, np. image/gif;
- [KODEAN] - informację zapisaną binarnie, w postaci obrazka z kodem kreskowym albo kodem QR.
Kody z tabeli dpean można wykorzystać w projektowaniu wydruków dokumentów i raportów Report Builder.
Kody powstają bez polskich znaków diakrytycznych, które zamieniają się na zwykły tekst, a znaki specjalne na symbol -.
Jak WMS.net automatyzuje generowanie kodów przy wydruku dokumentów?
Transakcja rdlc\wydruk_refno.aspx sprawdza przy wydruku dokumentu, czy jego pozycje mają kody, i uzupełnia brakujące.
Zachowaniem steruje parametr ean, którego wartość wskazuje symbol tabeli. Ustawienie ean=DPMAG generuje kody dla tabeli DPMAG.
Systemy informatyczne w magazynie, takie jak WMS.net, znakują w ten sposób miejsca składowania oraz towary w opakowaniach jednostkowych i zbiorczych. Jednolite zasady znakowania upraszczają identyfikację i śledzenie produktów. Automatyczne uzupełnianie kodów skraca też przygotowanie wydruku, bo nikt nie przepisuje indeksów do generatora.