Wydruki HTML i PDF w BPS – przykłady

Facebooktwitterpinterestlinkedinmail

dotyczy wersji: 8.1.x; autor: Marcin Wiktor

Celem artykułu jest zademonstrowanie na przykładach funkcjonalności BPS polegającej na tworzeniu wydruków do plików HTML i PDF.

Akcje do generowania wydruków HTML można ustawić jako:

  • Akcję na zakończenie,
  • Akcję na przejściu ścieżką,
  • Przycisk w menu,
  • Przycisk w menu (akcja globalna).

Akcje generowania wydruków PDF z kolei można ustawić jako:

  • Akcję na wejście,
  • Akcję na zakończenie,
  • Akcję na przejściu ścieżką,
  • Przycisk w menu,
  • Przycisk w menu (akcja globalna).

Różnica ta wynika z faktu, że wydruk PDF można skonfigurować tak żeby zapisywał się jako załącznik do przetwarzanego dokumentu. Opis takiej konfiguracji znajduje się w przykładzie nr 2.

 1. Przykład realizowanej funkcjonalności – Wniosek urlopowy

Na potrzeby tego artykułu wykorzystany zostanie przykładowy obieg wniosków urlopowych z następującymi atrybutami:

  • Data do (data i godzina),
  • Data od (data i godzina),
  • Data rejestracji wniosku (data i godzina),
  • Ilość dni (liczba całkowita),
  • Osoba rejestrująca (osoba lub grupa),
  • Przełożony (osoba lub grupa),
  • Typ nieobecności (pole wyboru),
  • Uzasadnienie (wiele wierszy tekstu).
1
Schemat graficzny obiegu wniosku urlopowego

 

W tym przykładzie wykorzystamy możliwość wygenerowania wydruku HTML oraz wydruku PDF (do wyświetlenia) jako akcja globalna – przycisk w menu. Przycisk będzie dostępny we wszystkich krokach obiegu, poza Rejestracją wniosku.

 

Pierwszą czynnością będzie otworzenie w przeglądarce nowego dokumentu Wniosku urlopowego oraz włączanie trybu Admina.

2
Lokalizacja odnośnika do trybu Admina

Następnie, wśród nowo dostępnych opcji, wybieramy odnośnik „Szablon HTML” i zapisujemy plik na dysku.

3
Lokalizacja odnośnika do pobrania szablonu HTML

Pobrany szablon zawiera spis wszystkich możliwych tagów, jakie możemy użyć w tworzonym dla tego konkretnego obiegu, wydruku HTML.

4
Lista tagów możliwych do użycia w wydruku dla obiegu Wniosków urlopowych

Spis wszystkich możliwych do użycia w wydrukach tagów jest dostępny w pomocy do BPS Studio (klawisz F1) w temacie „Tagi”. Można tam znaleźć także bardziej zaawansowane tagi, które nie są pokazywane w wygenerowanym szablonie.

