|
Instrukcja administratora > Parametryzacja systemu > Makiety dokumentów > Edytor makiet | | Drukuj |
Wzór makiety przygotowujemy w formacie HTML. Oprócz standardowego formatu HTML program wymaga pewnych dodatkowych danych:
•21 pierwszych linii przeznaczonych jest na ustawienie konfiguracji wydruku w programie
•między znakami # wstawiane są instrukcje interpretowane przez program
Wzór makiety modyfikujemy na zakładce Źródło.

Przy modyfikacji i tworzeniu nowych dokumentów trzymamy się następujących zasad:
•wzorujemy się na wcześniej utworzonych lub standardowych makietach
•używamy standardowego języka HTML
•niestandardowe instrukcje interpretowane przez program (#...#) wstawiamy klikając w zaplanowanym miejscu prawym klawiszem myszy
•przechodząc na zakładkę Podgląd możemy od razu zobaczyć efekt swojej modyfikacji

W przygotowywanym wzorze oprócz układu ramek i stałych tekstów chcielibyśmy umieścić dane konkretnego pracownika. W tym celu w wybranym miejscu klikamy prawym klawiszem myszy i wybieramy odpowiednio:
•Wstaw dane - podczas wydruku symboliczna dana zastąpiona zostanie faktyczną, np. w miejscu #P_Nazwisko# podstawi się nazwisko konkretnego pracownika.
Szczególne dane z podmenu "Inne":
o#AktualnaData# - bieżąca data z ustawień programu
o#Data_Do# - "data do" z seryjnych dokumentów własnych
o#Data_Od# - "data od" z seryjnych dokumentów własnych
o#NastXx# - podaje datę dnia tygodnia Xx następującego po bieżącej dacie w ustawieniach programu (Xx=Pn,Wt,Śr,Cz,Pi,So,Ni)
o#TytulDokumentu# - podaje tytuł bieżącego dokumentu
Dla zestawień SQL możemy wybrać pola od #SQL_00# do #SQL_99#. Odpowiadają one kolejności pól, jakie pokażą się na zestawieniu. |
•Wstaw znaki sterujące - podczas wydruku symboliczny znak sterujący ustawi np. kolor systemowy wybrany w programie.
Wykaz znaków sterujących:
o#SON# - Zmienia czcionkę na ARIAL i zmniejsza rozmiar
o#SOF# - Wyłącza #SON#'
o#AON# - Zmień czcionkę na ARIAL i wytłuść
o#AOF# - Wyłącza #AON#'
o#bgBiały# - Zmienny kolor systemowy
o#bgJasny# - Zmienny kolor systemowy
o#bgPośredni# - Zmienny kolor systemowy
o#bgCiemny# - Zmienny kolor systemowy
o#bgCzarny# - Zmienny kolor systemowy
o#_bgBiały# - Stały kolor systemowy (niezależny od ustawień z/bez odcieni szarości)
o#_bgJasny# - Stały kolor systemowy (niezależny od ustawień z/bez odcieni szarości)
o#_bgPośredni# - Stały kolor systemowy (niezależny od ustawień z/bez odcieni szarości)
o#_bgCiemny# - Stały kolor systemowy (niezależny od ustawień z/bez odcieni szarości)
o#_bgCzarny# - Stały kolor systemowy (niezależny od ustawień z/bez odcieni szarości)
o#_KolorRamki# - Tak jak #_bgCiemny#, ale do użycia w stylach
o#KolorRamki# - Tak jak #bgCiemny#, ale do użycia w stylach
o#Pole_wyboru# - Pole wyboru (kwadrat pusty)
o#Pole_wyboru_c# - Pole wyboru (kwadrat czarny)
o#X# - Znacznik (X)
o# # - Znacznik ( )
o#Pole_wyboru_x# - Pole wyboru (zaznaczone)
o#Pole_wyboru_puste# - Pole wyboru (puste)
o#Kontrolka_SQL_0..9# - Kontrolka zestawienia SQL (kolejność odpowiada użytym kontrolkom z zestawienia)
•Wstaw pętlę - jeśli we wstawionej pętli wstawimy dane, np.
#LOOP Członkowie rodziny#
#R_Imię#
#ENDLOOP#
otrzymamy listę imion dzieci danego pracownika
•Wstaw warunek - używamy, jeśli chcemy umieścić fragment tekstu drukowany tylko wtedy, gdy spełniony zostanie odpowiedni warunek, np.
#IF SYS_Wynagrodzenie_brutto#>0
pracownik otrzymał wynagrodzenie
#ELSE#
pracownik nie otrzymał wynagrodzenia
#ENDIF#
jeśli wynagrodzenie brutto było większe od zera zostanie wydrukowany tekst "pracownik otrzymał wynagrodzenie", a w przeciwnym wypadku tekst "pracownik nie otrzymał wynagrodzenia"
W linii warunkowej nie może znajdować się nic więcej poza słowami kluczowymi. Wszystkie pozostałe znaki zostaną pominięte
•Wstaw funkcję - możemy wykonywać proste operacje na kwotach i wyrazach. Lista dostępnych funkcji:
o$Oblicz{...} - oblicza wyrażenie arytmetyczne np: $Oblicz{#SYS_Wynagrodzenie_brutto#-#SYS_Podatek_dochodowy#-#SYS_Składka_ZUS_prac.#-#SYS_Składka_zdrow.#}. Funkcja musi być zapisana w jednej linii.
o$Słownie - podaje słowną interpretację kwoty np: #SYS_Wynagrodzenie_brutto#$Słownie
o$Dużymi - drukuje dane dużymi literami np: #P_Nazwisko#$Dużymi
o$Suma - podaje sumę dowolnego pola np: #SYS_Wynagrodzenie_brutto#$Suma
o$Abs - podaje wartość bezwzględną kwoty np: #SYS_Wynagrodzenie_brutto#$Abs
o$Znak - podaje i-ty znak dowolnego pola np: #P_Nazwisko#$Znak[1]
o$SQL{...} - wstawia wynik zapytania SQL podanego pomiędzy nawiasami klamrowymi. Jeśli zapytanie zwróci kilka wierszy lub kolumn (np.jakąś tabelę), jego wiersze zostaną opatrzone atrybutami <tr>...</tr>, a kolumny <td>...</td>, dlatego aby poprawnie go wyświetlić należy funkcję objąć atrybutami <table>...</table>. Funkcja musi być zapisana w jednej linii.
Np. funkcja zwraca wiele wartości:
<table>
$SQL{select * from PRACOWNK}
</table>
Funkcja zwraca jedną wartość:
$SQL{select [Nazwisko] from PRACOWNK where [X_I]=12}
W zapytaniu SQL można używać tych samych wyrażeń jak w obiektach użytkownika i w zestawieniach SQL, a w szczególności:
▪odwoływać się do tabel aplikacji i ich pól (wyrażenie w nawiasach klamrowych np.{PRACOWNICY.X_I})
▪odwoływać się do zmiennych specjalnych (wyrażenie w nawiasach ostrych np.<USERIDE>)
▪używać kontrolek {X/nazwa_kontrolki}, co spowoduje, że przed zrobieniem dokumentu program zapyta o wprowadzenie danych do zdefiniowanych kontrolek - patrz rozdział Moduł raportów SQL. Należy przy tym w nagłówku makiety (pierwsze 21 linii) zmodyfikować linię sterującą inne #0 na inne #2
Podczas pisania zapytania SQL w ramach tej funkcji, można dwuklikiem myszy wywołać okno wygodnego edytora zapytań SQL
Tworzenie dokumentu wielostronicowego:
1. Należy w nagłówku makiety (pierwsze 21 linii) zmodyfikować linię sterującą liczba stron #... (wpisać ich liczbą po znaku #)
2. Na początku każdej następnej strony (za wyjątkiem pierwszej) wpisać klauzulę <!-- NOWA STRONA -->
Użycie kontrolek w funkcji $SQL:
Należy w nagłówku makiety (pierwsze 21 linii) zmodyfikować linię sterującą inne #0 na inne #2
Zmodyfikowaną makietę zapisujemy klikając w przycisk
.
Makiety można używać również w dokumentach seryjnych. Pozwala to na seryjne wydrukowanie dowolnych dokumentów własnych zdefiniownych jako własna makieta dostępna w oknie Pracownik lub Aktualne zatrudnienie (nie oznacza to jednak, że jak zostanie udostępniony w oknie Pracownicy wydruk np. umowy zlecenia to będzie wykazany poprawnie, ponieważ nawet drukując z okna pracownika nie wiadomo, którą umowę zlecenia wydrukować).
Jedyną metodą uzyskania konkretnych danych z tabeli która jest detailem do pracownika albo Aktualnego Zatrudnienia 1-n jest zapytanie sql w makiecie. Wtedy są dostępne zmienne <SERYJNE.OD> i <SERYJNE.DO>.
<!-- Konfiguracja wydruku (UWAGA: w razie modyfikacji zachować tą samą składnię i liczbę linii) nazwa dokumentu #UZ próba opis #niestandardowa lewy_margines #15 prawy_margines #15 górny_margines #10 dolny_margines #10 orientacja #0 styl czcionki #Times New Roman rozmiar czcionki#11 jasny #1 normalny #2 ciemny #3 linia #0 bez szarości #Nie w jakich oknach #;F;P;L;UZ; menu drukowania #Tak nagłówek/stopka #Tak inne #0 liczba stron #0 --> <HTML> <HEAD> <META HTTP-EQUIV="content-type" CONTENT="text/html; charset=windows-1250"> <TITLE>#HTMLTitle#</TITLE> </HEAD> <BODY> <!-- TU MOŻNA ZACZĄĆ WŁAŚCIWĄ TREŚĆ DOKUMENTU -->
#P_Nazwisko_i_imię# <br> #A_Z_Miejscowość# <br> $SQL {select top 1 [Data_rozpoczecia_pracy] from UMZLEC where [Data_rozpoczecia_pracy]>=<SERYJNE.OD> and [Data_rozpoczecia_pracy]<=<SERYJNE.DO> and [X_IHistoria]={AKTUALNE ZATRUDNIENIE.X_I}} <br> $SQL {select top 1 [Tresc] from UMZLEC where [Data_rozpoczecia_pracy]>=<SERYJNE.OD> and [Data_rozpoczecia_pracy]<=<SERYJNE.DO> and [X_IHistoria]={AKTUALNE ZATRUDNIENIE.X_I}}
<!-- TU NALEŻY ZAKOŃCZYĆ WŁAŚCIWĄ TREŚĆ DOKUMENTU --> </BODY> </HTML>
#P_Nazwisko_i_imię# - można ponieważ stoi się na konkretnym pracowniku #A_Z_Miejscowość# - można ponieważ adres jest detailem 1-1 do pracownika Do umowy zlecenia już nie można #UZ dowolna treść# bo tych umów może być wiele. Należy użyć klauzulę $SQL, która zapytuje bazę o konkretne dane i dopiero tutaj można zrobić filtr na daty posługując się <SERYJNE.OD> <SERYJNE,DO>. W tym miejscu program zwróci z umowy zlecenia pola data_rozpoczenia_pracy oraz treść. Dodatkowo aby odfiltrować tylko umowy zlecenia z zatrudnienia bieżącego pracownika należy jeszcze wpisać and [X_IHistoria]={AKTUALNE ZATRUDNIENIE.X_I}. To Ide zatrudnienia wyjęte z tabeli aplikacji, na której w danym momencie stoimy. |
Nowy styl tworzenia makiet
Makiety dokumentów można tworzyć za pomocą pól z tabel aplikacji wg wzoru {TABELA.POLE}, zamiast tradycyjnych tagów (np. #P_Nazwisko#).
Dla przykładu {PRACOWNICY.Nazwisko} zwróci nam wartość, która znajduje się w bazie danych w tabeli PRACOWNK w polu Nazwisko.
Nowy styl umożliwia tworzenie:
•pętli - która przejdzie przez wszystkie rekordy w tabeli:
{TABELA.^BEGINLOOP} – początek pętli
{TABELA.POLE }
{TABELA.^ENDLOOP} – koniec pętli
Np. Aby wyświetlić nazwiska wszystkich pracowników, z których każde będzie zaczynało się od nowej linii należy utworzyć pętle:
{PRACOWNICY.^BEGINLOOP}
<p>{PRACOWNICY.NAZWISKO}</p>
{PRACOWNICY.^ENDLOOP}
•warunków - które wykonają zadane czynności jeżeli warunek zostanie spełniony
| {^IF}{TABELA.POLE} = 0 Polecenie (zostanie wywołane gdy warunek zostanie spełniony) |
| {^ELSE} Polecenie (zostanie wykonane gdy warunek nie zostanie spełniony) |
| {^ENDIF} |
Np. Aby na wydruku wyświetlić Pan / Pani w zależności od płci pracownika, należy utworzyć polecenie warunkowe:
{^IF}{DANE PERSONALNE.PLEC}=1
Pan {PRACOWNICY.NAZWISKO} {PRACOWNICY.IMIE}
{^ELSE}
Pani {PRACOWNICY.NAZWISKO} {PRACOWNICY.IMIE}
{^ENDIF}
•obliczeń wyrażeń
{^COUNT}({TABELA.POLE}+{TABELA.POLE}-{TABELA.POLE})
Np. Aby wylistować składniki umowy o pracę oraz wyliczyć ich sumę należy utworzyć następującą formułę:
<p>{UMOWY O PRACĘ.X_01Nazwa}: {UMOWY O PRACĘ.X_01Wyliczony} zł</p>
<p>{UMOWY O PRACĘ.X_02Nazwa}: {UMOWY O PRACĘ.X_02Wyliczony} zł</p>
<p>{UMOWY O PRACĘ.X_03Nazwa}: {UMOWY O PRACĘ.X_03Wyliczony} zł</p>
<p>Kwota brutto:
{^COUNT}({UMOWY O PRACĘ.X_01Wyliczony}+{UMOWY O PRACĘ.X_02Wyliczony}+{UMOWY O PRACĘ.X_03Wyliczony})
zł</p>
•zapytania SQL – umożliwia wykonanie dowolnego zapytania SQL
{^SQL} SELECT [POLE] FROM [TABELA] WHERE [WARUNEK]
Funkcja {^SQL} zwraca pojedynczą wartość, nie ma możliwości pobrania za jej pomocą zestawu danych
•suma pól tabeli - która obliczy sumę wszystki wpisów z określonego pola w tabeli
{TABELA.^SUM.POLE}
•słowna interpretacja kwoty
{^WORD}1000 - na makiecie zostanie wyświetlony jako jeden tysiąc złotych
•filtrowanie tabeli (z pętlami) - klauzule filtrujące, któe rozpoznają zmienne <SERYJNE.OD> i <SERYJNE.DO>
{TABELA.^SETFILTER}
{TABELA.^RESTOREFILTER}
Przykład
{UMOWY ZLECENIA.^SETFILTER( [Data_rozpoczecia_pracy]>=<SERYJNE.OD> and [Data_rozpoczecia_pracy]<=<SERYJNE.DO>) }
<--- tutaj można używać do woli odwolania do pol zafiltrowanej tabeli <br> {UMOWY ZLECENIA.#Data_zawarcia_umowy} <br> {UMOWY ZLECENIA.#Data_rozpoczecia_pracy}
{UMOWY ZLECENIA.^RESTOREFILTER}
należy tutaj użyć odwołań do pól i tabel aplikacji (tak jak w wyzwalaczach) np. {UMOWY ZLECENIA.#Data_zawarcia_umowy} oznacza pole Data zawarcia umowy z tabeli UMOWY ZLECENIA; symbol # to format tekstowy Najważniejsze są klauzule filtrujące tabele ^SETFILTER, które rozpoznają zmienne <SERYJNE.OD><SERYJNE.DO> Należy pamiętać o ^RESTOREFILTER która przywraca poprzedni filtr tabeli. Przykład takiej makiety z polami tabel aplikacji jest w danych przykładowych - 'Karta stanowiskowa' |
Pętle i warunki mogą być zagnieżdżane dowolnie.