Kartoteki jako dane referencyjne awizacji
Sekcja Kartoteki w systemie VSS.net gromadzi dane, z których korzystają awizacje i brama. Sięgają do nich także moduły LPR oraz Yard Management. Dane wpisuje się raz, a potem wybiera z listy przy każdej nowej operacji, więc dyspozytor nie przepisuje nazwy firmy ani numeru rejestracyjnego przy kolejnej awizacji. Wszystkie rekordy można przeszukiwać i edytować w jednym miejscu, a nieaktualne archiwizować.
Prawo do edycji kartotek ma zwykle wyłącznie administrator systemu, co chroni dane referencyjne przed przypadkową zmianą przez operatorów bramy albo pracowników rampy. Zasady nadawania ról opisuje artykuł o module Administrator w VSS.net. Wspólne kartoteki jako źródło referencji dla wszystkich modułów omawia tekst o platformie VSS na wspólnej bazie SQL.
| Pozycja menu Kartoteki | Co przechowuje | Gdzie jest używana |
|---|---|---|
| Kontrahenci | firmy: nazwa, NIP, adres, dane kontaktowe | wybór partnera w formularzu awizacji |
| Przewoźnicy | firmy przewozowe z podglądem awizacji bieżących i historii | przypisanie pojazdu i kierowcy do wizyty |
| Asortyment | towary wykorzystywane przy awizacji i w historii postojów | opis ładunku w zgłoszeniu |
| Obiekty i magazyny | centra logistyczne oraz magazyny w ich obrębie | pierwsze dwa kroki kreatora awizacji |
| Bramy i doki | punkty załadunku i rozładunku | kalendarz ramp i przydział miejsca |
| Kalendarze i skorowidze | definicje kalendarzy oraz samodzielnie zarządzane listy wyboru | widoki harmonogramu i pola słownikowe formularzy |
Reguła: rekord kartoteki wybiera się z listy, a nie wpisuje ponownie. Każde ręczne wpisanie tworzy wariant, którego raporty nie połączą z oryginałem.
Skorowidze zasługują na osobną uwagę, bo pozwalają samodzielnie zarządzać listami wyboru, na przykład rodzajami pojazdów albo powodami wizyty. Administrator dodaje wartość do skorowidza i od razu pojawia się ona w formularzach, bez zmian w programie. To zwykle jedyny sposób dostosowania systemu do słownictwa konkretnego magazynu.
Kartoteka magazynów i doków
Formularz dopisania magazynu zawiera obiekt i nazwę magazynu. Następne pola to dane adresowe oraz dane uzupełniające, a ostatnie to liczba doków. Liczba doków ma wpływ na resztę systemu: od liczby doków zależy, na ile zasobów kalendarz może podzielić magazyn. Pole Aktywne pozwala wyłączyć magazyn bez usuwania, więc historia awizacji nadal wskazuje na istniejący rekord.

