Od 1 lipca 2019 roku w Rosji wprowadzono obowiązkowe oznakowanie grupy towarów. Od 1 marca 2020 roku do tego prawa miały dołączyć buty. Nie wszyscy zdążyli się przygotować, w związku z czym rozpoczęcie procesu przesunięto na 1 lipca. Lamoda należy do tych, którzy zdążyli.
Dlatego chcemy podzielić się doświadczeniami z tymi, którzy dopiero co będą musieli oznakować odzież, opony, perfumy itd. W artykule opisano szereg standardów branżowych, pewne akty prawne oraz osobiste doświadczenia. Artykuł skierowany jest przede wszystkim do integratorów i programistów, którzy dopiero będą się z tym projektem zapoznawać.

Należy zwrócić uwagę, że baza normatywna często się zmienia, a autor nie ma możliwości ciągłego aktualizowania materiału. Dlatego w momencie przeczytania część informacji może być już nieaktualna.
Osobiste doświadczenie autora pochodzi zarówno z pracy nad projektem Datamatrix w Lamoda, jak i z opracowywania własnej bezpłatnej aplikacji do oznakowania BarCodesFx.
Od 1 lipca 2019 roku w Rosji obowiązuje ustawa o obowiązkowym oznakowaniu. Ustawa nie dotyczy wszystkich grup towarów, a terminy wprowadzenia obowiązkowego oznakowania dla różnych grup towarów są zróżnicowane. Obecnie pod obowiązkowe oznakowanie podlegają tytoń, futra, obuwie, leki. Wkrótce wprowadzone zostanie dla opon, odzieży, perfum i rowerów. Każda grupa towarów regulowana jest odrębnym rozporządzeniem rządu (PPR). Dlatego niektóre stwierdzenia, które są prawdziwe dla obuwia, mogą być nieprawdziwe dla innych grup towarów. Można jednak mieć nadzieję, że aspekty techniczne nie będą się znacznie różnić w przypadku różnych grup towarów.
OznakowanieGłówną ideą oznakowania jest przypisanie każdemu towarowi indywidualnego numeru. Na podstawie tego numeru można śledzić historię konkretnej jednostki towaru od momentu produkcji lub importu do kraju, po moment wycofania z kasy. Brzmi ładnie, ale w praktyce jest to niezwykle trudne do zrealizowania. Szczegóły koncepcji opisano na oficjalnej stronie "uczciwego znaku".
Powszechnie akceptowane terminy i pojęcia
UOT — uczestnik obrotu towarami.
CRPT — centrum rozwoju perspektywicznych technologii. Prywatna firma, jedyny państwowy wykonawca projektu oznaczenia. Działa na zasadzie partnerstwa publiczno-prywatnego (PPP). Niestety, brak informacji o innych uczestnikach przetargu oraz o samym przetargu.
TG — grupa towarowa. Obuwie, odzież, opony itd.
GTIN — w zasadzie, artykuł uwzględniający kolor i rozmiar. Wydawany w GS1 lub krajowym katalogu dla każdego importera lub producenta dotyczącego jego towaru. Producent lub importer musi najpierw opisać ten towar.
PPR — rozporządzenie rządu Federacji Rosyjskiej. Dla obuwia — 860.
KM — kod oznaczenia. Unikalny zestaw symboli przypisanych do konkretnego towaru. Dla obuwia składa się z GTIN, numeru seryjnego, kodu weryfikacji i kryptowiedzy.
GS1 — międzynarodowa organizacja wydająca GTIN-y. Także twórca szeregu standardów dotyczących oznaczeń.
Krajowy katalog — odpowiednik GS1, opracowany przez CRPT.
Kryptowiedza — odpowiednik podpisu cyfrowego, potwierdzający legalność KM. Musi być obecny w matrycy danych na etykiecie. Przechowywanie w postaci tekstowej jest zabronione. Po wydrukowaniu etykiety musi być usunięty zgodnie z umową z CRPT. Nie ma znanej sytuacji rzeczywistego użycia.
SUZ — stacja zarządzania zamówieniami. System, w którym zamawiane są KM dla towaru.
EDO — elektroniczny obrót dokumentami.
UKEP — wzmocniony kwalifikowany podpis elektroniczny.
Terminy i pojęcia w ramach tego artykułu
CZ — uczciwy znak.
LK — panel użytkownika.
Etykieta — wydrukowany kod oznaczenia.
Proces wygląda następująco: najpierw uczestnik (UOT) wydaje podpis elektroniczny (UKEP), rejestruje się w uczciwym znaku (CZ), opisuje towar w krajowym katalogu lub GS1, otrzymuje GTIN-y na towar. Kroków tych szczegółowo opisano na stronie uczciwego znaku, więc nie będziemy się na nich zatrzymywać.
Zamówienie i otrzymanie kodów
Po otrzymaniu GTIN-ów uczestnik (UOT) składa zamówienie na kody (KM) w systemie SUZ.
Ważne, ale nie oczywiste.
- W jednym zamówieniu można zażądać kodów maksymalnie dla 10 GTIN-ów. Generalnie jest to niezrozumiałe ograniczenie. Importer z 14 000 GTIN-ami musi złożyć 1400 zamówień.
- W jednym zamówieniu można zażądać maksymalnie 150 000 kodów.
- Istnieje ograniczenie do 100 zamówień w obróbce. Oznacza to, że jednocześnie w trakcie przetwarzania może być nie więcej niż 100 zamówień. Jeśli ich liczba przekroczy 100, API zacznie zwracać błąd zamiast listy zamówień. Jedynym sposobem na rozwiązanie tego problemu jest zamknięcie części zamówień za pośrednictwem interfejsu internetowego. API nie przewiduje parametru do częściowego wyświetlania zamówień.
- Istnieje limit liczby zapytań — nie więcej niż 10 żądań na sekundę. Z moich informacji wynika, że to ograniczenie nie jest wymienione w dokumentach, ale istnieje.
Z własnego doświadczenia w pracy z zamówieniami na kody znakowania KM za pośrednictwem API systemu SUZ.
- Zapytanie (sam json) musi być podpisane zgodnie z normą GOST. To praca z kryptopro. Należy uważnie monitorować, aby używana ramka lub biblioteka nie zmieniły nawet na bajt oryginalnego json. W przeciwnym razie podpis przestaje być ważny.
- Podpis zamówienia. Zamówienie może być podpisane dowolnym podpisem, dowolnego klienta. Jeśli podpis jest ważny, system SUZ go przyjmie. W trakcie integracji udało się podpisać zapytanie cudzym podpisem, wydanym przez testowe CA. Produkcyjny kontur SUZ przetworzył zamówienie i wydał kody. Moim zdaniem jest to luka w bezpieczeństwie. Na raport błędu deweloperzy zareagowali 'sprawdzimy'. Mam nadzieję, że to poprawili.
Dlatego należy być niezwykle ostrożnym, jeśli na jednym stanowisku pracy działa więcej niż jedna osoba prawna. Dziś SUZ przyjmie te zapytania, a jutro ponownie sprawdzą zapytania i wycofają połowę kodów z powodu cudzych podpisów. I w zasadzie, formalnie będą mieli rację.
- Automatyczne podpisywanie zamówień to funkcjonalność, która nie jest już dostępna w SUZ. Do jej działania wymagane było załadowanie prywatnej części klucza w osobistym panelu uczciwego znaku. Stanowi to kompromitację klucza. I zgodnie z obowiązującym prawem, w przypadku kompromitacji wzmacnianej kwalifikowanej e-podpisu właściciel musi poinformować swój certyfikujący ośrodek (CA) i wycofać wzmacnianą kwalifikowaną e-podpis. Jeśli ta funkcjonalność zostanie przywrócona, należy uważnie monitorować, aby prywatna część klucza nie opuściła komputera.
- W lutym Centrum Rozwoju Perspektywnych Technologii (CRPT) bez żadnych zapowiedzi wprowadziło ograniczenie liczby zapytań do API SUZ. Nie więcej niż jedno zapytanie na sekundę. Potem równie niespodziewanie i cicho to ograniczenie zdjęto. Dlatego zalecam wprowadzenie w systemie możliwości ograniczenia liczby zapytań do API CRPT w przypadku recydywy. Obecnie dostępna jest informacja o limicie na poziomie 10 zapytań na sekundę.
- Również w lutym bez zapowiedzi znacząco zmieniło się zachowanie API SUZ. W API znajduje się zapytanie o status zamówień. W statusie wskazywano bufory i ich stan. Jeden GTIN = jeden bufer. Wskazywano tam również, ile kodów można pobrać z buforu. Pewnego dnia liczba kodów we wszystkich buforach zmieniła się na -1. Zmusiło to do osobnego pytania o stan każdego bufora z osobna. Zamiast jednego zapytania, trzeba było wykonać jedenaście.
Struktura kodów
Kody zostały zamówione i wygenerowane. Można je pobrać przez API w formacie tekstowym, w PDF jako etykiety do druku oraz jako plik CSV z tekstem.
O API już było wspominane powyżej. Jeśli chodzi o dwa inne sposoby. Początkowo SUZ pozwalał na pobranie kodów tylko raz. Jeśli pobierał się plik PDF, to kody w formacie tekstowym można było uzyskać tylko ponownie skanując wszystkie datamatrixy z PDF. Na szczęście dodano możliwość wielokrotnego pobierania kodów, przez co problem został rozwiązany. Kody są dostępne do ponownego pobrania przez dwa dni.
Jeśli pobierasz w formacie CSV, nigdy, w żadnych okolicznościach, nie otwieraj go w Excelu. I nie pozwól nikomu tego zrobić. W Excelu jest funkcja automatycznego zapisywania. W momencie zapisywania Excel może w sposób nieprzewidywalny zmienić Twoje kody. Zalecam użycie notepad++ do przeglądania kodów.
Jeśli otworzysz plik z SUZ w notepad++, możesz zobaczyć linie tego typu. Trzeci kod jest nieważny (brakuje mu separatorów GS).
![]()
Partnerzy przekazywali nam kody do znakowania swoich produktów. Gołym okiem widać, jakie pliki były tworzone za pomocą Excela - do 5% kodów było nieważnych.
Zalecam gorąco zapoznać się z GS1. W opisie standardu znajdują się odpowiedzi na wiele pytań dotyczących tworzenia DataMatrix.
Kod identyfikacji składa się z GTIN i numeru seryjnego. Zgodnie z normą GS1 odpowiadają im identyfikatory zastosowań (IZ) 01 i 21. Zauważ, że identyfikatory zastosowań nie są częścią GTIN i numeru seryjnego. Wskazują one, że po identyfikatorze zastosowania (IZ) następuje GTIN lub numer seryjny. Jest to szczególnie istotne podczas programowania oprogramowania kasowego. Do wypełnienia tagu 1162 potrzebne są właśnie GTIN i numer seryjny, bez identyfikatorów zastosowań.
Dla UTD (uniwersalnego dokumentu przekazania) i innych dokumentów z kolei najczęściej potrzebny jest zapis w całości z identyfikatorami zastosowań.

