Formularz jest narzędziem pracy magazyniera, a jego układ wpływa na tempo wpisywania danych i liczbę pomyłek. Pole ustawione w złej kolejności kosztuje kilka sekund przy każdym dokumencie, a przy tysiącu dokumentów dziennie robi się z tego godzina pracy. Dlatego formularz projektuje się z równą starannością jak proces, który obsługuje.

Z czego składa się formularz magazynowy

Formularz dokumentu składa się z nagłówka i sekcji pozycji. W nagłówku znajdują się dane wspólne, na przykład kontrahent i data. Pozycje zawierają towar i ilość, a także lokalizację z parametrami partii. Podział odpowiada strukturze dokumentu, więc operator wie, w której części ekranu się znajduje.

Przykładem jest formularz dokumentu PZB, czyli przyjęcia bezpośredniego bez wcześniejszego zlecenia. Po wypełnieniu nagłówka przycisk Dalej przenosi użytkownika do sekcji pozycji. Pole kontrahenta podpowiada wartości po wpisaniu dwóch znaków, a data ma kalendarz z bieżącym dniem jako wartością początkową.

Studio WMS.net - pusty formularz nagłówka dokumentu PZB Przyjęcie bezpośrednie do magazynu bez zlecenia
Formularz nagłówka dokumentu PZB - przyjęcie towaru do magazynu bez wcześniejszego zlecenia przyjęcia
Element formularzaZadaniePrzykład w Studio WMS.net
Pole z podpowiedziąskraca wpisywanie i ogranicza literówkikontrahent po dwóch wpisanych znakach
Wartość domyślnaoszczędza czas przy typowym przypadkudata bieżąca w polu Z dnia
Pole wymaganeblokuje zapis niekompletnego rekorduSKU i jednostka miary w asortymencie
Pole wyboru kontrolnewłącza dodatkowe wymagania w operacjachWymagana seria, Wymagana data ważności
Zakładkidzielą długi formularz na częścidane ewidencyjne, uzupełniające i inne

Platforma low-code StudioSystem i projektant formularzy

Studio WMS.net działa na platformie StudioSystem. Wbudowany projektant formularzy pracuje w trybie przeciągnij i upuść. Dodanie pola albo zmiana kolejności nie wymaga zmian w kodzie źródłowym programu, a to samo dotyczy reguł walidacji. Zmianę wykonuje administrator systemu albo wdrożeniowiec w ciągu kilku minut.

Taki sposób pracy oszczędza czekanie na programistę przy drobnych, ale ważnych poprawkach. Dodanie pola na formularzu inwentaryzacji albo uproszczenie ekranu kompletacji na terminalu sprowadza się do zmiany w projekcie formularza, bez nowej wersji aplikacji. Szczegóły konfiguracji programu opisuje strona o konfiguracji programu magazynowego.

Przykład: przyjęcie towaru z partią i terminem ważności

W firmie spożywczej formularz przyjęcia wymaga numeru partii oraz terminu ważności. W firmie, która przyjmuje elementy do produkcji, wystarczy kod towaru i ilość. Trzeci magazyn doda pole z potwierdzeniem kontroli jakości opakowania. Każdy z tych układów powstaje z tego samego formularza przez zmianę pól, a nie przez osobne wersje programu.

Studio WMS.net - formularz asortymentu zakładka inne z wymaganą serią, datą ważności, grupą towarową i cechami
Zakładka Inne asortymentu - ustawienia wymaganej serii i daty ważności, klasyfikacja towarowa, cechy własne i ceny ewidencyjne

Zrzut pokazuje trzecią zakładkę formularza asortymentu. Pola wyboru Wymagana seria i Wymagana data ważności włączają obowiązkową kontrolę podczas operacji magazynowych. Sekcja Cechy pozwala zdefiniować trzy własne atrybuty towaru, a więc dopasowanie formularza do branży nie wymaga zmiany bazy.

Parametry, które ustala projektant

Kolejność pól i nawigacja klawiaturą

Kolejność pól ustala się według kolejności, w jakiej operator dysponuje danymi, a nie według układu tabeli w bazie. Dokument papierowy lub etykieta dostawcy układa informacje w określonym porządku i formularz powinien go powtarzać. Klawisz TAB przesuwa kursor do następnego pola, a kombinacja Shift i TAB do poprzedniego, więc operator nie sięga po mysz.

