WMS

Kody komunikatów 54xxx w procedurach T-SQL - architektura błędów i ostrzeżeń w WMS dla mroźni

Jak procedury mroźni zwracają błędy i ostrzeżenia, dlaczego wariant w3 dostał nowy zakres 54xxx i jak podział na setki wskazuje obszar problemu.

W skrócie

Procedury mroźni w Studio WMS.net zwracają błędy i ostrzeżenia jako jeden wiersz danych z kodem w nawiasie kwadratowym na początku tekstu i kolumną POZIOM: 0 w porządku, 1 ostrzeżenie do potwierdzenia, 2 odmowa. Wariant rozwojowy w3 (chłodnia) dostał zakres 54xxx, bo wszystkie setki 51xxx mają już przypisany obszar, a wstępna specyfikacja próbowała użyć zajętych kodów. Podział 540xx-546xx wskazuje obszar problemu: temperatura, TOR, waga zmienna, statusy weterynaryjne, wymagania odbiorcy, usługi i praca w zimnie. Każdy zakres ma własne etapy i testy.

Jak procedura zwraca błąd lub ostrzeżenie

Procedury mroźni (sp_mro_*) nie sygnalizują problemów przez RAISERROR ani parametry wyjściowe. Każda procedura akcji zwraca jeden wiersz z kolumnami OK, KOMUNIKAT, ID i NR, a kontrole ostrzegawcze dodają kolumnę POZIOM. Przyczyna jest praktyczna. Ekrany wołają procedury przez warstwę zapytań _code_sql, a błąd SQL zgłoszony przy zapisie wywołanym przez ssExSQL cofa zapis, ale nie wraca do ekranu. Parametrów OUTPUT ta warstwa także nie odbiera, a komunikat w wierszu odpowiedzi dociera zawsze.

Treść komunikatu zaczyna się od kodu: pięciu cyfr w nawiasie kwadratowym. Ekran wyciąga kod z początku tekstu i może na jego podstawie zmienić zachowanie, a użytkownikowi pokazuje sam tekst, przetłumaczony na język konta.

Droga komunikatu od procedury do ekranuEkran wywołuje warstwę _code_sql, ta procedurę sp_mro. Procedura zwraca jeden wiersz z kolumnami OK, KOMUNIKAT, ID, NR i POZIOM. POZIOM 0 oznacza sukces, 1 ostrzeżenie do potwierdzenia, 2 odmowę.Ekran lub terminalskan, przyciskWarstwa _code_sqlssDataSQLAsyncProcedura sp_mro_*walidacje, zapisJeden wierszOK, KOMUNIKAT,ID, NR, POZIOMekran czyta POZIOM i kod z początku komunikatuPOZIOM 0 - w porządkuoperacja wykonana,brak komunikatualbo informacjaPOZIOM 1 - ostrzeżeniebaner bursztynowy, wibracja,drugi ENTER potwierdzai ponawia z potwierdz=1POZIOM 2 - odmowabaner czerwony, wibracja,kursor wraca do pola skanu,zapis nie następujeKomunikat zawsze dociera do ekranu jako dane. Błąd SQL zgłoszony przy zapisie przez ssExSQLcofa zapis, ale ekran dostaje pustą odpowiedź - dlatego procedury nie używają RAISERROR.
Ekran wywołuje warstwę _code_sql, ta procedurę, a procedura zwraca jeden wiersz z poziomem 0, 1 lub 2.
POZIOMZnaczenieZachowanie terminala
0w porządkuoperacja wykonana, bez komunikatu albo z informacją
1ostrzeżenie do potwierdzeniabaner bursztynowy i wibracja; drugi ENTER wywołuje procedurę ponownie z parametrem potwierdz=1
2odmowabaner czerwony i wibracja, zaznaczony wpis i kursor w polu skanu; dalszy ruch wymaga zmiany danych albo decyzji kierownika

Przykład odpowiedzi procedury przy próbie odłożenia lodów do zbyt ciepłej komory:

SELECT CAST(0 AS bit) AS OK,
       N'[54001] Gniazdo K2A-01-1 ma -18 °C, a lody wymagają -22 °C lub zimniej - wybierz gniazdo w komorze K1.' AS KOMUNIKAT,
       CAST(NULL AS bigint) AS ID,
       CAST(NULL AS varchar(20)) AS NR,
       2 AS POZIOM;
