Wzór etykiety albo wydruku dokumentu zmienia się częściej, niż zakładają harmonogramy wdrożeń. Przewoźnik wymaga innego układu, odbiorca chce dodatkowego pola, magazyn dokłada numer partii. Microsoft Report Builder pozwala przerobić taki wzór bez udziału programisty aplikacji, bo raport jest osobnym plikiem na serwerze raportów.
Spis treści
- Do czego służy Report Builder w Studio WMS.net
- Źródła danych i zbiory danych
- Parametry, grupowanie i wyrażenia
- Etykiety i wydruki dokumentów
- Zmiany wzoru bez ryzyka dla produkcji
- Publikacja i uruchamianie raportów
- Dlaczego Report Builder w środowisku SQL Server
- Pytania i odpowiedzi o Microsoft Report Builder
- Glosariusz pojęć związanych z Report Builder
Do czego służy Report Builder w Studio WMS.net
Report Builder jest edytorem raportów dla SQL Server Reporting Services. Uruchamia się go z przeglądarki albo jako aplikację kliencką na stacji roboczej. Interfejs przypomina programy pakietu Office, więc użytkownik znający Excel szybko odnajduje wstążkę oraz pola do przeciągania.
Gotowy raport publikuje się na serwerze, skąd uruchamiają go pozostali użytkownicy. Wynik można wyświetlić na ekranie albo wyeksportować do pliku. Sam serwer opisuje strona o serwerze raportów w Studio WMS.net.
| Typ projektu | Zawartość | Kto zmienia wzór |
|---|---|---|
| Raport zarządczy | wydajność pracy, stany, historia przesunięć | administrator magazynu |
| Wydruk dokumentu | dokument przyjęcia i dokument wydania | wdrożeniowiec albo administrator |
| Etykieta wewnętrzna | kod kreskowy, numer seryjny, data ważności | administrator magazynu |
| Zestawienie na żądanie | tabela z filtrami wybieranymi przez użytkownika | użytkownik biznesowy |
Narzędzie ma funkcje agregujące i grupowanie, więc raport zarządczy nie wymaga eksportu do arkusza. Filtry i kolejność użytkownik końcowy zmienia sam, co skraca analizę wąskich gardeł. Wiersz z sumą dla dnia albo operatora powstaje przez dodanie grupy, a nie przez pisanie osobnego zapytania.
Źródła danych i zbiory danych
Raport składa się ze źródła danych i jednego lub kilku zbiorów danych. Źródło określa połączenie, a zbiór zawiera zapytanie i listę pól, które trafiają do projektu. Raporty mogą korzystać z dostawców .NET albo OLE DB oraz ze źródeł ODBC. Dane pochodzą z baz SQL Server albo Oracle. Źródłem może być także Analysis Services lub plik XML.
Zapytanie zbioru danych pisze się w języku bazy. Poniższy przykład jest ilustracyjny i pokazuje zestawienie dokumentów przyjęcia z parametrami zakresu dat oraz listy kontrahentów.
SELECT d.NumerDokumentu, d.DataPrzyjecia, k.Nazwa AS Kontrahent,
SUM(p.Ilosc) AS SumaSztuk
FROM dbo.Dokumenty AS d
JOIN dbo.Kontrahenci AS k ON k.KontrahentId = d.KontrahentId
JOIN dbo.PozycjeDokumentu AS p ON p.DokumentId = d.DokumentId
WHERE d.Typ = 'PZ'
AND d.DataPrzyjecia >= @DataOd
AND d.DataPrzyjecia < DATEADD(DAY, 1, @DataDo)
AND d.KontrahentId IN (@Kontrahenci)
GROUP BY d.NumerDokumentu, d.DataPrzyjecia, k.Nazwa
ORDER BY d.DataPrzyjecia;
Parametr @Kontrahenci przyjmuje wiele wartości, a Report Builder rozwija go do listy w klauzuli IN. Górną granicę daty zapisano jako mniejszą od następnego dnia, bo takie porównanie działa poprawnie także dla kolumny z godziną. Gdy logika rośnie, zapytanie przenosi się do procedury składowanej, którą opisuje dokumentacja procedur składowanych SQL Server.
Reguła: filtr daty należy do klauzuli WHERE zapytania, a nie do filtra zbioru w raporcie. Filtr raportu działa dopiero po pobraniu danych, więc serwer czyta całą tabelę, a odrzuca wiersze później. Zapytanie ograniczone w bazie czyta tylko potrzebny przedział.
Parametry, grupowanie i wyrażenia
Układ raportu opiera się na regionach danych. Najczęstsze są tabela i wykres. Użytkownik przeciąga pola ze zbioru danych na obszar projektu, a grupowanie dodaje przez przeciągnięcie pola do panelu grup. Sumy częściowe i końcowe powstają z wyrażeń, na przykład =Sum(Fields!SumaSztuk.Value).
Parametry użytkownika
- Zakres dat. Dwa parametry z wartością domyślną, na przykład początek bieżącego miesiąca i dzień dzisiejszy.
- Lista kontrahentów. Parametr wielowartościowy, którego lista pochodzi z osobnego zbioru danych, a nie z wpisanych na stałe nazw.
- Parametry zależne. Wybór magazynu zawęża listę lokalizacji w kolejnym parametrze.
- Parametr ukryty. Wartość przekazana przez aplikację, na przykład identyfikator użytkownika, której odbiorca nie zmienia.
Formatowanie warunkowe
Wyrażenia sterują też wyglądem. Data ważności wyróżniona kolorem pozwala zauważyć partie bliskie przeterminowania jeszcze w zestawieniu, zanim trafią na wydanie. Wystarczy wyrażenie we właściwości koloru tekstu: =IIF(Fields!DataWaznosci.Value < DateAdd("d", 30, Today()), "Red", "Black"). Próg trzydziestu dni jest przykładem, a każdy magazyn ustala własny.
Etykiety i wydruki dokumentów
Report Builder pozwala budować wzory etykiet wewnętrznych dla towarów i opakowań zbiorczych, na przykład beczek. Na wydruk dodaje się kody kreskowe i numery seryjne, a także daty ważności, bez zmian w kodzie aplikacji. Układ dokumentów wydania i przyjęcia, w tym dokumentu dostawy, zachowuje jednolity wygląd w oczach kontrahentów. Budowę etykiety logistycznej opisuje standard etykiety logistycznej GS1.
Etykiety wewnętrzne drukowane na drukarkach mobilnych w miejscu rozładunku zabezpieczają towar przed wymieszaniem jeszcze przed transportem wewnątrz magazynu. Numer partii i seria nie czekają wtedy na powrót operatora do stanowiska z komputerem. Wzór takiej etykiety zmienia się w raporcie, a nie na drukarce.
Drugim sposobem budowy etykiety jest szablon w języku ZPL, wysyłany bezpośrednio do drukarki Zebra. Taki szablon opisuje strona o projektowaniu etykiet ZPL, a sprzęt do wydruku zestawia artykuł o drukarkach kodów kreskowych. Raport nadaje się do dokumentów w formacie A4 i do etykiet, w których ważniejszy jest układ niż prędkość wydruku seryjnego.
Zmiany wzoru bez ryzyka dla produkcji
Raport działa na serwerze, więc błędna zmiana wzoru wpływa na wszystkich użytkowników od razu. Dlatego przeróbki wykonuje się najpierw w osobnym folderze testowym, na kopii definicji raportu, a dopiero potem podmienia wersję produkcyjną. Plik RDL jest zwykłym plikiem XML, więc kopie wersji da się porównywać i przechowywać w repozytorium.
- Kopia. Przed zmianą zapisuje się obecną definicję raportu z datą w nazwie pliku.
- Folder testowy. Nowy wzór publikuje się obok produkcyjnego, z uprawnieniami tylko dla administratora.
- Wartości graniczne. Test obejmuje zakres dat bez danych oraz pole z bardzo długim tekstem, który nie mieści się w etykiecie.
- Wydruk próbny. Kod kreskowy sprawdza się czytnikiem, a nie tylko wzrokiem na ekranie.
Publikacja i uruchamianie raportów
Raport zapisany z poziomu Report Buildera trafia do folderu na serwerze raportów, gdzie dziedziczy uprawnienia folderu. Użytkownik uruchamia go z przeglądarki, wpisuje parametry, a wynik powstaje z aktualnych danych. Dokumentację narzędzia zawiera strona Report Builder w SQL Server.
Raporty z historii przesunięć i stanów opierają się na danych, które terminale zapisują przy każdym skanie. Skan z kolektora trafia do bazy natychmiast, więc zestawienie pokazuje stan bez ręcznego przepisywania. Terminale z systemem Android opisuje strona o aplikacji WMS na Androida, a stany po inwentaryzacji ciągłej omawia artykuł o inwentaryzacji w magazynie.

