Przejdź do głównej zawartości

Jak tworzyć własne raporty w edytorze?

Edytor raportów w Wapro Anywhere to nowa generacja raportów zbudowana od podstaw do raportów działających w aplikacji html. Umożliwia efektywne tworzenie raportów, które są elastyczne i zgodne z nowoczesną architekturą aplikacji internetowych.

Jak tworzyć nowe raporty?

Standardowo użytkownik ma dostarczone w usłudze podstawowe schematy wydruków, które mogą podlegać edycji i modyfikacjom przez użytkownika.

W wariancie BIZNES użytkownik może modyfikować tylko podstawowe elementy wydruku takie jak czcionki czy kolory. W wariancie PRESTIŻ oraz PRESTIŻ PLUS można projektować własne wzorce wydruków.

Wydruki mogą być tworzone od podstaw bądź tworzone na podstawie systemowego wzorca poprzez modyfikację.

Operacje na wydrukach wykonywane są z poziomu menu Admin | Definicje | Raporty. Aby dodać własny należy wybrać na liście Dodaj i wybrać z menu Typ raportu opcję Edytor wydruków.

Pojawi się okno wyboru szablonu wzorca, który proponuje wstępny układ definicji raportu w zależności od typu dokumentu. Różni się on układem i typem wydruku jaki chcemy dodać. Do dyspozycji są 4 wzorce:

  • Fakturowy - układ z nagłówkami typu sprzedawca, nabywca i pozycje
  • Podstawowy - układ z danymi sprzedawcy i pozycjami
  • Zestawienie - układ tabelaryczny z danymi
  • Pusty - układ budowany od podstaw

Modyfikacja wzorca

Operacje na wydrukach wykonywane są z poziomu menu Admin | Definicje | Raporty. Aby zmodyfikować wzorzec należy go powielić poprzez opcję Powiel a następnie Definicja raportu co uruchomi edytor i umożliwi wprowadzanie zmian w istniejącej definicji raportu.

Funkcje edytora

Edytor podzielony jest na kilka sekcji i umożliwia interaktywne wprowadzanie zmian w raporcie. Użytkownik w lewej części raportu wprowadza zmiany a w prawej ma interakywny podgląd projektowanego wydruku wraz z możliwością oznaczenia elementów, które użytkownik podświetlił w definicji co znacząco ułatwia jego projektowanie.

Jeśli użytkownik posiada doświadczenie z budowania raportów w innych narzędziach np. Crystal reports, reporting services, pentahoo lub inne to musi zrozumieć filozofię nowego narzędzia, ponieważ co do zasady każde z nich służy do projektowania wydruku, jednak każde różni się co do sposobu jak się to robi.

Edytor raportu bazuje na definicji poszczególnych sekcji raportu. Raport podzielony jest na sekcje typu nagłówek, dane czy podsumowanie. Każda sekcja może być zbudowana na podstawie elementu takiego jak etykieta + wartość(np. pola typu data wystawienia, nr rachunku bankowego itp.) sekcja danych (np. pozycja dokumentu). Dane mogą być wprowadzane do danego elementy wydruku:

  • statycznie - definicja raportu w danym elemencie posiada na stałę wprowadzony tekst, który zawsze drukowany jest na stałe
  • na podstawie zapytania SQL - definicja raportu w każdym elemencie opartym o zapytanie SQL uruchamia to zapytanie, odbiera wynik z bazy danych i podstawia jako wartość pola lub tabeli
Podpowiedź

W przeciwieństwie do edytora typu Crystal reports, użytkownik nie musi budować globalnej definicji pól i stosować podraportów, które korzystają z innej definicji zapytań sql. Każde pole lub kontrolka posiada swoją definicję SQL co pozwala efektywnie dekomponować logikę raportu z jednego globalnego zapytania na wiele małych i szybkich zapytań uzupełniających poszczególne elementy raportu.

Zakładki edytora