Terminal przyjęcia nośnika: czerwone pole Data mrożenia i czerwony baner z komunikatem, że partia ma już zarejestrowaną datę mrożenia 2026-09-18, oraz przycisk Użyj 2026-09-18
Odmowa na terminalu: komunikat bez kodu w czerwonym banerze, czerwone pole z zaznaczonym wpisem gotowym do zastąpienia kolejnym skanem i przycisk podstawiający poprawną wartość.
Przyjęcie nośnika mieszanego w przeglądarce: czerwony komunikat o zarejestrowanej dacie mrożenia partii i przycisk Użyj 2026-09-18 nad listą linii dokumentu
Ta sama odmowa w wersji przeglądarkowej ekranu przyjęcia: komunikat pojawia się pod polami linii, a przycisk jednym kliknięciem podstawia wartość z systemu.

Dlaczego wariant w3 dostał zakres 54xxx

W mroźni trzecia cyfra kodu, czyli setka, wskazuje obszar: 511xx to przyjęcie, 512xx odłożenie, 513xx kompletacja i tak dalej. Dzięki temu serwisant po samym numerze wie, w której procedurze szukać. W skryptach mroźni występuje około dziewięćdziesięciu kodów 51xxx rozłożonych na wszystkie dziesięć setek od 510xx do 519xx.

Mapa zakresów kodów komunikatów mroźniSetki 510xx do 519xx są zajęte przez obszary: ogólne, przyjęcie, odłożenie, kompletację, kartony, przeładunek, depozytora, panel klienta, import i generator. Zakres 540xx do 546xx jest wolny i został przydzielony wariantowi w3.Zakres 51xxx - wszystkie setki mają już przypisany obszar510xxogólne511xxprzyjęcie512xxodłożenie513xxkomplet.514xxkartony515xxprzeładunek516xxdepozytor517xxpanel518xximport519xxgeneratorCzerwona ramka - kody 51105 i 51201-51203, które wstępna specyfikacja TOR i wagi zmiennej chciała zająć ponownieZakres 54xxx - wolny, przydzielony wariantowi w3540xxtemperaturagniazda541xxTOR542xxwagazmienna543xxpartie istatusy wet.544xxwymaganiaodbiorcy545xxusługichłodnicze546xxpracaw zimniesetka zajęta (51xxx)setka wolna, przydzielona w3zakres opcjonalny (546xx)
Setki 510xx-519xx są zajęte, a zakres 540xx-546xx został przydzielony wariantowi w3.
SetkaObszarPrzykładowe kody w użyciu
510xxogólne, błąd zapisu51000-51005
511xxprzyjęcie nośników MIX, ważenie brutto i netto51101-51123
512xxodłożenie do gniazda, walidacje lokalizacji51201-51208
513xxkompletacja, FEFO, palety wysyłkowe51301-51317
514xx, 515xxkartony depozytora, przeładunek cross-docking51401-51403, 51501-51504
516xx, 517xxawiza, zlecenia depozytora, panel klienta51601-51611, 51701-51712
518xx, 519xximport stanów otwarcia, generator danych demo51801-51802, 51981-51993

Pula nie jest wyczerpana liczbowo, ale każda setka ma już właściciela. Dopisanie obszaru do któregoś z nich zatarłoby zasadę, że kod wskazuje moduł. Dlatego wariant w3 (chłodnia) dostał wolny zakres 54xxx. Przed przydziałem sprawdzono skrypty migracyjne i dokumentację: żaden kod 54xxx nie występował poza projektem mroźni.

Kolizja wykryta w specyfikacji wstępnej

Wstępny projekt modułów TOR i wagi zmiennej próbował użyć kodów 51201-51203, zajętych przez odłożenie, oraz 51105, zajętego przez rozbicie wag. Wdrożenie tych kodów nadpisałoby znaczenie istniejących komunikatów, a ekrany rozpoznające je po numerze zachowałyby się niewłaściwie w transakcjach, które działają. Błąd wychwycił przegląd projektu przed napisaniem kodu, a nowe komunikaty przeniesiono do zakresu 54xxx.

Podział zakresów 54xxx

Zakres 54xxx jest podzielony według tej samej zasady co 51xxx. Wariant w3 rozwija mroźnię w pięciu etapach: E1 to klasy temperatur, TOR i atrybuty partii, E2 statusy i identyfikowalność, E3 telemetria temperatur, E4 mapa gniazd i rotacja, E5 waga zmienna i usługi chłodnicze. Tabela zbiera kody według zakresów i etapów.

