Akcja generowania dokumentów DOCX w BPS

Facebooktwitterpinterestlinkedinmail
Dotyczy wersji 8.0.x; autor: Kamil Nędza
 

Opis funkcjonalności:

 

Korzystając z WEBCON BPS Studio na stworzonych przez nas obiegach dokumentów jesteśmy w stanie dodać akcje, które umożliwiają generowanie plików w formacie DOCX. Aby skorzystać z tej funkcjonalności, najpierw należy stworzyć szablon pliku (również w formacie DOCX), a następnie skonfigurować w odpowiedni sposób akcje w wymaganym obiegu. Tak wygenerowany plik, może zostać automatycznie dodany jako załącznik do dokumentu BPS.

Szablon jest standardowym plikiem DOCX, w którym dodatkowo można wpisywać tagi i umieszczać obrazy, które zostaną zamienione na dane lub obrazy z danego elementu. Taki szablon należy umieścić w dowolnej bibliotece SharePoint. Ścieżka do szablonu to jego pełny adres URL.

Szablon z przykładowymi wartościami (wąsami) dla danego dokumentu można znaleźć klikając na przycisk Admin na górnym pasku elementu wyświetlanego w przeglądarce (opcja dostępna tylko dla Administratorów). W szablonie znajdują się wszystkie możliwe do wykorzystania tagi dotyczące atrybutów. Dodatkowo jest możliwość zastosowania odpowiedniego szablonu do utworzenia w dokumencie tabeli z zawartością listy pozycji, lub atrybutu Tabela SQL oraz obrazka zastępczego, który zostanie podmieniony na obraz z wybranego atrybutu typu "Pojedynczy wiersz tekstu" w trybie "Obrazek".

W celu dodania kodów kreskowych lub kodów 2D do szablonu można zmodyfikować przykładowy plik opisany wyżej wklejając obrazki dostępne w katalogu C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\15\TEMPLATE\IMAGES\WEBCON\ (domyślna ścieżka dla Sharepointa 2013) o nazwach "barcode.png" i "barcode2d.png" lub w katalogu instalacyjnym WEBCON Workflow Studio.

 

Przykład realizowanej funkcjonalności:

W utworzonym wcześniej obiegu raportu wydatków, w kroku archiwum, chcemy mieć możliwość wygenerowania dokumentu DOCX, który będzie zawierał kod kreskowy, sygnaturę dokumentu, aktualną datę wygenerowanego dokumentu i zestawienie wydatków.

 

Konfiguracja:

Zaczynamy od utworzenia szablonu dokumentu DOCX. Przydatne mogą się okazać tagi, które podczas generowania dokumentu, zostaną zastąpione atrybutami z dokumentu. Tagi wraz z ich opisem możemy szybko wygenerować poprzez wejście w tryb Admina na dokumencie. Następnie wybieramy „Szablon DOCX”.

docx-r1

Rys. 1. W tryb administratora przechodzimy klikając przycisk „Admin” w prawym górnym rogu

docx-r2

Rys. 2. Generujemy plik DOCX z podstawowymi tagami

 Dla naszego przykładowego dokumentu wygenerowane tagi wyglądają następująco:

{WFD_AttPeople1} – Osoba akceptujaca
{N:WFD_AttPeople1} – Osoba akceptujaca – Nazwa wyswietlana
{I:WFD_AttPeople1} – Osoba akceptujaca – ID
{WFD_AttPeople2} – Osoba odpowiedzialna
{N:WFD_AttPeople2} – Osoba odpowiedzialna – Nazwa wyswietlana
{I:WFD_AttPeople2} – Osoba odpowiedzialna – ID
{WFD_AttDecimal2} – Suma wydatków
{FC:WFD_AttDecimal2} – Suma wydatków – Przecinek
{FD:WFD_AttDecimal2} – Suma wydatków – Kropka
{CST_CurUserName} – Zalogowany uzytkownik – Nazwa
{CST_CurUserLogin} – Zalogowany uzytkownik – Login
{CURRENTDATE} – Aktualna data
{DD:CURRENTDATE} – Aktualna data – Dzien
{DM:CURRENTDATE} – Aktualna data – Miesiac
{DY:CURRENTDATE} – Aktualna data – Rok
{CST_TimeNow} – Aktualny czas

