StudioSystem

Reporting Services - raporty RDL i wydruki PDF/XLS

Dwie transakcje, jeden silnik SQL Server Reporting Services: podgląd dowolnego raportu RDL oraz wydruk dokumentu po numerze referencyjnym z kodem kreskowym, e-mailem i archiwizacją.

studiosystem.softwarestudio.com.pl/#platforma
Formularz pozycji menu w StudioSystem z polami Transakcja do uruchomienia i Parametry transakcji
Formularz pozycji menu w StudioSystem z polami Transakcja do uruchomienia i Parametry transakcji
W skrócie

Reporting Services to warstwa raportowa platformy StudioSystem oparta na silniku Microsoft SQL Server Reporting Services. Szablony RDL i RDLC uruchamiane są przez dwie transakcje - uniwersalną raporty.aspx oraz wyspecjalizowaną wydruk_refno.aspx - które potrafią zwrócić podgląd, plik PDF lub XLS, dogenerować kod kreskowy, wysłać dokument e-mailem i zapisać kopię w archiwum.

Dwie transakcje, jeden silnik

Za każdym wydrukiem w StudioSystem stoi ten sam silnik raportowy, ale do jego uruchomienia prowadzą dwie różne drogi. Rozróżnienie to często umyka na pierwszy rzut oka, bo obie transakcje generują ten sam rodzaj wyniku - podgląd, plik PDF albo arkusz Excel - różnią się jednak sposobem wskazania, który raport ma zostać wykonany.

Pierwsza droga to transakcja raporty.aspx, która uruchamia dowolny szablon RDL przechowywany na serwerze raportów - wystarczy podać jego ścieżkę. Druga to transakcja wydruk_refno.aspx, zaprojektowana wąsko: drukuje jeden konkretny dokument na podstawie jego numeru referencyjnego, korzystając z lokalnego szablonu RDLC dołączonego do aplikacji.

Cecharaporty.aspxwydruk_refno.aspx
Typ szablonuRDL (serwer raportów)RDLC (lokalnie, w aplikacji)
Parametr wskazujący raportraport - pełna ścieżkatypdok - nazwa pliku
Parametr wymagany dodatkowobrakrefno - numer dokumentu
Typowe zastosowaniedowolny raport z kataloguwydruk jednego dokumentu
Kody kreskowetak, parametr eantak, parametr ean + zapis w dpean
Wysyłka e-mailnietak, parametr email

W praktyce wdrożeniowej to rozróżnienie ma znaczenie przy projektowaniu nowego wydruku. Jeśli potrzebne jest zestawienie analityczne albo raport bez jednego, oczywistego dokumentu źródłowego, naturalnym wyborem jest raporty.aspx. Jeśli natomiast chodzi o wydruk konkretnej faktury, dokumentu magazynowego czy etykiety powiązanej z jednym rekordem w bazie danych, celem jest wydruk_refno.aspx.

Raporty.aspx - podgląd raportu

Uruchomienie transakcji wymaga podania parametru raport, wskazującego ścieżkę i nazwę pliku szablonu. Przykładowo wartość raport=/Firma_SoftwareStudio/dokumenty_wz oznacza uruchomienie pliku dokumenty_wz.rdl z folderu Firma_SoftwareStudio, zdefiniowanego w bazie danych SQL Reporting Services.

Domyślnym zachowaniem jest podgląd wyniku na stronie, ale opcjonalny parametr save pozwala wskazać format pliku wynikowego - save=pdf lub save=xls. Wszystkie parametry, które nie należą do listy nazw zastrzeżonych, przekazywane są wprost jako wartości parametrów raportu przygotowanego w Report Builder, co pozwala filtrować dane bez modyfikacji samego szablonu.

Przy każdym uruchomieniu do raportu trafia też komplet zmiennych sesyjnych, odczytanych z tabeli zalogowanego użytkownika:

ZmiennaZawartość
@KTOidentyfikator zalogowanego użytkownika
@LOGINlogin użytkownika
@MAILadres e-mail przypisany do konta
@ROLASYSrola systemowa użytkownika
@MPKmiejsce powstawania kosztów
@MAGAZYNprzypisany magazyn
@ODDZIALoddział firmy
@DATAbieżąca data uruchomienia

Dzięki temu ten sam szablon RDL może zwracać inny wynik w zależności od tego, kto go uruchamia - operator z jednego oddziału widzi wyłącznie swoje dane, bez konieczności utrzymywania osobnej kopii raportu dla każdej lokalizacji.

wydruk_refno.aspx - wydruk po REFNO

Domyślnie transakcja generuje wydruk na podstawie dwóch parametrów wymaganych: typdok, określającego nazwę pliku raportu RDLC, oraz refno, czyli numeru referencyjnego dokumentu przekazywanego dalej do szablonu jako @REFNO. Skąd bierze się sam numer referencyjny, opisuje osobny materiał o numeracji dokumentów.

Przykładowe wywołanie wygląda następująco:

wydruk_refno.aspx?typdok=faktura_vat&refno=12345&save=pdf

Efektem jest plik 12345.pdf zapisany w folderze App_Pdf. Parametr save decyduje o tym, że plik trafia najpierw na serwer, a użytkownik pobiera go na żądanie - alternatywą jest parametr export, który od razu wymusza pobranie pliku w przeglądarce, bez pośredniego zapisu.

Nazwę pliku można zbudować dynamicznie parametrem regexp, podstawiając w szablonie nazwy takie wartości jak DATE, DATETIME, NAME czy NAME2. Osobny parametr delete porządkuje foldery tymczasowe, usuwając z App_Pdf lub App_Xls pliki starsze niż z bieżącego dnia - przydatne tam, gdzie wydruki generowane są masowo i w dużej liczbie w ciągu dnia roboczego.

Kody kreskowe na wydrukach

Obie transakcje potrafią przed przygotowaniem wydruku dogenerować kod kreskowy - wystarczy dodać parametr ean ze wskazaniem grupy definicji zapisanej w skorowidzu EANG. System sam odczytuje z bazy, którą kolumnę i z jakiej tabeli zakodować, a wygenerowany kod może zostać umieszczony bezpośrednio na dokumencie, na przykład etykiecie miejsca składowania opisanej przy okazji transakcji x_run.aspx.

Biblioteka obsługuje kilka standardów kodowania, dobieranych automatycznie na podstawie konfiguracji skorowidza:

  • EAN8 i EAN13 - standardowe kody produktowe o stałej długości.
  • CODE128 wraz z wariantami A, B i C - najczęściej wykorzystywany w dokumentach magazynowych i logistycznych.
  • CODE39 - prosty kod alfanumeryczny, popularny w starszych integracjach.
  • ITF14 - kod stosowany na opakowaniach zbiorczych i paletach.
  • 2OF5 - kod numeryczny wykorzystywany w zastosowaniach magazynowych.

Dla transakcji wydruk_refno.aspx wygenerowany kod zapisywany jest dodatkowo w tabeli dpean, co pozwala odtworzyć historię wydruków etykiet niezależnie od tego, czy plik PDF nadal istnieje na dysku serwera.

Wysyłka e-mail i archiwizacja

Parametr email zmienia sposób udostępnienia gotowego pliku - zamiast czekać na pobranie przez użytkownika, dokument trafia jako załącznik bezpośrednio do adresata. Wartością parametru jest kod pozycji skorowidza EML, który wskazuje zarówno skrzynkę nadawczą, jak i szablon treści wiadomości z polami takimi jak temat, treść oraz zapytanie SQL wyszukujące adres odbiorcy. System zapisuje wtedy zadanie w tabelach _task i _send, a samą wysyłkę realizuje w tle usługa ssJOB.