Partie, terminy ważności i FEFO
Po skanie etykiety terminal pokazuje datę ważności i numer partii, a obok bieżącą lokalizację nośnika. Te same pola trafiają do raportów, które zestawiają towar według zasady FEFO, czyli pierwszy wychodzi towar o najkrótszym terminie ważności. Zestawienie sortowane po dacie ważności wskazuje partie do wydania w pierwszej kolejności, a temat opisuje strona o partiach produkcyjnych i datach ważności.
Raporty a dokumenty magazynowe
Każde przyjęcie i wydanie jest zapisane w dokumencie, a raport zestawia te dokumenty w wybranym przekroju. Obieg dokumentów opisuje strona o dokumentach magazynowych. Bieżące zestawienie stanów, które powstaje z tych samych danych, omawia artykuł o raporcie stanów magazynowych.
Wysyłkę gotowych raportów do odbiorców według harmonogramu opisuje strona o subskrypcji raportów. Projektowaniem samych ekranów wprowadzania danych zajmuje się osobny temat, czyli projektowanie formularzy.
Dlaczego Report Builder w środowisku SQL Server
Do raportowania SoftwareStudio wybrało właśnie ten edytor ze względu na zgodność ze środowiskiem Microsoft SQL Server oraz brak dodatkowego oprogramowania po stronie klienta. Użytkownik pracuje z poziomu przeglądarki. Jedna platforma obsługuje pracownika biurowego, który składa proste zestawienie, i administratora magazynu, który przygotowuje raport zarządczy. Mniej narzędzi w firmie oznacza krótsze szkolenie zespołu i niższy koszt utrzymania.
Narzędzie nie zastępuje zapytań pisanych przez programistę. Przy dużych wolumenach i złożonej logice dokumenty magazynowe lepiej opierać o procedury składowane, a Report Builder wykorzystywać do układu i parametrów. Cały proces opisuje strona o zarządzaniu magazynem wysokiego składowania.
Pytania i odpowiedzi o Microsoft Report Builder
Interfejs przypomina programy pakietu Office, więc osoba znająca Excel szybko znajduje potrzebne funkcje. Pola z bazy dodaje się przeciągnięciem do szablonu etykiety albo raportu. Przy wdrożeniu przeprowadzamy podstawowe szkolenie, po którym administrator magazynu samodzielnie zmienia wzory dokumentów.
Nie. Raport jest osobnym plikiem na serwerze raportów, więc zmiana układu, dodanie pola z numerem partii albo numeru seryjnego odbywa się w Report Builder. Aplikacja magazynowa nie jest wtedy kompilowana ani wdrażana ponownie.
Każda jednostka ładunkowa otrzymuje przy przyjęciu etykietę wewnętrzną z kodem kreskowym lub QR, powiązaną z numerem partii i numerem seryjnym. Skan etykiety przy przesunięciu i wydaniu zapisuje ruch w historii. W każdej chwili można sprawdzić, kiedy surowiec trafił do magazynu, gdzie leżał i komu został wydany.
Nie eliminuje, ale ogranicza je znacząco. System wymusza skan kodu lokalizacji i kodu towaru, więc operator liczy właściwy produkt we właściwym miejscu. Przy rozbieżności wymagane jest ponowne przeliczenie, co poprawia wiarygodność raportu inwentaryzacyjnego.
Zwrot realizuje się na podstawie zwrotnej listy pobrania z zestawieniem towarów wydanych, ale niezużytych. Magazynier przyjmuje towar skanerem i wskazuje jego status, na przykład pełnowartościowy albo uszkodzony. Potwierdzenie przyjęcia dla działu produkcji można wygenerować w raporcie.
Glosariusz pojęć związanych z Report Builder
- Report Builder
- Edytor raportów dla SQL Server Reporting Services, uruchamiany z przeglądarki lub jako aplikacja kliencka.
- RDL
- Report Definition Language, format XML, w którym zapisany jest definicja raportu: źródła danych, zapytania, układ i wyrażenia.
- Zbiór danych
- Element raportu zawierający zapytanie do źródła oraz listę pól dostępnych w projekcie.
- Parametr raportu
- Wartość podawana przez użytkownika albo aplikację, która zawęża dane w zapytaniu zbioru.
- Region danych
- Obszar raportu prezentujący dane wierszami lub kolumnami, na przykład tabela, macierz albo wykres.
- Etykieta wewnętrzna
- Naklejka z kodem kreskowym nadawana jednostce ładunkowej w magazynie, niezależna od etykiety dostawcy.
- Procedura składowana
- Zapisany w bazie zestaw instrukcji T-SQL wywoływany po nazwie, z parametrami wejściowymi i wyjściowymi.
- Wyrażenie raportu
- Formuła w języku Visual Basic wyliczająca wartość pola, sumy albo formatowania w raporcie.