ZakresObszarEtapKody
540xxtemperatura gniazda i komory, odczytyE1, E354001-54003
541xxTOR, czas poza chłodniąE154101-54107
542xxwaga zmiennaE554201-54203
543xxatrybuty partii, statusy weterynaryjne, kwarantannaE1, E254301-54304
544xxwymagania odbiorcy, FEFO procentoweE254401
545xxusługi chłodnicze i rozliczenieE5ostrzeżenia i błędy naliczania usług
546xxpraca w zimnie, moduł opcjonalnyopcja54601

Zakresy po kolei

540xx - temperatura gniazda i komory

Kod 54001 odmawia odłożenia towaru do gniazda cieplejszego, niż wymaga towar: lody wymagające -22 °C kierowane do komory K2 o temperaturze -18 °C dostają odmowę z podpowiedzią komory K1. Kod 54003 działa w odwrotnym kierunku, gdy towar ma dolną granicę temperatury, na przykład towar chłodzony, którego nie wolno składować zbyt zimno. W etapie E1 porównanie opiera się na nominalnej klasie temperatury gniazda z kartoteki. Kod 54002 w etapie E3 (opisanym w artykule Monitoring temperatury komór chłodniczych) opiera się na temperaturze zmierzonej: komora w stanie odchylenia lub awarii blokuje odłożenie towaru, który wymaga zimniejszego otoczenia, na przykład komunikatem, że komora K2 ma teraz -14,5 °C przy normie -18 °C.

541xx - TOR

Zakres obsługuje licznik czasu poza chłodnią. Kod 54101 ostrzega po przekroczeniu progu, 54102 informuje o przekroczeniu limitu przy akcji ostrzeżenie, 54103 blokuje odłożenie do komory przy akcji blokada, a 54104 pozwala odłożyć nośnik i nadaje mu status Kwarantanna TOR. Kody 54105-54107 obsługują ręczne skierowanie nośnika na kwarantannę przez kierownika: brak powodu, nośnik niebędący poza chłodnią w przyjęciu i nośnik, który ma już status. Pełny opis progów, akcji i przykład na osi czasu zawiera artykuł Czas poza chłodnią (TOR) w WMS.

KodPOZIOMSytuacja
541011przekroczony próg ostrzeżenia, odłóż nośnik w pierwszej kolejności
541021przekroczony limit, akcja ostrzeżenie, odłożenie z zapisem
541032przekroczony limit, akcja blokada, odłożenie do komory zablokowane
541041przekroczony limit, akcja kwarantanna, odłożenie ze statusem

542xx - waga zmienna

Zakres reguluje tolerancje wagi kartonów o niejednorodnej masie i należy do etapu E5. Kod 54201 ostrzega, gdy średnia waga kartonu wykracza poza widełki z kartoteki, i wymaga potwierdzenia z wpisem do rejestru rozbieżności. Kod 54202 twardo blokuje ponowne zeskanowanie tego samego numeru seryjnego kartonu z identyfikatora GS1 AI 21. Kod 54203 ostrzega, gdy suma wag przy kompletacji wychodzi poza dopuszczalną tolerancję zamówienia w kilogramach. Tło opisuje artykuł Catch weight w WMS, a rozliczenie wagi i ususzek tekst Usługi chłodnicze w rozliczeniu 3PL.

543xx - atrybuty partii i statusy weterynaryjne

W etapie E1 zakres obejmuje kontrolę atrybutów partii. Kod 54301 odrzuca przyjęcie tej samej partii z innym numerem zakładu lub ubojni niż zarejestrowany, 54303 wymaga numeru weterynaryjnego zakładu dla grup towarowych, które go wymagają, a 54304 pilnuje kolejności dat, na przykład daty pierwszego zamrożenia względem dnia dzisiejszego. Kod 54302 z etapu E2 blokuje kompletację i wydanie partii ze statusem sanitarnym (szczegóły w artykule Identyfikowalność partii i kwarantanna w WMS dla mroźni).