Osobnym mechanizmem jest archiwizacja. Parametr archiwum pozwala skopiować każdy wygenerowany plik do wskazanej ścieżki, na przykład App_Zal\@REFNO\, gdzie @REFNO zamieniane jest na rzeczywisty numer dokumentu. Dzięki temu każdy kolejny wydruk tego samego dokumentu odkłada się jako kolejna kopia, a fakt przeniesienia pliku odnotowywany jest w tabeli historii wraz z informacją, kto i kiedy tego dokonał. Parametr dpzal=1 idzie o krok dalej i dodatkowo zapisuje wpis o załączniku w tabeli dpzal, co pozwala listować powiązane pliki zwykłym zapytaniem SQL.

Dynamiczne linki do raportu

Wartości parametrów raportu nie muszą być zapisane na sztywno w adresie transakcji. Dowolny parametr URL rozpoczynający się od symbolu @ zostaje przekazany wprost do zmiennej raportu o identycznej nazwie - wywołanie z fragmentem @ADRES=0 podstawi wartość zero pod parametr @ADRES zdefiniowany w szablonie, na przykład przy masowym drukowaniu etykiet miejsc składowania.

W praktyce wydruk rzadko jest uruchamiany ręcznym wpisaniem adresu - najczęściej kryje się pod przyciskiem w interfejsie. Przypisanie transakcji do takiego przycisku odbywa się w konfiguratorze menu, gdzie dla wybranej pozycji ustawia się transakcję do uruchomienia wraz z gotowym zestawem parametrów. Tam, gdzie wartość parametru ma zależeć od wyboru dokonanego przez użytkownika, zamiast stałego adresu wykorzystuje się transakcję x_run.aspx ze skorowidzem RUN, która buduje wywołanie w locie na podstawie zaznaczonego rekordu.

Gdzie w interfejsie spotkasz wydruki

Poniższe zrzuty ekranu pokazują dwa miejsca w panelu administracyjnym, które bezpośrednio zasilają mechanizm raportowy opisany wyżej.

StudioSystem

Przycisk zamiast wpisywanego adresu

Administrator ustawia transakcję i parametry raz, w formularzu pozycji menu. Użytkownik końcowy widzi już tylko zwykły przycisk uruchamiający wydruk.

Numer referencyjny przekazywany do wydruku nie powstaje przypadkowo - nadaje go moduł numeracji dokumentów, dostępny z poziomu panelu administratora.

StudioSystem

Jedno źródło numeru referencyjnego

Numer nadany przy zapisie dokumentu towarzyszy mu już do końca - od zestawienia w tabeli, przez wydruk, aż po ewentualną wysyłkę e-mailem.

Podsumowanie

Reporting Services w StudioSystem to nie jedna transakcja, lecz dwie uzupełniające się ścieżki oparte na wspólnym silniku SQL Server Reporting Services. Raporty.aspx sprawdza się przy dowolnych zestawieniach opartych na szablonie RDL z serwera raportów, a wydruk_refno.aspx - przy wydruku konkretnego dokumentu na podstawie jego numeru referencyjnego, z lokalnym szablonem RDLC.

Obie potrafią dogenerować kod kreskowy, zapisać wynik w formacie PDF lub XLS, wysłać go e-mailem i odłożyć kopię w archiwum - a całość spina się w interfejsie bez pisania kodu, poprzez zwykłą pozycję menu skonfigurowaną w konfiguratorze.

Słownik pojęć

Podstawowe pojęcia - Reporting Services

Terminologia przydatna przy rozmowie o warstwie raportowej platformy StudioSystem.

SSQL Reporting Services
Silnik raportowy Microsoft SQL Server, na którym oparta jest warstwa raportowa platformy StudioSystem.
RRDL
Report Definition Language - format szablonu raportu przechowywanego na serwerze raportów, uruchamiany transakcją raporty.aspx.
RRDLC
Lokalna odmiana definicji raportu, dołączana do aplikacji i przetwarzana przez transakcję wydruk_refno.aspx.
RREFNO
Numer referencyjny dokumentu przekazywany do raportu jako parametr, na podstawie którego pobierane są dane do wydruku.
ESkorowidz EANG
Słownik definiujący sposób generowania kodów kreskowych dla poszczególnych typów dokumentów i kolumn danych.
ESkorowidz EML
Słownik szablonów wiadomości e-mail wykorzystywany przy automatycznej wysyłce wygenerowanego wydruku.
FAQ