Lista doków przeładunkowych w sekcji Gate Assistant pokazuje ten sam podział z perspektywy bramy. Każdy dok ma kod i opis, a kolumna rezerwacji wskazuje kontrahenta, dla którego dok jest zarezerwowany. Dane o przydziale doków opisuje artykuł o zarządzaniu dokami w magazynie, a konfigurację kalendarza, który z tych doków tworzy kolumny, omawia tekst o kalendarzu Studio Awizacje.
Zmiana liczby doków w istniejącym magazynie wymaga ostrożności. Dodanie doku zwiększa liczbę zasobów, które kalendarz może pokazać. Wyłączenie doku, na który zarezerwowano już okna, powinno poprzedzić przeniesienie tych wizyt, bo w przeciwnym razie kalendarz może pokazać zdarzenia bez zasobu.
Kontrahenci i przewoźnicy w kartotekach
Kartoteka kontrahentów obejmuje dostawców oraz odbiorców, a także przewoźników. Zawiera dane identyfikacyjne firmy i dane kontaktowe, co zapewnia spójność przy planowaniu dostaw. Polecenia Dopisz i Edycja służą do dodawania firm oraz aktualizacji wpisów, a polecenia Awizacje i Historia do przeglądu współpracy. Z poziomu listy można też wysłać e-mail do wybranego kontrahenta.
| Grupa pól | Kolumny widoku | Zastosowanie |
|---|---|---|
| Identyfikacja | Aktywne, Nazwa pełna, Nazwa, Nr SAP, NIP | jednoznaczne rozpoznanie firmy także w systemie zewnętrznym |
| Adres | Miejscowość, Kod, Ulica, Województwo | filtrowanie kontrahentów według lokalizacji |
| Kontakt | Email, Telefon, Język komunikacji | powiadomienia w języku odbiorcy |
| Zapis i wygląd | KOLOR, Zapisał, Data zapisu, Nr referencyjny | oznaczenie w kalendarzu oraz ślad audytowy |
Kolumna Nr SAP przechowuje numer kontrahenta z zewnętrznego systemu, dzięki czemu awizacja i dokument magazynowy dotyczą tej samej firmy. Kolumna Język komunikacji decyduje, w jakim języku trafią powiadomienia, o czym pisze artykuł o przepustce QR i prognozie dojazdu. Kolor kontrahenta pojawia się w kalendarzu, więc dyspozytor rozpoznaje firmę bez czytania nazwy.
Duplikaty kontrahentów są najczęstszą wadą kartotek. Ta sama firma wpisana raz z formą prawną, a raz bez niej rozbija historię na dwie części, a wraz z nią raporty punktualności. Przy polskich podmiotach dobrą barierą jest unikalność NIP wśród rekordów aktywnych. Filtrowany indeks unikalny pozwala jednocześnie trzymać w tabeli rekordy wycofane, których NIP wraca do użytku. Zagraniczni kontrahenci bez polskiego NIP zostają poza ograniczeniem, bo pole może mieć wartość NULL.
CREATE UNIQUE NONCLUSTERED INDEX UX_Contractor_Nip_Active
ON dbo.Contractor (Nip)
WHERE Ach <> 'X' AND Nip IS NOT NULL;
Warunek WHERE tworzy indeks filtrowany, który obejmuje tylko wiersze spełniające warunek. Zasady tworzenia takich indeksów opisuje dokumentacja indeksów filtrowanych w Microsoft Learn. Nazwa tabeli Contractor jest poglądowa. Według opisu produktu dane kontrahentów oraz pojazdów wraz z kierowcami są wymieniane z systemem ERP przedsiębiorstwa, a sposób powiązania rekordów omawia artykuł o integracji VSS z WMS i ERP. Rozdział wpisów w dokumentacji produktu przedstawia strona kartoteki kontrahentów.
Pojazdy i kierowcy jako klucze identyfikacji
Kartoteka pojazdów przechowuje numer rejestracyjny i typ nadwozia oraz przewoźnika, do którego pojazd należy. Dochodzą parametry potrzebne przy planowaniu załadunku, na przykład ładowność albo liczba palet. Dyspozytor widzi już przy awizacji, czy pojazd zmieści się na wybranej rampie, i nie potwierdza parametrów telefonicznie z kierowcą. Pojazdy nietypowe, na przykład chłodnie lub cysterny, warto opisać w polu uwag. Wtedy ochrona i rampa rozpoznają wymagania rozładunku.