Pole wymagane stawia się wcześnie, a pola opcjonalne na końcu sekcji. Jeśli zapis wymaga dziesięciu pól, a trzy z nich zwykle zostają puste, formularz zachęca do pomijania całej sekcji. Grupowanie pól według tematu, na przykład danych identyfikacyjnych i parametrów pakowania, skraca przeszukiwanie ekranu wzrokiem.

Walidacja w formularzu i w bazie danych

Reguła sprawdzana w formularzu poprawia wygodę, ale nie gwarantuje poprawności danych. Rekord może trafić do bazy innym kanałem, na przykład z importu albo z interfejsu API. Dlatego krytyczne reguły zapisuje się także w bazie danych. Poniższy przykład jest ilustracyjny i nie pokazuje schematu produktu.

CREATE TABLE dbo.PozycjeDokumentu (
    PozycjaId     int IDENTITY PRIMARY KEY,
    DokumentId    int NOT NULL,
    AsortymentId  int NOT NULL,
    LokalizacjaId int NOT NULL REFERENCES dbo.Lokalizacje (LokalizacjaId),
    Ilosc         decimal(18,3) NOT NULL
                  CONSTRAINT CK_Pozycje_Ilosc CHECK (Ilosc > 0),
    NumerSerii    nvarchar(40) NULL,
    DataWaznosci  date NULL
);

Ograniczenie CHECK odrzuca ilość zero lub ujemną niezależnie od sposobu zapisu. Klucz obcy do tabeli lokalizacji uniemożliwia wskazanie miejsca, które nie istnieje. Zasady budowy kluczy opisuje dokumentacja relacji kluczy obcych.

Reguła zależna od innej tabeli, na przykład wymóg numeru serii dla asortymentu z włączoną kontrolą, nie mieści się w ograniczeniu CHECK. Do takich przypadków służy wyzwalacz albo procedura zapisująca dokument.

CREATE TRIGGER dbo.trg_Pozycje_Seria ON dbo.PozycjeDokumentu
AFTER INSERT, UPDATE AS
BEGIN
    IF EXISTS (SELECT 1 FROM inserted AS i
               JOIN dbo.Asortyment AS a ON a.AsortymentId = i.AsortymentId
               WHERE a.WymaganaSeria = 1 AND i.NumerSerii IS NULL)
    BEGIN
        ROLLBACK TRANSACTION;
        THROW 50001, 'Asortyment wymaga numeru serii.', 1;
    END
END;

Reguła: walidacja w formularzu jest wygodą użytkownika, a walidacja w bazie jest gwarancją danych. Import i API omijają formularz, ale nie omijają ograniczeń bazy. Budowę wyzwalaczy opisuje dokumentacja CREATE TRIGGER.

Dwa widoki: komputer stacjonarny i terminal

Pracownik z kolektorem pracuje w ruchu i często w słabym świetle. Formularz na jego ekranie ogranicza się do pól niezbędnych do zadania, a główną metodą wprowadzania danych jest skan kodu kreskowego. Na komputerze biurowym ten sam dokument może mieć więcej pól i zakładek, bo użytkownik ma klawiaturę i duży ekran.

W Studio WMS.net tworzy się osobne widoki formularzy dla obu środowisk. Na terminalu proces sprowadza się do kilku dużych przycisków i pól przyjmujących skan, a po skanie kursor przechodzi do następnego wymaganego pola. Zasady pracy aplikacji mobilnej opisuje strona o aplikacji WMS na Androida, a ergonomię skrótów opisuje menu ulubione.

Proces przyjęcia, dla którego powstają takie formularze, omawia artykuł o przyjęciu do magazynu. Dane towaru i kontrahenta zapisuje się w kartotekach magazynowych. Szerszy kontekst systemów w magazynie podaje strona system w magazynie.

Test formularza przed wdrożeniem

Zmieniony formularz sprawdza się na danych granicznych, bo błąd wychodzi dopiero wtedy, gdy użytkownik wpisze nietypową wartość. Test powinien przejść ścieżkę od otwarcia formularza do zapisu dokumentu, a nie tylko obejrzeć układ ekranu.