{WFD_TSInsert} – Data utworzenia
{DD:WFD_TSInsert} – Data utworzenia – Dzien
{DM:WFD_TSInsert} – Data utworzenia – Miesiac
{DY:WFD_TSInsert} – Data utworzenia – Rok
{WFD_ID} – ID elementu
{WFD_Signature} – Sygnatura
{WFD_CreatedByLogin} – Autor – Login
{WFD_CreatedByName} – Autor – Nazwa
{WFT_AssigUserLogins} – Osoby przypisane – Login
{WFT_AssigUserNames} – Osoby przypisane – Nazwa
{STP_Name} – Krok
{DTYPE_Name} – Typ dokumentu
{WF_Name} – Workflow
{DEF_Name} – Proces
{WFD_AttDateTime1} – Data platnosci
{DD:WFD_AttDateTime1} – Data platnosci – Dzien
{DM:WFD_AttDateTime1} – Data platnosci – Miesiac
{DY:WFD_AttDateTime1} – Data platnosci – Rok
{WFD_AttDateTime2} – Data raportu
{DD:WFD_AttDateTime2} – Data raportu – Dzien
{DM:WFD_AttDateTime2} – Data raportu – Miesiac
{DY:WFD_AttDateTime2} – Data raportu – Rok
{WFD_AttDecimal1} – Kwota
{FC:WFD_AttDecimal1} – Kwota – Przecinek
{FD:WFD_AttDecimal1} – Kwota – Kropka
{WFD_AttText1} – Nazwa

W dokumencie generowane są jednocześnie obrazki, które umieszczone w szablonie, będą podmieniane na kody kreskowe. Mamy do dyspozycji dwa rodzaje: standardowy kod kreskowy, lub sygnaturę 2D. Obrazki te są również dostępne w folderze instalacyjnym WEBCON BPS Studio.

docx-r3a

docx-r3b

Rys. 3. Rysunki wykorzystywane w szablonach DOCX

 

W przypadku, gdybyśmy potrzebowali bardziej zaawansowane tagi, polecam zajrzeć do pomocy w WEBCON BPS Studio (dostępnej pod klawiszem F1). W temacie „tagi” znajdziemy dużo więcej rzadziej użytkowanych tagów.

Warto także zerknąć na konfigurację atrybutu SQLGRID, ponieważ to z niego będziemy robić raport:

docx-r4

Rys. 4. Konfiguracja atrybutu SQLGRID „Raport”

 Uzbrojeni w taką wiedzę możemy zacząć tworzyć szablon dla dokumentu. Przykład prostego raportu w formie tabelarycznej znajduje się na Rys. 5. Zachęcam do zapoznania się z pomocą w WEBCON BPS Studio, ponieważ znajduje się tam opis tagów użytych do generowania tabeli.

docx-r5

Rys. 5. Przygotowany szablon do generowania raportów

 Kiedy nasz szablon jest już gotowy, umieszczamy go na witrynie. Robimy to poprzez przejście do zawartości witryny i wysłaniu pliku do wybranej przez siebie biblioteki.

docx-r6

Rys. 6. Widok zawartości witryny

 Następnie klikamy „+ nowy dokument” aby dodać stworzony szablon.

docx-r7

Rys. 7. Widok biblioteki po przesłaniu szablony na witrynę

 Sprawdzamy ścieżkę naszego szablonu na witrynie. Możemy to zrobić najeżdżając kursorem na nasz plik. W przeglądarce powinien wyświetlić się link.

docx-r8

Rys. 8. Lokalizacja wysłanego szablonu

Przechodzimy teraz do skonfigurowania akcji do generowania DOCX. Chcemy, aby ta akcja była dostępna jako przycisk w menu, na kroku „Utworzone raporty”. Wchodzimy w edycję kroku, zakładka akcje. Klikamy na drzewie grupę akcji „Przycisk w menu” i następnie dodaj.

docx-r9

Rys. 9. Widok edycji kroku „Utworzone raporty”, po dodaniu i ustawieniu parametrów akcji generującej dokument DOCX

Klikając w przycisk „Konfiguruj” przechodzimy do ustawień związanych z akcją generacji dokumentu. W polu „Szablon dokumentu (URL):” wpisujemy dokładny link, pod którym znajduje się plik na naszej witrynie. Następnie zaznaczamy opcję, że chcemy, aby nasz plik został dołączony do elementu WorkFlow jako załącznik. Następnie zapytaniem SQL ustalamy nazwę i opis generowanego pliku. Ja w tym wypadku posłużyłem się wartościami domyślnymi, które można automatycznie przenieść klikając w przykład znajdujący się pod polem „Nazwa pliku SQL” i „Opis pliku SQL”

docx-r10

Rys. 10. Konfiguracja akcji generującej dokument DOCX

Zapisujemy konfigurację. Gotowe. Teraz pozostaje tylko sprawdzić działanie funkcjonalności.

 