Podstawowe zakładki edytora to:

  • Ogólne - umożliwia wprowadzenie nazwy raportu, opisu oraz wskazania ustawień stopki i nagłówka a także orientacji strony
  • Parametry - pozwala przekazać z aplikacji jaki parametr ma być podstawiany do zapytań aby filtrować odpowiednio dane
  • Zawartość - służy do konfiguracji części właściwej raportu
uwaga

Dane do raportu w 99.9% można odczytać z bazy na podstawie przekazania jednego parametru jak DocumentId - umożliwia on wskazanie kontekstu rekordu z bazy danych np. id dokumentu handlowego, id zamówienia itp. Posiadając informację co do rekordu z tabeli właściwej można odczytać wszystkie inne elementy jeśli jest taka potrzeba jak id kontrahenta, id firmy czy id magazynu.

Budowanie merytoryki raportu odbywa się w zakłądce Zawartość, jak zostało wcześniej wspomniane odbywa się to poprzez definicję pól w sekcjach. Główny podział raportu to praca na sekcjach:

  • Nagłówek - w tej sekcji umieszczane są elementy nagłówkowe raportu takie jak dane miejsca wystawienia, daty wystawienia, stałego nagłówka tekstowego lub danych odbiorcy i nabywcy z dokumentu. Nagłówek może być w podziale kolumnowym.
  • Tabela - w tej sekcji umieszczane są dane, które są zazwyczaj w układzie tabelarycznym - w tabeli prezentowane są dane pozycji dokumentów, listy dokumentów itp.
  • Stopka - to podsumowanie gdzie mogą być drukowane sekcje podpisów czy podsumowań dokumentów.

Dane w sekcjach są dzielone na wiersze, pozwala to umieszczać w jednej sekcji w nowych liniach kolejne elementy raportu jeden pod drugim. Po podświetleniu danego wiersza w podglądzie widać obrysowanie całej sekcji, dzięki czemu można wizualnie zweryfikować jakie elementy w tej sekcji są zawarte. Wiersze z kolei mogą być dzielone na kolumny dzięki czemu można uzyskiwać dowolny podział nagłóka na sekcje odpowiadające całej szerokości strony (np. nagłówek tekstowy na całą szerokość) lub po połowie (np. sekcja danych nabywcy i sprzedawcy - każda sekcja odpowiada za swoją połowę strony czyli jedną z dwóch kolumn).

Aby dodać element raportu należy wybrać sekcję a następnie nad tabelą wybrać opcję Dodaj - pojawi się konfigurator elementu, który składa się z nowych opcji konfiguracyjnych. Ponownie po lewej stronie mamy dostępny zestaw elementów konfiguracyjnych a po prawej stronie podgląd wydruku. Lewa sekcja podzielona jest na zakładki:

  • Właściwości - pozwala wpisać nazwę, wybrać typ elementu i ew. wprowadzić wartość statyczną
  • Zapytanie SQL - pozwala wpisać zapytanie SQL, które zwraca dane do danej sekcji
  • Widoczność - pozwala określić zasady widoczności danego elementu

Dodatkowo w zakładce Właściwości użytkownik ma do dyspozycji sekcję Style, w której określa elementy graficzne danego elementu takie jak wyrównanie, kolor czcionki lub tła oraz krój czcionki.

Dla wygody użytkownika w nagłówku okna zaprezentowana jest pełna ścieżka konfigurowanego elementu dzięki czemu osoba zmieniająca element ma cały czas informację jaki element ze struktury dokumentu modyfikuje w danym momencie.

Typy pól

