Zapytanie analityczne czytające te same tabele, na których pracuje brama, spowalnia rejestrację wjazdów. Rozdzielenie warstwy raportowej od operacyjnej jest decyzją projektową, nie optymalizacją do wykonania później.
Dlaczego raporty pracują na osobnej warstwie
Tabele obsługujące bieżący ruch są optymalizowane pod krótkie operacje: wstawienie zgłoszenia, zmianę statusu, odczyt pojedynczej wizyty. Zapytanie analityczne obejmujące rok danych ma odwrotną charakterystykę - czyta setki tysięcy wierszy i trwa sekundy zamiast milisekund.
Uruchomione na tych samych tabelach zakłada blokady odczytu, przez które rejestracja wjazdu na bramie czeka. Objaw jest mylący, bo operator widzi zawieszony formularz i zgłasza awarię systemu, podczas gdy przyczyną jest raport otwarty przez kogoś w innym budynku.
Rozdzielenie polega na przeniesieniu odczytów analitycznych na źródło przygotowane do tego celu, aktualizowane cyklicznie. Opóźnienie rzędu kilkunastu minut nie ma znaczenia dla zestawienia miesięcznego, a zdejmuje obciążenie z warstwy operacyjnej. Dokumentację poziomów izolacji i zachowania blokad prowadzi Microsoft Learn.

Parametry zamiast raportów na każdą okazję
Zestawienie z zaszytym na stałe zakresem dat rodzi kolejne zestawienia: to samo za inny miesiąc, to samo dla innego magazynu, to samo z podziałem na przewoźników. Po roku lista raportów liczy kilkadziesiąt pozycji, z których połowa różni się jedną wartością.
Parametryzacja rozwiązuje to na poziomie definicji. Raport przyjmuje zakres dat, obiekt i opcjonalnie kontrahenta, a użytkownik wypełnia je przed uruchomieniem. Cztery parametry pokrywają większość potrzeb sprawozdawczych.
- Zakres dat - z wartościami domyślnymi odpowiadającymi poprzedniemu miesiącowi.
- Magazyn lub obiekt - z listą ograniczoną do tych, do których użytkownik ma dostęp.
- Kontrahent lub przewoźnik - opcjonalny, do zestawień jakościowych.
- Rodzaj transportu - pozwala porównać przyjęcia z wydaniami w jednym układzie.
Ograniczenie listy obiektów do uprawnień użytkownika jest przy tym wymogiem, nie ułatwieniem. Raport uruchamiany przez firmę zewnętrzną musi zwracać wyłącznie jej dane, a filtr nakładany w definicji zapytania działa niezależnie od tego, co użytkownik wybierze w formularzu.
| Typ | Zakres danych | Częstotliwość uruchamiania |
|---|---|---|
| Wydruk dokumentu | Jedna wizyta | Kilkadziesiąt razy dziennie |
| Zestawienie dnia | Doba, jeden obiekt | Raz na zmianę |
| Raport okresowy | Miesiąc lub kwartał | Raz w miesiącu |
| Kontrola kompletności | Otwarte wizyty | Codziennie, automatycznie |
Wydruk pojedynczego dokumentu i raport roczny to dwa różne zadania, mimo że oba nazywają się raportem. Pierwszy musi wykonać się natychmiast na danych bieżących, drugi może poczekać i czytać ze źródła sprzed kwadransa.
Dokumenty generowane z danych
Przepustka, zestawienie ładunku i dokument przewozowy powstają z rekordu wizyty, bez przepisywania danych. Układ tych wydruków bywa narzucony przez wymagania obiektu albo kontrahenta, więc definiuje się go raz i podmienia bez wdrażania nowej wersji aplikacji.
Znaczenie ma też format. Dokument okazywany na bramie potrzebuje kodu do skanowania w miejscu, w którym operator go oczekuje, a nie w narożniku strony. Zawartość samego awiza opisuje strona o awizach dostaw, a obieg załączników - materiał o dokumentach w awizacji.
Zestaw raportów, który warto uruchomić
Pokusa przygotowania kilkudziesięciu zestawień przy wdrożeniu kończy się listą, z której korzysta się z czterech. Sensowniej zacząć od tych, które odpowiadają na pytania zadawane co miesiąc.
Pierwszym jest średni czas obsługi w rozbiciu na rampy, wskazujący stanowiska gorzej wyposażone. Drugim obciążenie bram w godzinach doby, będące podstawą korekty siatki okien. Trzecim trafność awizacji liczona osobno dla przewoźników. Czwartym kontrola kompletności, czyli lista wizyt bez odnotowanego wjazdu albo wyjazdu.
Ten ostatni warto uruchamiać automatycznie i wysyłać do dyspozytury, bo jego wartość polega na wczesnym wychwyceniu luk. Definicje mierników porządkuje strona o wskaźnikach OTIF, a zakres rejestru - materiał o ewidencji wizyt pojazdów.
Co zrobić, gdy raporty zwalniają
Pierwszym podejrzanym nie jest moc serwera, tylko rozmiar przeszukiwanego zbioru. Tabela wizyt rośnie liniowo z ruchem i po kilku latach zapytanie obejmujące rok danych czyta wielokrotnie więcej wierszy niż przy uruchomieniu.
Rozwiązania są dwa i oba tańsze od rozbudowy sprzętu. Pierwsze to indeksy dobrane do rzeczywiście używanych filtrów, zwykle po dacie i obiekcie. Drugie to archiwizacja zamkniętych wizyt poza tabele operacyjne, z zachowaniem dostępu do odczytu. Wymagania po stronie serwera opisuje strona o architekturze oprogramowania YMS.
Jak raporty trafiają do odbiorców
Zestawienie, po które trzeba się zalogować, zostaje nieotwarte. Raporty okresowe warto więc wysyłać automatycznie, w ustalonym dniu i do wskazanych odbiorców, zamiast liczyć na to, że ktoś o nich pamięta.
Format zależy od zastosowania. Zestawienie do analizy idzie w postaci arkusza, bo odbiorca i tak będzie je filtrował. Raport do przekazania dalej - w postaci dokumentu o stałym układzie. Kontrola kompletności wystarczy jako wiadomość z listą przypadków, bez załącznika.
Odbiorców wyznacza rola, nie lista nazwisk. Zmiana na stanowisku kierownika magazynu nie powinna wymagać edycji definicji kilkunastu raportów, a tak właśnie kończy się przypisanie po adresach.
Osobną kategorią są zestawienia dla kontrahentów: ocena terminowości, historia dostaw, liczba przesunięć terminu. Wysyłane cyklicznie zmieniają rozmowę o jakości współpracy, bo obie strony patrzą na te same liczby. Zakres takich danych opisuje strona o awizacjach według klientów.