Po akceptacji testów zmianę wprowadza się poza godzinami szczytu i informuje użytkowników o nowym układzie. Operatorzy, którzy pracowali na starym ekranie, szukają pól tam, gdzie były poprzednio. Krótka notatka z opisem zmiany przy pierwszej zmianie roboczej skraca ten okres i zmniejsza liczbę zgłoszeń do działu IT.

Dopasowanie formularza do kontrahenta i towaru

Formularze kartotekowe są najczęściej rozbudowywane, bo przechowują dane stałe. Formularz kontrahenta ma pola identyfikacyjne i osobną zakładkę z godzinami pracy oraz rodzajem ubezpieczenia. Osobne pole zawiera adres e-mail do automatycznych powiadomień. Godziny pracy wpisuje się w formacie H:M - H:M, co odpowiada zapisowi używanemu na hali.

Projektant ustala, które z tych pól są wymagane przy zakładaniu kontrahenta, a które uzupełnia się później. Zbyt wiele pól wymaganych na początku spowalnia dodawanie kontrahentów i zachęca do wpisywania danych zastępczych. Dane zastępcze są gorsze od pustego pola, bo wyglądają jak poprawne. Pusta wartość w raporcie widać od razu i da się ją uzupełnić, a fałszywy NIP albo adres e-mail przechodzi kontrolę i wraca dopiero przy pierwszej nieudanej wysyłce powiadomienia lub dokumentu do kontrahenta.

Wzory dokumentów po zapisaniu trafiają do obiegu opisanego na stronie o dokumentach magazynowych. Wynik pracy operatora widoczny w zestawieniach opisuje serwer raportów.

Pytania i odpowiedzi o projektowanie formularzy WMS

Nie, jeśli zmiana polega na dodaniu pola, zmianie kolejności albo regule walidacji. Wykonuje ją administrator w projektancie formularzy na platformie StudioSystem. Zmiana wymagająca nowej logiki obliczeń może wymagać pracy wdrożeniowca.

Nie wystarcza. Dane mogą wpłynąć innym kanałem niż formularz, na przykład importem albo przez API. Krytyczne reguły, takie jak ilość większa od zera, zapisuje się też w bazie jako ograniczenia i wyzwalacze.

Formularz na terminalu ma mniej pól i większe przyciski, bo użytkownik pracuje w ruchu, a dane wprowadza głównie skanem. Formularz na komputerze zawiera więcej pól i zakładek. W Studio WMS.net oba widoki projektuje się osobno dla tego samego dokumentu.

W formularzu asortymentu włącza się pola Wymagana seria i Wymagana data ważności, które aktywują obowiązkową kontrolę przy operacjach. Dodatkowe atrybuty towaru można zdefiniować w sekcji Cechy. Pole w formularzu dokumentu dopasowuje projektant formularzy.

Tyle, ile potrzeba do pierwszej operacji, a nie do wszystkich przyszłych zastosowań. Pozostałe dane uzupełnia się później. Nadmiar wymaganych pól prowadzi do wpisywania wartości zastępczych.

Glosariusz pojęć związanych z formularzami WMS

Formularz
Ekran wprowadzania danych dokumentu lub kartoteki, złożony z pól, zakładek i przycisków.
Low-code
Sposób tworzenia i zmiany aplikacji przez konfigurację i projektant graficzny, z ograniczoną ilością ręcznie pisanego kodu.
StudioSystem
Platforma, na której działa Studio WMS.net, z wbudowanym projektantem formularzy.
Walidacja
Sprawdzenie poprawności danych przed zapisem, w formularzu albo w bazie danych.
Ograniczenie CHECK
Reguła w tabeli SQL Server odrzucająca zapis wiersza, który nie spełnia warunku logicznego.
Klucz obcy
Ograniczenie wymagające, aby wartość kolumny istniała w tabeli powiązanej, na przykład lokalizacja w tabeli lokalizacji.
Wyzwalacz
Procedura w bazie uruchamiana automatycznie po zapisie lub zmianie wiersza, sprawdzająca reguły wykraczające poza jedną tabelę.
Kolektor danych
Przenośny terminal ze skanerem kodów kreskowych, na którym operator wykonuje operacje magazynowe.

Warto przeczytać