W normie GS1 zapisano, że GTIN ma stałą długość wynoszącą 14 znaków i może składać się tylko z cyfr. Numer seryjny ma zmienną długość i opisany jest na stronie 155 normy. Tam znajduje się również odnośnik do tabeli symboli, które mogą występować w numerze seryjnym.
Ponieważ numer seryjny ma zmienną długość, separator GS wskazuje na jego zakończenie. W tabeli ASCII ma on kod 29. Bez tego separatora żadny program nie zrozumie, w którym momencie zakończył się numer seryjny, a zaczęły się inne grupy danych.
Dokładniejsze informacje na temat kodu oznaczenia (КМ) można znaleźć w .
Dla obuwia numer seryjny jest ustalony na 13 znaków, jednak jego rozmiar może być zmieniany w dowolnym momencie. Dla innych grup towarowych (ТГ) długość numeru seryjnego może się różnić.
Generacja DataMatrix

Kolejny krok to transformacja danych w kod DataMatrix. W rozporządzeniu rządu FR 860 wskazano normy, według których konieczne jest formowanie DataMatrix. W PP 860 określono również obowiązkowe stosowanie identyfikatorów zastosowań. Zauważ, że w standardzie DataMatrix nie ma pojęcia „identyfikatory zastosowań”. Istnieją one tylko w standardzie GS-1 DataMatrix. Wygląda na to, że PP 860 niejawnie zobowiązuje do używania właśnie GS-1 DataMatrix. Na szczęście standardy są podobne. Główna różnica: w GS-1 DataMatrix pierwszy symbol musi być FNC1. Symbol GS nie powinien znajdować się na pierwszym miejscu w DataMatrix, tylko FNC1.
FNC1 nie można po prostu dodać do ciągu tak jak GS. Powinien być dodawany przez program generujący DataMatrix. Na zasobach Sojuszu Fortów opublikowano kilka , za pomocą których można sprawdzić poprawność wygenerowanych kodów DataMatrix.
To istotne. Aplikacja ChZ akceptuje nieprawidłowe DataMatrix. Nawet kody QR. Fakt, że marka została rozpoznana i informacje o produkcie się wyświetliły, nie oznacza, że DataMatrix został prawidłowo wygenerowany. Nawet przy zamianie kryptohosta aplikacja ChZ rozpoznała markę i wyświetliła dane dotyczące produktu.
Później ChZ wydało , jak prawidłowo generować kody. Z powodu dużej liczby błędnych kodów uznali kody bez FNC1 za ważne, jednak nadal zalecają generowanie GS-1 DataMatrix.
Niestety, dość duży procent datamatryksów od partnerów przychodził z błędami. Dzięki wyjaśnieniom od ChZ całkowicie rozwiązano kwestię „Czy można sprzedawać taki towar po 1 lipca, czy nie?”. Spojler - można.
Drukowanie
Zwróć uwagę na sposób drukowania marek. Przy drukowaniu na drukarce termicznej marka szybko blaknie, a ten towar już nie może być sprzedawany. Nieczytelna marka to naruszenie PPR 860. Co prowadzi do konfiskaty towaru, kar finansowych, odpowiedzialności karnej.
Używaj druku termotransferowego. W takim przypadku marka nie jest aż tak narażona na blaknięcie. Od materiału etykiety również zależy, jak bardzo marka jest narażona na uszkodzenia mechaniczne. Jeśli kod nie jest odczytywany z powodu uszkodzenia mechanicznego, jest to równoważne braku marki ze wszystkimi wynikającymi z tego konsekwencjami.