Kartoteka ciągników z rysunku należy do roli magazynu i transportu wewnętrznego. Zawiera numer rejestracyjny oraz numery SAP i ewidencyjny. Kod kreskowy pozwala rozpoznać ciągnik także skanerem. Zasady obsługi tych pojazdów przedstawia artykuł o transporcie wewnętrznym w module VSS.net.
Kartoteka kierowcy zawiera imię i nazwisko oraz telefon. Przypisuje kierowcę do przewoźnika i pozwala opcjonalnie zapisać numer dokumentu tożsamości do weryfikacji na bramie. W polu uwag można zapisać znajomość języka albo uprawnienia ADR. Historia wizyt, czyli liczba awizacji, średni czas oczekiwania i liczba wizyt nieawizowanych, jest widoczna z poziomu tej samej kartoteki. Pozwala to ocenić rzetelność przewoźnika bez ręcznego zestawiania list.
Numer rejestracyjny jest kluczem, po którym moduł LPR łączy zdjęcie tablicy z awizacją. Klucz działa tylko wtedy, gdy zapis jest jednolity, bo w kartotece ktoś wpisze WX 12345, ktoś inny WX-12345, a OCR odczyta WX12345. Przed porównaniem numer sprowadza się do postaci znormalizowanej. Przykład w C# usuwa znaki inne niż litery i cyfry oraz zamienia litery na wielkie.
public static string NormalizePlate(string raw)
{
if (string.IsNullOrWhiteSpace(raw)) return string.Empty;
var sb = new StringBuilder(raw.Length);
foreach (var ch in raw)
if (char.IsLetterOrDigit(ch))
sb.Append(char.ToUpperInvariant(ch));
return sb.ToString();
}
Reguła: numer rejestracyjny porównuje się wyłącznie w postaci znormalizowanej, zarówno w kartotece, jak i w odczycie z kamery.
Normalizacja nie rozwiązuje pomyłek OCR między literą O a cyfrą 0 ani między I a 1. Do nich służy osobny słownik zamienników albo dopasowanie z tolerancją jednego znaku, ale wynik takiego dopasowania powinien trafić do potwierdzenia przez ochronę, a nie do automatycznego otwarcia szlabanu. Pojazd bez awizacji trafia na ścieżkę opisaną w artykule o transporcie nieawizowanym.
Historia wjazdów i kamery w module LPR
Moduł LPR rejestruje numer auta oraz czas wjazdu i wyjazdu, a także dane kontrahenta i kierowcy z numerem telefonu. Rejestr Historia jest pełnym zapisem ruchu pojazdów na terenie obiektu i pozwala wyszukiwać oraz filtrować zdarzenia. Każdy wpis ma numer referencyjny, który ułatwia audyt i jednoznaczną identyfikację rekordu.
| Grupa | Kolumny historii | Do czego służy |
|---|---|---|
| Czas pobytu | Numer auta, Dzień, Wjazd, Wyjazd | obliczenie długości wizyty na terenie zakładu |
| Uczestnicy | Kontrahent, Kierowca, Telefon | powiązanie wizyty z firmą i osobą |
| Audyt | Zapisał, Nr referencyjny | identyfikacja operatora i rekordu |
Kamery zarządza się z sekcji Kamery, gdzie można je włączać i wyłączać oraz edytować ich parametry. Tabela zawiera pola Aktywne i Magazyn oraz kod z opisem kamery, a kolumna Automatyczny szlaban odpowiada integracji ze szlabanami. Kamery wykonują zdjęcia tablic rejestracyjnych, OCR rozpoznaje numery, a wynik trafia na serwer FTP i łączy się z awizacjami. Zdjęcia są przypisywane do konkretnych wizyt, więc zgodność pojazdu z planem można sprawdzić po fakcie.