Status działa jako kwarantanna wirtualna: nośnik zostaje w gnieździe, a stan dyspozycyjny jest pomniejszany o zablokowane ilości. Słownik statusów obejmuje próbę do badań, zatrzymanie sanitarne, kwarantannę po przekroczeniu TOR, kwarantannę temperaturową, kwarantannę jakościową i zwolnienie weterynaryjne. Rozdzielenie bieżącego stanu od historii zmian daje ślad audytowy dla każdej decyzji.

544xx - wymagania odbiorcy

Sieci handlowe wymagają często minimalnego procentu całkowitego okresu przydatności w chwili wydania. Kod 54401 odmawia pobrania kartonu partii, która tego nie spełnia, a mechanizm opisuje ten sam artykuł o identyfikowalności. Pozostały procent okresu to różnica terminu przydatności i dnia bieżącego, podzielona przez różnicę terminu przydatności i daty początkowej. Datą początkową jest kolejno data produkcji, data zamrożenia partii albo termin pomniejszony o całkowity okres przydatności z kartoteki, a gdy brakuje wszystkich trzech, partia jest odrzucana.

545xx - usługi chłodnicze i rozliczenie

Zakres jest zarezerwowany dla ewidencji operacji rozliczeniowych 3PL (artykuł o usługach chłodniczych): prądu postojowego naczepy, zamrażania szokowego, temperowania i magazynowania w masie. Błędy i ostrzeżenia naliczania usług mają własny zakres, dzięki czemu nie mieszają się z komunikatami operacji magazynowych.

546xx - praca w zimnie, moduł opcjonalny

Kod 54601 odmawia przydzielenia kolejnego zadania w komorze po przekroczeniu limitu ciągłego pobytu pracownika i prosi o zarejestrowanie przerwy. Wartość limitu ustawia klient zgodnie z własną oceną ryzyka zawodowego, a system nie zakłada wartości z przepisów.

Zasady dodawania nowych kodów

Poniższe reguły pozwalają utrzymać porządek, gdy zakres 54xxx będzie się rozrastał.

  • Sprawdź, czy kod jest wolny. Przed przydziałem przeszukaj skrypty i dokumentację, na przykład poleceniem poniżej, i dopisz nowy kod do tabeli zakresów.
grep -ohE '\[5[0-9]{4}\]' *.sql | sort -u
  • Zwracaj komunikat w wierszu. Walidacja ustawia komunikat i przechodzi do końca procedury, bez THROW i RAISERROR.
  • Dobierz poziom. Ostrzeżenie ma POZIOM 1 i potwierdzenie przez potwierdz=1, odmowa ma POZIOM 2.
  • Powtórz kontrolę po stronie bazy. Ta sama reguła działa w procedurze zapisującej, więc ominięcie ekranu niczego nie zmienia.
  • Pozwól wyłączyć kontrolę. Każda nowa kontrola ma parametr włączający, na przykład MRO_TOR_WLACZ, żeby demo pokazało zachowanie przed i po.
  • Tłumacz tekst, nie kod. Treść przechodzi przez słownik języków, a kod zostaje w oryginale.
  • Testuj każdy kod. Test w transakcji wycofywanej ma przypadek wywołujący komunikat i przypadek, w którym kontrola przepuszcza poprawne dane.

Podsumowanie

Procedury mroźni zwracają błędy i ostrzeżenia jako dane: wiersz z komunikatem, kodem na początku tekstu i poziomem 0, 1 lub 2. Wariant w3 dostał zakres 54xxx, bo wszystkie setki 51xxx mają już przypisany obszar, a wstępna specyfikacja próbowała użyć zajętych kodów. Podział na setki pozwala po numerze błędu wskazać obszar problemu, a reguły dodawania kodów chronią ten porządek przy kolejnych etapach.

Zakres funkcjonalny wersji dla mroźni opisuje artykuł o systemie WMS dla mroźni i chłodni, a ekrany terminala instrukcja WMS dla mroźni. Wersję podstawową sprawdzisz na koncie demo: demo WMS dla mroźni.

FAQ

Pytania i odpowiedzi o kodach komunikatów 54xxx

01

Dlaczego procedury mroźni nie używają RAISERROR?

Ekrany wołają procedury przez warstwę zapytań, w której błąd SQL zgłoszony przy zapisie cofa operację, ale nie dociera do ekranu. Dlatego procedura zwraca komunikat jako dane w jednym wierszu odpowiedzi, a ekran zawsze go otrzymuje.

02

Co oznacza kolumna POZIOM w odpowiedzi procedury?