Weryfikacja działania funkcjonalności

Otwieramy element Workflow, w którym została skonfigurowana nasza akcja. W tym wypadku znajduje się ona w archiwum, więc najpierw przechodzimy do trybu edycji. Następnie klikamy przycisk „Generuj wydruk”. Po chwili w sekcji „Załączniki” pojawi się wygenerowany dokument.

docx-r11

Rys. 11. Widok formularza po wygenerowaniu dokumentu

Pobieramy wygenerowany dokument i weryfikujemy, czy pismo spełnia nasze oczekiwania.

docx-r12

Rys. 12. Wygląd wygenerowanego dokumentu

Może się okazać, że nasz dokument całkowicie różni się od naszego szablonu i w dodatku zawiera nadmiarowe ciągi znaków z dziwnymi tagami jak na poniższym rysunku.

docx-r13

Rys. 13. Błędnie wygenerowany dokument

Jeżeli tak się stało polecam lekturę dodatku A.

 

Dodatek A – naprawa tagów szablonu DOCX

 

Może się zdarzyć, że podczas edycji dokumentu WORD samodzielnie w kodzie xml wrzuci własne „śmieci” między wpisane przez nas tagi. Przez co podczas akcji generowania, program nie jest w stanie odczytać naszych tagów. Poniżej znajduje się metoda na ręczne usunięcie niechcianej treści z naszych tagów.

Ważnym jest, aby w ustawieniach naszego systemu operacyjnego skonfigurować, aby wyświetlane były rozszerzenia plików. Kiedy już to zrobimy, przechodzimy do folderu w którym znajduje się nasz szablon. Zmieniamy jego rozszerzenie z DOCX na ZIP.

docx-a1

Rys. 1. Zmiana rozszerzenia dokumentu z DOCX na ZIP

Następnie wchodzimy utworzony plik i kopiujemy plik dokument.xml poza archiwum.

docx-a2

Rys. 2. Lokalizujemy plik document.xml

docx-a3 Rys. 3. Plik document.xml został skopiowany poza archiwum

Otwieramy skopiowany plik dowolnym edytorem tekstu. Jednak zalecam jakikolwiek program, który koloruje składnię językową, bo bardzo to ułatwi. Ja użyłem darmowego notepad++. Odszukujemy w kodzie wszystkie nasze tagi, które zostały uszkodzone.

docx-a4

Rys. 4. Zaznaczono niepożądane elementy, które zostały dodane przez program WORD.

Po zlokalizowaniu i usunięciu niepożądanej treści zapisujemy plik document.xml. Następnie kopiujemy go do archiwum z rozszerzeniem ZIP i nadpisujemy stary. Następnie z powrotem zamieniamy rozszerzenie archiwum ZIP na DOCX. Gotowe. Ponownie wysyłamy plik DOCX na witrynę i cieszymy się działającym szablonem.

docx-a5

Rys. 5. Wygląd poprawionego pliku documnet.xml.

 

3 thoughts to “Akcja generowania dokumentów DOCX w BPS”

  1. To ja jeszcze tylko dodam, że w wersji 8.0 może być łatwiej – użytkownicy wersji Enterprise dysponujący licencją CAL mogą korzystać z dodatku WEBCON BPS Enterprise do Microsoft Word, który pozwala tworzyć szablony metodą drag and drop.

  2. Jeszcze prostsza metoda na poprawianie błędnych tagów:

    Jeżeli pojawią się "śmiecie " należy w oryginlanym pliku docx. skopiować fragment {…} do Notepad++ i skopiować z powrotem do dokumentu docx. Czyli "czyścimy" kod fragmentami bez konieczności robienia operacji z plikami.

    Można też po prostu wpisywać potrzebny kod {…} do Notepada++ i stamtąd kopiować do Worda.

    Metoda z dodatkiem drag and drop nie zabezpieczy niestety gdy wstawimy kod do Word ale potem go formatujemy, przenosimy itp. błędne tagi zawsze mogą pojawić się nagle i nieoczekiwanie.

  3. Czy w wersji 8.2 dalej jest możliwa podmiana obrazka zastępczego na ten z pola testowego (skonfigurowanego jako obrazek), ponieważ po ustawieniu w szablonie tekstu alternatywnego obrazka (opis) na "ImageFromAttribute:WFD_AttText12", na wygenerowanym dokumencie jest albo kod kresowy (w przypadku wykorzystania obraza zastępczego kodu kresowego ze zmienionym opisem tekstu alternatywnego), lub obrazek użyty w szablonie dokumentu.

Komentarze są zamknięte.