Jak wspomniano w poprzednim akapicie dodając element raportu należy wskazać jego typ. Każdy typ dedykowany jest innemu zadaniu i wyróżniamy następujące typy:

  • Tekst - stały tekst umieszczony w polu np. na stałę wprowadzony tekst w raporcie jako nagłówek
  • Wiersz - element grupujący zestaw pól raportu w formie sekcji jako wiersz
  • Kolumna - element grupujący dane w sekcji z opcją podziełu na kolumny np. wiersz podzielony na dwie kolumny
  • Tabela - element prezentujący dane w formie tabelarycznej
  • Obraz - element pozwalający pobrać dane z bazy w formie base64 i umieszczenie jej na wydruku np. logo na dokumencie
  • Kod kreskowy - element pozwalający drukować pole w formie kodu EAN
  • Kod QR - element pozwalający drukować postać graficzną kodu QR

W zależności od wybranego typu elementu mogą pojawić się dodatkowe opcje konfiguracyjne, np. dla tabeli pojawi się sekcja tabeli, w której użytkownik może wprowadzić dane ręcznie do tabeli lub podpiąć zapytanie SQL, które dane do tabeli podstawia w momencie uruchomienia raportu.

uwaga

Ważne jest zrozumienie logiki i zależności jaka występuje pomiędzy kontrolką z wpisaną wartością stałą oraz kontrolką z włączoną logiką zapytania SQL. Dla przykładu - jeśli użytkownik doda pole typu Tabela i wprowadzi jakąś definicję tabeli i wartości to w zależności od tego czy włączy obsługę zapytania SQL czy nie te dane będą na stałę w raporcie lub będą każdorazowo pobierane z wykonanego zapytania przy uruchomieniu raportu. Oznacza to że w trybie edytora jeśli ktoś wpisze dane w celu podglądu jak tabela wyglądać będzie na wydruku a następnie włączy zapytanie sql dla danej sekcji to po zapisaniu raportu w edytorze i ponownym wejściu tych danych przykładowych w edytorze nie będzie.

Zapytanie SQL może być uruchamiane jako zapytanie adhoc (ręcznie wprowadzona pełna definicja zapytania SQL w edytorze) lub uruchomienie procedury składowanej(definicja zapisana w bazie danych jako stored procedure i wywoływana w raporcie).

notatka

Edytor zapytania jest uproszczonym edytorem nie posiadającym funkcji typu Intellisense podpowiadających składnie zapytań SQL.

Elementy raportu dodawanie w edytorze podlegają stylowaniu. Po wybraniu danego elementu w sekcji Style można wybrać właściwości jakie użytkownik chce podkreślić na danym elemencie. Mogą to być marginesy, obramowania wybranych krawędzi, rozmiary, wcięcia, kolory tła czy czcionki oraz rozmiar czcionki. Dzięki temu można wpływać na graficzne elementy wydruku i zmieniać ich wybrane właściwości a tym samym poprawiając atrakcyjność i czytelność wydruków.

Sekcje warunkowe

Edytor umożliwia ukrywanie sekcji w zależności od warunku zwróconego z zapytania SQL. Warunek musi się wykonać jako dzialanie logiczne. Dla przykładu jeśli na wydruku faktury chcesz warunkowo wpływać na widoczność sekcji płatnika (dane sprzedawcy są inne niż dane płatnika), należy dodać odpowiednie zapytanie zwracające wynik per każdy dokument.

select convert(bit, case when ID_KONTRAHENTA <> ID_PLATNIKA then 1 else 0 end) from DOKUMENT_HANDLOWY where ID_DOKUMENTU_HANDLOWEGO = @DocumentId

Powyższe wyrażenie porównuje dla danego dokumentu (warunek na ID_DOKUMENTU_HANDLOWEGO = @DocumentId) gdzie @DocumentId odpowiada parametrowi przekazanemu do raportu z aplikacji.

Jeśli dane w kolumnie ID_KONTRAHENTA oraz ID_PLATNIKA różnią się warunek zwraca 1 a jeśli równe to 0 - całość konwertowana jest funkcją SQL CONVERT do typu BIT. Alternatywnie można użyć funkcji CAST również rzutując wynik na typ BIT.