POZIOM 0 oznacza sukces, 1 ostrzeżenie do potwierdzenia, a 2 odmowę. Przy poziomie 1 operator potwierdza drugim ENTER, a procedura jest wywoływana ponownie z parametrem potwierdz=1.

03

Dlaczego wariant w3 używa kodów 54xxx, a nie kolejnych numerów 51xxx?

W 51xxx każda z dziesięciu setek ma już przypisany obszar, a setka wskazuje moduł. Dodanie nowych obszarów do zajętych setek zatarłoby tę zasadę, a wstępna specyfikacja próbowała dodatkowo użyć kodów już zajętych.

04

Które kody 54xxx obsługuje system?

Zakresy 540xx-544xx obejmują temperaturę gniazda i komory, TOR, wagę zmienną, atrybuty i statusy partii oraz wymagania odbiorcy. Zakres 545xx dotyczy usług chłodniczych, a 546xx pracy w zimnie jako modułu opcjonalnego.

05

Czy użytkownik widzi kod komunikatu?

Na ekranie pojawia się sam tekst, przetłumaczony na język konta. Kod stoi na początku komunikatu zwracanego z bazy i służy ekranowi oraz serwisowi do rozpoznania sytuacji.

06

Czy kody 51xxx nadal działają?

Tak. Kody 51xxx obsługują przyjęcie, odłożenie, kompletację, panel depozytora i pozostałe istniejące procedury, a zakres 54xxx dochodzi obok nich w wariancie w3.

Słownik

Słownik pojęć

KKod komunikatu
pięć cyfr w nawiasie kwadratowym na początku tekstu komunikatu, wskazujące obszar i sytuację.
PPOZIOM
kolumna odpowiedzi procedury: 0 w porządku, 1 ostrzeżenie do potwierdzenia, 2 odmowa.
PPotwierdzenie ostrzeżenia
ponowne wywołanie procedury z parametrem potwierdz=1 po drugim naciśnięciu ENTER na terminalu.
SSetka kodu
trzecia cyfra kodu, która wskazuje obszar, na przykład 541xx dla TOR.
WWarstwa _code_sql
repozytorium zapytań wywoływanych z ekranów po identyfikatorze, bez wysyłania SQL z przeglądarki.
KKwarantanna wirtualna
status blokujący wydanie towaru bez fizycznego przestawiania nośnika w komorze.
TTOR
Time-Out-of-Refrigeration, czas, który nośnik spędza poza komorą chłodniczą.
WWariant w3
trzeci etap rozwoju WMS dla mroźni, obejmujący temperatury, TOR, statusy, wagę zmienną i usługi chłodnicze.
Powiązane treści

Zobacz też

WMS

Czas poza chłodnią (TOR) w WMS

Progi, akcje, komunikaty 54101-54107 i przykład na osi czasu.

dowiedz się więcej →
WMS

Catch weight w WMS

Stan w kartonach, rozliczenie w kilogramach i komunikaty wagi zmiennej.

dowiedz się więcej →
WMS

System WMS dla mroźni i chłodni

Komory, partie, waga zmienna, FEFO i granice modułu.

dowiedz się więcej →
WMS

Identyfikowalność partii i kwarantanna

Statusy sanitarne, mock recall i FEFO z wymaganiem odbiorcy.

dowiedz się więcej →
WMS

Monitoring temperatury komór chłodniczych

Czujniki, alarmy i plan ewakuacji towaru.

dowiedz się więcej →
WMS

Rozmieszczenie towaru w chłodni

Stany miejsc, rotacja ABC i odległość od śluzy.

dowiedz się więcej →
3PL

Usługi chłodnicze w rozliczeniu 3PL

Prąd postojowy, zamrażanie, temperowanie i ususzki.

dowiedz się więcej →
WMS

Kontrola dat mrożenia i FEFO

Kolory regału według terminu i kompletacja kartonów z licznikiem.

dowiedz się więcej →
Instrukcja

Instrukcja WMS dla mroźni

Opis ról, ekranów terminala i scenariusz pokazu.

dowiedz się więcej →
WMS

Demo WMS dla mroźni i chłodni

Konta kierownika, magazyniera i depozytorów na danych demonstracyjnych.

dowiedz się więcej →
WMS

Wycena Studio WMS.net

Formularz zapytania o wdrożenie.

dowiedz się więcej →