Jak można łatwo zauważyć, nazwy tagów to po prostu nazwa kolumny w bazie danych odpowiadającej danemu atrybutowi. W przypadku pól, które składają się z ID i nazwy jak np. {CURRENTUSER}, {DTYPE_name} czy pola wyboru zdefiniowanie jako „picker”, sama nazwa kolumny w tagu zwróci zarówno ID jak i nazwę (wartości są oddzielone znakiem #).
Jeżeli chcemy uzyskać samo ID, wówczas przed nazwą pola należy umieścić I:
W przypadku gdy zależy nam na wyświetleniu samej nazwy, nazwę pola poprzedzamy N:

Dla przykładu niech posłuży nam atrybut „Przełożony”. Sam tag {WFD_AttPeople2} zwróci nam login i nazwę przełożonego. Nam potrzebne jest tylko imię i nazwisko przełożonego, bez loginu. W tym wypadku nazwę kolumny w tagu, poprzedamy N: – {N:WFD_AttPeopl2} i dzięki temu na raporcie będzie wyświetlona tylko nazwa – Borys Szyc.

W naszym wydruku będziemy chcieli umieścić podstawowe informacje o dokumencie oraz wartości wszystkich atrybutów w odpowiednich formatach.

Sam szablon wydruku może być plikiem HTML lub ASPX, w naszych przykładach będziemy stosować jednak tylko pliki html. W przypadku tego procesu zastosujemy prosty szablon:

5
Kod HTML szablonu do wydruków na obiegu Wniosków urlopowych

Szablon zapisujemy jako szablon_wniosek_urlopowy.html


Zapisany szablon należy umieścić w dowolnej bibliotece SharePoint. Nasz szablon zapiszemy na witrynie „Urlopy” w bibliotece „Elementy zawartości witryny”, która jest domyślnie tworzona dla każdej witryny.

6
Lokalizacja biblioteki "Elementy zawartości witryny"

Oba wydruki umieścimy jako akcje globalne – przycisk w menu.

W tym celu po wejściu w obieg „Obieg urlopowy” klikamy zakładkę „Akcje globalne” i dodajemy dwie akcje – „Generuj HTML” i „Wydruk PDF”.
Konfiguracja akcji wydruku HTML ogranicza się do podania adresu wcześniej wgranego szablonu html:

7
Konfiguracja akcji "Generuj HTML"

W konfiguracji akcji generującej PDF także podajemy adres szablonu, ale ponadto w sekcji „Generuj do …” zaznaczamy „Wyświetl na ekranie” oraz w sekcji „Opcje stopki” odznaczamy „Pokaż stopkę”.

8
Konfiguracja akcji "Wydruk PDF"

Na koniec, po zaznaczeniu jednej z akcji typu „Przycisk w menu”, obok zakładki „Ustawienia” pojawi się druga o nazwie „Przycisk w menu”.

9
Lokalizacja konfiguracji "Przycisk w menu"

Możemy w niej skonfigurować np. potwierdzenie żądania wykonania akcji, ograniczenie widoczności czy ikonę akcji. Ponieważ oba przyciski mają być niewidoczne na kroku rejestracji, musimy dodać odpowiedni warunek:

10
Konfiguracja ustawień przycisku w menu

Sprawdźmy teraz czy poprawnie skonfigurowaliśmy obie akcje:

11
Efekt poprawnej konfiguracji akcji wydruku jako "przycisk w menu"

Na  koniec zobaczmy efekt jednej z akcji – Generuj HTML

12
Wydruk HTML dla wniosku urlopowego

2. Przykład drugi – Proces zapotrzebowania

W tym przykładzie wykorzystamy prosty proces zgłaszania zapotrzebowania.
Wykorzystamy w tym celu 2 atrybuty:

  • Data rejestracji (data i godzina),
  • Osoba rejestrująca (osoba lub grupa)
  • Uwagi (wiele wierszy tekstu)

Oraz listę pozycji składającą się z następujących kolumn:

  • Nazwa (pojedynczy wiersz tekstu)
  • Kategoria (lista wyboru)
  • Koszt (liczba zmiennoprzeciwnkowa, skonfigurowana jako kwota z walutą PLN)
  • Opis (wiele wierszy tekstu)
13
Schemat graficzny obiegu zgłaszania zapotrzebowania

Po zaakceptowaniu wniosku, na przejściu ścieżka będzie generowany wydruk PDF i dołączamy do dokumentu jako załącznik.

Pierwszą czynnością przed stworzeniem naszego wydruku będzie tak jak w pierwszym przykładzie, wygenerowanie szablonu HTML z dostępnymi tagami i na jego podstawie przygotowanie naszego szablonu HTML. Dla tego procesu zastosujemy poniższy szablon:

14
Kod HTML szablonu do wydruków na obiegu Zapotrzebowania

Szablon zapisujemy jako szablon_zapotrzebowanie.html i podobnie jak w poprzednim przykładzie, umieszczamy w bibliotece „Elementy zawartości witryny”.

Pierwsza część wydruku jest bardzo zbliżona do tej, stworzonej w przykładzie pierwszym, dlatego nie będziemy się nią tu nią zajmować. Zajmiemy się za to częścią, odpowiadającą za wydruk listy pozycji.

Składa się ona z 3 części:

  • Nagłówka – {SUBELEMHEADERTEMPLATE:40}
  • Części wypisującej wszystkie wiersze tabeli – {SUBELEMROWTEMPLATE:40}
  • Stopki – {SUBELEMFOOTERTEMPLATE:40}

Liczba 40 w powyższych tagach oznacza unikalny numer ID listy pozycji.

Do poprawnego wygenerowania zawartości listy wymagana jest tylko środkowa część – {SUBELEMROWTEMPLATE:40}. Nagłówek i stopka są opcjonalne. Nagłówek jednak zawsze warto stosować ze względu na zwiększoną czytelność wygenerowanej listy.
W naszym przykładzie stopkę wykorzystamy do policzenia sumy z pól „Koszt”.

Dobrą praktyką jest umieszczanie całości listy jako tabeli HTML, jednak nie jest wymóg.

 

Nazwy tagów – podobnie jak przy tych wyświetlających wartość standardowych pól – pochodzą od nazw kolumn, które przechowują wartości danych atrybutów w bazie danych.
Ponieważ zgodnie z założeniami procesu, chcemy żeby wydruk był dołączany do każdego zaakceptowanego dokumentu jako załącznik, musimy skonfigurować odpowiednią akcję.

W tym celu tworzymy nową akcję typu „Generacja PDF” na wejście do kroku „Wnioski zaakceptowane

15
Akcja Generuj Wydruk

Następnie przechodzimy do konfiguracji akcji i uzupełniamy Szablon dokumentu, Nazwę pliku SQL, Opis załącznika SQL i w górnej części sekcji „Generuj do …” zaznaczamy „Do załącznika

16
Konfiguracja akcji Generuj wydruk

Po przejściu dokumentu do kroku „Zaakceptowane” możemy sprawdzić czy faktycznie dodany został załącznik z prawidłowym wydrukiem:

17
Efekt poprawnego wykonania akcji Generuj wydruk

I sam wydruk:

18
Wygenerowany wydruk PDF jako załącznik do dokumentu

Drugim specyficznym typem pól w raportach obok list pozycji są Tabele SQL. Tworzy się je analogicznie jak listy, jedyną różnicą są nazwy tagów. Odpowiednio są to:

  • Nagłówek – {SQLGRIDHEADERTEMPLATE:ID}  {/SQLGRIDHEADERTEMPLATE}
  • Zawartość tabeli – {SQLGRIDROWTEMPLATE:ID} {/SQLGRIDROWTEMPLATE}
  • Stopka – {SQLGRIDFOOTERTEMPLATE:ID} {/SQLGRIDFOOTERTEMPLATE}