Najczęściej zadawane pytania

01

Czym różnią się raporty.aspx i wydruk_refno.aspx?

Raporty.aspx to uniwersalna przeglądarka dowolnego raportu wskazanego ścieżką na serwerze raportów, natomiast wydruk_refno.aspx to wyspecjalizowana transakcja do wydruku konkretnego dokumentu na podstawie jego numeru referencyjnego REFNO.

02

Jaka jest różnica między plikiem RDL a RDLC?

RDL to definicja raportu przechowywana i wykonywana po stronie serwera raportów, w folderach takich jak Firma_SoftwareStudio. RDLC to lokalna odmiana definicji, dołączana do aplikacji i przetwarzana bezpośrednio przez transakcję wydruk_refno.aspx bez udziału osobnego serwera raportów.

03

Jak wygenerować kod kreskowy na wydruku?

Wystarczy dodać parametr ean ze wskazaniem grupy definicji ze skorowidza EANG. System sam dobierze typ kodu - obsługiwane są między innymi EAN8, EAN13, CODE128 z wariantami A, B i C, CODE39, ITF14 oraz 2OF5.

04

Czy wydruk może zostać wysłany e-mailem automatycznie?

Tak, transakcja wydruk_refno.aspx obsługuje parametr email wskazujący kod pozycji skorowidza EML. System tworzy plik, zapisuje zadanie w tabelach _task i _send, a wysyłkę realizuje w tle usługa ssJOB.

05

Gdzie zapisywane są wygenerowane pliki PDF i XLS?

Domyślnie pliki trafiają do folderów App_Pdf i App_Xls na serwerze aplikacji. Parametr archiwum pozwala dodatkowo skopiować dokument do wskazanej ścieżki, na przykład App_Zal z numerem REFNO w nazwie katalogu.

06

Jak przypisać wydruk do przycisku w menu?

W konfiguratorze menu definiuje się pozycję z polami Transakcja do uruchomienia i Parametry transakcji, wskazując wydruk_refno.aspx lub raporty.aspx wraz z gotowym zestawem parametrów. Wartości zależne od wyboru użytkownika przekazuje się dynamicznie przez transakcję x_run.aspx.

Warto przeczytać

Powiązane materiały o raportach i wydrukach

Kolejne kroki, jeśli konfigurujesz wydruki dokumentów w systemie.

Parametry

Raporty.aspx - parametry transakcji

Pełny wykaz parametrów wymaganych, opcjonalnych i dowolnych transakcji raporty.aspx, wraz z listą zmiennych sesyjnych przekazywanych automatycznie do każdego raportu.

Czytaj dalej
Wydruki

wydruk_refno.aspx - wydruk po REFNO

Szczegółowy opis parametrów typdok, refno, save, export, regexp oraz archiwum, z przykładami gotowych wywołań transakcji.

Czytaj dalej
Kody

Kody kreskowe w StudioSystem

Jak system dobiera typ kodu kreskowego na podstawie skorowidza EANG i gdzie te kody trafiają poza wydrukami raportowymi.

Czytaj dalej
Dane

Baza danych i widoki SQL

Warstwa danych, z której korzystają szablony RDL i RDLC. Pokazuje, skąd raport pobiera dane, zanim trafią na wydruk.

Czytaj dalej
Interfejs

Konfigurator - menu bez kodu

Jak przypisać transakcję raportową do przycisku w menu oraz jak zbudować podmenu z kilkoma wariantami wydruku dla jednej tabeli.

Czytaj dalej
Dokumenty

Numeracja dokumentów

Skąd bierze się numer REFNO towarzyszący dokumentowi od zapisu, przez wydruk, aż po ewentualną wysyłkę e-mailem.

Czytaj dalej

Chcesz zobaczyć wydruki i raporty w działaniu?

Uruchom demo modułów StudioSystem i sprawdź platformę na żywo.