Ekran wyszukiwania z rysunku pozwala filtrować zdjęcia według numeru auta oraz danych kierowcy, a także według zamówienia lub firmy. Każdy kafelek pokazuje miniaturę pojazdu z datą i godziną odczytu. Poniższe zapytanie pokazuje mechanizm łączenia odczytu tablicy z awizacją: szuka zatwierdzonej awizacji o tym samym znormalizowanym numerze, której okno obejmuje czas odczytu z dwugodzinnym marginesem.
SELECT TOP (1) a.AdviceId
FROM dbo.Advice AS a
WHERE a.PlateNorm = @PlateNorm
AND a.Status = 1
AND @ReadAt BETWEEN DATEADD(HOUR, -2, a.SlotStart)
AND DATEADD(HOUR, 2, a.SlotEnd)
ORDER BY ABS(DATEDIFF(MINUTE, a.SlotStart, @ReadAt));
Sortowanie po odległości od początku okna rozstrzyga sytuację, gdy ten sam pojazd ma dwie awizacje w krótkim odstępie. Wybór następuje wtedy na rzecz tej, która jest czasowo najbliżej odczytu. Historię wjazdów opisuje dokumentacja modułu na stronie historia LPR. Przebieg wizyty po odczycie tablicy, od bramy po wyjazd, przedstawia artykuł o yard management system.
Historia postojów i kontenery w Yard Management
Moduł Yard Management zapisuje każdy moment zajęcia i zwolnienia miejsca parkingowego wraz z numerem miejsca i pojazdem oraz czasem przyjazdu i odjazdu. Historia parkowania łączy się z awizacjami i transportami, więc daje pełny obraz ruchu na placu. Zestawienie można eksportować do raportów okresowych, na przykład dziennych albo miesięcznych, co pozwala przypisywać koszty postojów.
| Widok | Zakres kolumn | Zastosowanie |
|---|---|---|
| Historia parkowania | pojazd i miejsce parkingowe; numer Load Plan; czasy podstawienia i zakończenia parkowania; uczestnicy wizyty | audyt postojów i przypisywanie kosztów |
| Kontenery na terenie obiektu | status i numer kontenera; typ i lokalizacja; uczestnicy transportu; asortyment i numer zamówienia; pola czasowe | śledzenie lokalizacji i statusu każdego kontenera |
Widok kontenerów pokazuje obok polskich nazw także pola w nazwach technicznych, takich jak LOGIN, DATE_FROM, TIME_FROM i DATE_REAL. Zapis tych pól jest surowy, więc przy eksporcie do zewnętrznego raportu trzeba je przemapować na czytelne etykiety. Polecenie Transport otwiera formularz zlecenia przemieszczenia, opisany w artykule o transporcie wewnętrznym. Dokumentację obu zestawień przedstawiają strony historia parkowania i kontenery na terenie obiektu. Zakres modułu placu opisuje też artykuł o Yard management SoftwareStudio.
Moduł przypomina o planowanych operacjach i informuje o opóźnieniach, co ułatwia koordynację załadunków i rozładunków. Przy dużej liczbie kontenerów na placu decydujące jest filtrowanie według statusu i lokalizacji, dlatego kolumna Status stoi w widoku na pierwszym miejscu.
Status rekordu i uprawnienia do edycji
Rekordy w bazie mają kolumnę statusu ACH. Wartość 0 oznacza bufor, 1 rekord zatwierdzony, a X anulowany albo usunięty. Rekord z oznaczeniem X nie znika z tabeli. Historia awizacji i raporty nadal się do niego odwołują. To rozwiązanie chroni spójność danych: fizyczne usunięcie kontrahenta z dziesiątkami awizacji zostawiłoby w historii wpisy bez właściciela.
UPDATE dbo.Contractor
SET Ach = 'X', ModifiedBy = @User, ModifiedAt = SYSUTCDATETIME()
WHERE ContractorId = @Id
AND NOT EXISTS (SELECT 1
FROM dbo.Advice AS a
WHERE a.ContractorId = @Id
AND a.Status IN (0, 1)
AND a.SlotEnd > SYSUTCDATETIME());
Przykład jest ilustracją wzorca, a nie opisem schematu produktu. Aktualizacja anuluje kontrahenta tylko wtedy, gdy nie ma on bieżących ani przyszłych awizacji w buforze lub zatwierdzonych. W przeciwnym razie zapytanie nie zmienia żadnego wiersza, a aplikacja informuje użytkownika, które wizyty blokują operację.
- Administrator - dopisuje i edytuje rekordy kartotek oraz wartości skorowidzów, a także je anuluje.
- Operator bramy i dyspozytor - wybierają rekordy z list i dopisują wizyty, ale nie zmieniają samych kartotek.
Taki podział ma swoje ograniczenie. Gdy dyspozytor potrzebuje nowego przewoźnika natychmiast, zgłoszenie do administratora wydłuża obsługę pojedynczej awizacji. Magazyny z dużym ruchem rozwiązują to przez wyznaczenie kilku administratorów zmianowych albo przez osobne, ściśle ograniczone uprawnienie do dopisywania. Ogólny opis modułu przedstawia strona produktu Studio VSS.net, a dokumentację sekcji kartotek zawiera strona kartoteki. Model, w którym partnerzy sami zakładają awizacje na podstawie tych danych, opisuje artykuł o systemie VSS.net.