Wybierz drukarkę dostosowaną do planowanych ilości druku. Drukarki biurkowe nie są przeznaczone do drukowania 100 000 etykiet dziennie.
Zatrzymanie i rozpoczęcie druku zwiększa zużycie drukarki. Niektóre programy wysyłają zadanie drukowania po jednej etykiecie. Z takimi programami lepiej nie korzystać.
Praca z dokumentami
Po tym jak marki zostaną wydrukowane i naklejone, wszystkie dalsze operacje z nimi odbywają się za pośrednictwem dokumentów lub osobistego konta ChZ.
Pracując z dużą ilością kodów, można tworzyć pliki xml, w których będą wymagane kody, i ładować te pliki przez API lub interfejs webowy osobistego konta.
Schemat XSD można pobrać w sekcji „pomoc” w osobistym koncie ChZ.
Zwróć uwagę na następujące punkty.
- Schematy XSD w osobistym koncie ChZ zawierają błędy w walidacji NIP i ograniczenia długości łańcucha. Tylko po poprawieniu błędów można korzystać z tych schematów. Na szczęście błędy są oczywiste, więc łatwo je naprawić.
- Schemat najczęściej składa się z dwóch części — wspólnej dla wszystkich typów dokumentów oraz oddzielnej dla konkretnego typu. Wspólna schemat została dodana poprzez import do konkretnego. Oba schematy umieszczone są w sekcji pomoc w panelu klienta.
- Zasady eskalacji dla KM różnią się od ogólnie przyjętych dla XML, o czym pisze oficjalna dokumentacja od CZ, zwróć na to uwagę. Oto na stronie 4 wszystkie zasady.
- Nie należy próbować wprowadzać 150 000 kodów do obiegu jednym plikiem. Ze słów świadków pliki większe niż 30 000 zazwyczaj przechodzą.
- Plik XML może być odrzucony z błędem "błąd walidacji xml", a za pięć minut ten sam plik zostanie przyjęty bez problemu.
- Jeśli w pliku znajduje się już wprowadzony w obieg kod, to plik wprowadzenia do obiegu prawdopodobnie nie zostanie przyjęty.
- Dokumenty wysyłki i przyjęcia stanowią tymczasowe rozwiązanie. W przyszłości planują je zlikwidować i przejść na UPD zgodnie z PPR 860.
- Mit o 60 dniach. Krąży opinia, że niewprowadzone do obiegu kody "wygasają" po 60 dniach. To mit, źródło nieznane. Kody "wygasają" tylko wtedy, gdy nie odebrałeś ich z SUZ w ciągu 60 dni. Termin ważności odebranych kodów nie jest ograniczony.
Podsumowanie
Podczas opracowywania mojej bezpłatnej aplikacji do etykietowania BarCodesFX, początkowo dokonano integracji z API SUZ. Kiedy uczciwy znak po raz drugi niespodziewanie zmienił logikę działania API, musiałem zrezygnować z integracji. Mam nadzieję, że w przyszłości CZ uda się ustabilizować rozwój i API, ponieważ dla niekomercyjnego produktu jest dla mnie bardzo kosztowne codziennie weryfikować, czy zaszły zmiany w API i szybko dostosowywać.
Podczas wdrażania etykietowania dokładnie zapoznaj się z przepisami regulacyjnymi dla swojej grupy towarowej TG, poprawnie drukuj GS1-DataMatrix i bądź gotowy na wszelkie nieprzewidziane zmiany ze strony uczciwego znaku CZ.
Sojusz Forta stworzył przestrzeń informacyjną (, w telegramie, seminaria, webinaria), gdzie możesz znaleźć przydatne i aktualne informacje dotyczące etykietowania we wszystkich branżach.
Źródło: habr.com
