System Modus dysponuje narzędziem do edycji wydruków, nie ma z góry narzuconego wyglądu dokumentów. W łatwy sposób można zbudować własny szablon dokumentów, raportów, etykiet. Istnieje możliwość samodzielnego zadecydowania, jakie dane ma zawierać każdy dokument, raport i dostosować go do własnych potrzeb.
W programie Modus za pomocą edytora szablonów można tworzyć nowe szablony wydruków dokumentów. Szablony podzielone są na systemowe, (których nie da się edytować ani usunąć) oraz użytkownika (w pełni edytowane).
Szablon wydruku tworzy się na podstawie już istniejącego szablonu. Wybieramy dokument np. ZO lub PZ, klikamy ikonę „drukuj dokument” otworzy się okno podglądu wydruku tego dokumentu.
Po lewej stronie menu pokaże się lista SZABLONY. Zaznacz jeden z istniejących szablonów, wybierz „Zapisz szablon jako” i wpisać nazwę nowego szablonu (kod) oraz zatwierdzić.
Tworzenie szablonu wydruku
Teraz nowy szablon można edytować, zaznacz nowo utworzony szablon na liście i kliknij ikonę „Edytuj szablon”. Otworzy się okno edytora szablonów wydruku FastReport. Zamykając FastReporta pojawi się podgląd zmian, jakie wprowadziliśmy. Żeby zapisać należy rozwinąć przycisk Szablon i wybrać „Zapisz szablon”. Program też przy zamykaniu podglądu wydruku lub zmianie szablonu na inny będzie nas pytał czy zapisać szablon.
Zmiana ustawień szablonu dostępne jest za pośrednictwem „Plik | Ustawienia strony…” w menu, lub dwukrotne kliknięcie na stronie w puste miejsce.
W oknie ustawień, można wybrać rozmiar i wyrównanie papieru, jak również ustalić marginesy oraz źródło papieru.
Wszystkie informacje, które znajdują się na szablonie wydruku to obiekty.
Obiekt typu dane – zmienna z drzewa danych
Obiekt ten można przeciągnąć za pomocą myszki z drzewa danych.
Obiekt typu tekst – wpisany tekst
Po wybraniu z paska narzędzi obiektu przycisku i wskazania miejsca na szablonie można wstawić dowolny tekst.
Obiekt typu obraz – obraz
Obraz niewielkich rozmiarów (ok.20 KB) umieścimy wybierając z paska narzędzi obiektu i wskazując miejsce. Następnie trzeba wczytać plik i zatwierdzić zielonym OK. Obraz można powiększyć, zmniejszyć, rozciągać za pomocą czarnych punktów w rogach obrazu.
Aby dodać większy obraz należy postępować tak samo tylko nie wczytywać pliku, a zatwierdzić pusty obiekt, następnie wskazać go myszką i w oknie inspektora → Szczegóły w polu FileLink wpisać ścieżkę lokalizacji pliku na tym komputerze. Na innych stanowiskach komputerowych nie będzie widoczny w ten sposób dodany obraz, chyba, że u nich też w takiej samej lokalizacji wkleimy obraz.
Obiekt typu kod kreskowy – kod kreskowy
W szablonie wydruku możesz dodać wiele obiektów z kodami kreskowymi, odpowiadającymi za dowolne pole danych, dostępne w danym szablonie wydruku. Aby dodać taki obiekt:
Edytowanie istniejących kodów kreskowych różni się nieco od powyższej instrukcji. Aby zmienić wyrażenie przedstawione na kodzie kreskowym należy:
Wyrażenie można sformatować poprzez:
[specyfikacja.„dokument_obcy_data_wystawienia” #dd.mm.yyyy]Wstawianie wstęgi- pozwala na stworzenie projektu strony, na obszarze, który ma określony stosownie do jego rodzaju.
Z drzewa danych z zakładki „Dane” można przeciągać dany obiekt na nasz szablon. Klikając na obiekt będzie widoczna strzałka w dół (jak w otwarciu listy). Za jej pomocą można szybko zmienić obiekt na inny.
Klikając dwa razy otworzy się okno edycji, w którym można dodać tekst, jaki ma być wyświetlany przed zmienną. Np. tekst nazwa.
Bandy – wstęgi
Na wstęgach umieszczane są poszczególne obiekty z drzewa danych.
W celu dodania wstęgi:
Dodanie nowej wstęgi
Określenie gałęzi z którą wstęga ma być powiązana
Umieszczenie obiektu na odpowiedniej dla niego wstędze

Funkcje wykonywane na ciągach znaków (String):
nr zlecenia zastosowany w przykładach: ZPR 01297/2017
[Length(<zlecenia_produkcyjne.”zlecenie_produkcyjne_numer„>)] ⇒ „14”[Copy(<zlecenia_produkcyjne.”zlecenie_produkcyjne_numer„>, 2, 9)] ⇒ ”PR 01297/„[Pos(”/„,<zlecenia_produkcyjne.”zlecenie_produkcyjne_numer„>)] ⇒ ”10„Znak ^ oraz * stanowią separatory, które posłużą do wyświetlenia wybranej części ciągu.
Łączenie funkcji (przykład)
Rozwiązanie
W celu wyświetlenia określonego fragmentu z wybranego ciągu należy skorzystać z trzech wyżej wymienionych funkcji:
Length(), Copy(), Pos()
1.) W celu wyświetlenia fragmentu ciągu z pola Uwagi do produkcji należy zastosować funkcję
[Copy(<obiekt>, od znaku, liczba znaków)] gdzie:
obiekt - pole zawierające szukany fragment ciągu od znaku - pozycja znaku od którego ma zostać wyświetlony subciąg (nieznana, do wyliczenia) jak wiele znaków ma zostać wyświetlone (nieznana, do wyliczenia)
2.) W celu wyświetlenia fragmentu ciągu zaczynając od wybranego separatora należy wyliczyć jego pozycję. W podanym przykładzie wyliczana jest pozycja znaku ^. W tym celu należy zastosować poniższą funkcje :
od znaku = [Pos("^",<produkty."uwagi_do_produkcji">)]
wyznaczona wartość to: od znaku = 7
3.) W celu wyświetlenia fragmentu ciągu należy określić liczbę znaków które mają zostać wyświetlone. W podanym przykładzie nie jest to stała wartość tylko liczba znaków od separatora ^ do separatora *. W tym celu należy:
wyznaczyć długość ciągu do znaku * (z pominięciem znaków separujących subciągi)
dł_ciągu_do_* = Length(<//ciąg do separatora *//>)
ciąg do separatora * = Copy(<produkty."uwagi_do_produkcji">, //pierwszy znak//, //pozycja separatora *//)
pozycja separatora * = Pos("*",<produkty."uwagi_do_produkcji">)
ciąg do separatora * = Copy(<produkty."uwagi_do_produkcji">, 1, Pos("*",<produkty."uwagi_do_produkcji">)))
dł_ciągu_do_* = [Length(Copy(<produkty."uwagi_do_produkcji">, 1, Pos("*",<produkty."uwagi_do_produkcji">)))-2]
wyznaczona wartość to: dł_ciągu_do_* = 11
wyznaczyć długość ciągu do znaku ^ (z pominięciem znaków separujących subciągi)
dł_ciągu_do_^ = Length(<//ciąg do separatora ^//>)
ciąg do separatora ^ = Copy(<produkty."uwagi_do_produkcji">, //pierwszy znak//, //pozycja separatora ^//)
pozycja separatora ^ = Pos("^",<produkty."uwagi_do_produkcji">)
ciąg do separatora ^ = Copy(<produkty."uwagi_do_produkcji">, 1, Pos("^",<produkty."uwagi_do_produkcji">)))
dł_ciągu_do_^ = [Length(Copy(<produkty."uwagi_do_produkcji">, 1, Pos("^",<produkty."uwagi_do_produkcji">)))-1]
wyznaczona wartość to: dł_ciągu_do_* = 6
odjąć dwie powyższe wartości
liczba znaków = (dł_ciągu_do_*) - (dł_ciągu_do_^)
liczba znaków = [(Length(Copy(<produkty."uwagi_do_produkcji">, 1, Pos("*",<produkty."uwagi_do_produkcji">)))-2)- (Length(Copy(<produkty."uwagi_do_produkcji">, 1, Pos("^",<produkty."uwagi_do_produkcji">)))-1)]**
liczba znaków = 11-6
liczba znaków = 5
4.) W celu wyświetlenia ciągu znaków pomiędzy znakami ^ i * należy podstawić wyznaczone wartości do funkcji głównej:
subciąg = [Copy(<//obiekt//>, //od znaku//, //długość ciągu//)]** gdzie:
obiekt = <produkty."uwagi_do_produkcji">
od znaku = Pos(„^”,<produkty.”uwagi_do_produkcji”>)+1
długość ciągu= (Length(Copy(<produkty."uwagi_do_produkcji">, 1, Pos("*",<produkty."uwagi_do_produkcji">)))-2)- (Length(Copy(<produkty."uwagi_do_produkcji">, 1, Pos("^",<produkty."uwagi_do_produkcji">)))-1)
Gotowe rozwiazanie:
[Copy(<produkty."uwagi_do_produkcji">, Pos("^",<produkty."uwagi_do_produkcji">)+1,(Length(Copy(<produkty."uwagi_do_produkcji">, 1, Pos("*",<produkty."uwagi_do_produkcji">)))-2)-(Length(Copy(<produkty."uwagi_do_produkcji">, 1, Pos("^",<produkty."uwagi_do_produkcji">)))-1))]
W konfiguracji globalnej w zakładce System/Drukowanie wprowadzono możliwość wczytania do bazy logo firmy, które będzie dostępne na wszystkich udostępnionych do edycji wydrukach dokumentów. Dostępny jest tam również podgląd wczytanego logo, jednak w tej wersji tylko dla obrazków w formacie .bmp.
Aby wstawić logo na wydruk, należy w edytorze wydruków położyć na szablonie wydruku obiekt typu ‘Obraz’, a gdy pojawi się okno dialogowe ‘Obraz’ - zamknąć je bez wczytywania obrazka. Następnie należy ustawić właściwości nowego obiektu według poniższych wskazówek:
wielkość obrazka zostanie dostosowana do wielkości obiektu na szablonie z zachowaniem proporcji; aby pokazać obrazek w skali 1:1 należy ustawić właściwość AutoSize na wartość ‘true’.
Logo - wydruk
Na szablonie wydruku Karty produktu i na etykiecie nr seryjny (Produkcja/Planowanie) istnieje możliwość dodania zdjęcia produktu, które uprzednio zostało dodane w kartotece produktu (Magazyn → Asortyment/ Zakładka: Zdjęcia).
Aby wstawić zdjęcie na wydruk, należy:
wielkość obrazka zostanie dostosowana do wielkości obiektu na szablonie z zachowaniem proporcji; aby pokazać obrazek w skali 1:1 należy ustawić właściwość AutoSize na wartość ‘true’.
Zdjęcie produktu - wydruk
W systemie Modus wartości na dokumentach zaokrąglane są do dwóch miejsc po przecinku. Na szablonie wydruku można jednak zmienić liczbę drukowanych miejsc po przecinku. W tym celu należy:
Edycja szablonu wydruku
Zmiana liczby miejsc po przecinku
Szablon po zmianach
Ponieważ formatowanie można definiować również z poziomu zakładki Text może się zdarzyć że pomimo, iż w polu Format string znajduje się %2.2n to zaokrąglenie jest inne niż dwa miejsca po przecinku. W takim wypadku
[dokument_specyfikacja.”ilosc„ #n%2,4n] na [dokument_specyfikacja.”ilosc„ #n%2,Xn],Na etykiecie asortymentu domyślnie kodowany jest kod kreskowy asortymentu, można to jednak zmienić:
W systemie Modus możliwe jest wykonywanie operacji matematycznych na elementach raportu. W celu wykonania np. mnożenia:
[<dokument_specyfikacja."produkt_masa_jednostkowa_netto">*<partie_specyfikacja."ilosc">]
Na szablonie wydruku istnieje możliwość sumowania wartości z wybranych kolumn. W celu dodania sumy wybranej kolumny:
[SUM(<dokument_specyfikacja."produkt_ilosc_opakowan">,specyfikacja)]
System Modus umożliwia określenie kolumny, według której dane znajdujące się wydruku mają być sortowane. Możliwe jest również określenie kierunku sortowania. W celu zmiany sortowania:
Wydruk przed zmianą sortowania
Zmiana sortowania
Wydruk po zmianie sortowania
System Modus umożliwia stosowanie różnego rodzaju funkcji. Jedną z nich jest funkcja jeżeli - IIF.
I przykład zastosowania:
Na zamówieniu do dostawcy określono termin realizacji zamówienia, a dodatkowo dla kilku zamawianych asortymentów określono inne terminy realizacji. W związku z możliwością określenia dwóch terminów realizacji, na szablonie dostępne są również dwa terminy realizacji:
[dokument_specyfikacja.”planowany_termin_dostawy„] - termin realizacji konkretnej pozycji zamówienia[dokument.”planowany_termin_dostawy„] - ogólny termin realizacji zamówienia
Zastosowanie funkcji IIF pozwala uniknąć konieczności umieszczania obu kolumn na szablonie wydruku. Umieszczenie kolumny z następującą funkcją:
[IIF(<dokument_specyfikacja."planowany_termin_dostawy">==0, <dokument."planowany_termin_dostawy">, <dokument_specyfikacja."planowany_termin_dostawy">)]
spowoduje, że jeśli dla pozycji dokumentu określano indywidualny termin realizacji to zostanie on wyświetlony, a w przeciwnym wypadku wyświetlony zostanie termin realizacji zamówienia.
Wydruk z zastosowaniem funkcji IIF
II przykład zastosowania:
Na poglądzie wydruku dokumentu produkt kompletowany nie posiada receptury. Przedstawiona poniżej funkcja:
kod receptury jest pustekod receptury jest puste, wyświetlany jest w tym polu kod asortymentukod receptury nie jest puste, pozostaje jest w tym polu kod receptury[IIF(<partie_sprzedaz."receptura_kod">=="",<partie_sprzedaz."asortyment_kod">,<partie_sprzedaz."receptura_kod">)]
W przypadku wydruków zawierających pozycje zagregowane sortowanie należy zdefiniować dla dwóch gałęzi. Sortowanie na drugiej gałęzi odbywa się w ramach drzewa danych partie_specyfikacja. Dla poprawnego działania szablonu agregacja musi odbywać się w obrębie elementów drzewa partie specyfikacja (każdy GroupHeader musi być ustawiony na partie_specyfikacja).
W celu konfiguracji szablonu wydruku:
Należy wprowadzić pola po których ma się odbywać sortowanie. Muszą to być te same pola, które zdefiniowano dla agregacji (w punkcie 4) i należy wprowadzić je w tej samej kolejności [Ekran: 2]. Aby uzupełnić pola:
Ekran 1: Konfiguracja nagłówka GroupHeader
Pozycje na dokumencie CMR są grupowane, z tego powodu w celu zmiany wagi brutto na netto nie wystarczy wymiana elementu na szablonie wydruku. W celu edycji szablonu dokumentu CMR i zmiany wagi brutto na netto:
Ekran 1: Edycja szablonu wydruku dokumentu CMR
Ekran 2: Edycja kodu szablonu
Szablony wydruków umożliwiają generowanie wydruków zawierających kody QR. Kod tego rodzaju może zawierać znacznie więcej danych od standardowych kodów kreskowych.
FloatToStr(<specyfikacja.”partia_ilosc_wydana„>)+
” {„+<specyfikacja.”asortyment_kod„>
Przykładowe zastosowanie kodów QR:
Kontrahent dysponuje systemem i narzędziami umożliwiającymi odczyt kodu QR z etykiety produktu (etykieta pozycji dokumentu WZ), w którym oczekuje następujących informacji:
= 150 - pole z bazy danych (specyfikacja.”partia_ilosc_wydana„) = szt - pole z bazy danych (specyfikacja.”jm_bazowa„) = RHO Software - tekst= Modus ERP - pole z bazy danych (specyfikacja.”asortyment_kod„) = 610 - pole z bazy danych (specyfikacja.”partia_numer„) Powyższe dane muszą być odczytywane zgodnie z następującym formatem:
150 {szt {RHO Software {Modus ERP {610
W celu dodania takiego kodu kreskowego na szablonie wydruku należy:
Wyrażenie dla kodu QR
W celu przeskalowania kodu QR należy zastosować parametr Zoom:
Aby ukryć usługi transportowe na szablonie wydruku CMR, należy:
<specyfikacja."produkt_jest_usluga">==0
Szablon wydruku listu CMR przed zmianami
Edycja szablonu wydruku
Szablon wydruku listu CMR po zmianach
Przykład: Ukrycie surowców w tabeli zużycia na Karcie produktu
Jeśli chcemy, aby na wydruku karty produktu nie pojawiało się zużycie niektórych surowców, należy:
(<zuzycie_surowcow."asortyment_nazwa">=="Tkanina czarna")||(<zuzycie_surowcow."asortyment_nazwa">=="Guzik czarny")
Wydruk przed filtrowaniem
Edycja wartości filtru
Szablon wydruku po zmianach
C+Script
Dodając nową wstęgę danych do szablonu wydruku, domyślnie wyłączona jest opcja „Stretched”. Jej zadaniem jest poszerzenie naszego wydruku jeśli w którejś komórce znajduje się za duża ilość danych. W przypadku którym nasz wydruk nałożył na siebie jakieś dane, sprawdź czy masz włączoną opcję „Stretched”.
Dostosowanie wysokości wierszy
Zdarza się że na wydruku niezbędne jest zamieszczenie jakiejś dodatkowej informacji. Zastosowanie funkcji Inputbox sprawia że, podczas generowania wydruku pojawi się okno służące do wprowadzania danych, a następnie wpisana informacja pojawi się na wydruku:
W celu zastosowania funkcji należy:
1. Na szablonie dodać nowe pole tekstowe
2. Sprawdzić nazwę pola np Memo3
4. W zakładce Code wprowadzić np:
Memo3.text=InputBox("Etykieta","Data...",<Date>); \\
(w oknie służącym do wprowadzania danych pojawi się bieżąca data, którą można zmienić)\\
\\
Memo3.text=InputBox("Etykieta","Data...",""); \\
(okno służące do wprowadzania danych będzie puste, wpisana wartości wyświetli się na wydruku)\\
Wprowadzanie danych 1
Wprowadzanie danych 2
Wprowadzanie danych 3
W systemie Modus możliwe jest dodanie okna, służącego do wpisania liczby stron danego szablonu wydruku, jakie chcemy wyświetlić.
W tym celu należy:
1. Przejść do edycji szablonu wydruku
2. W zakładce Kod wprowadzić:
Przykład:
Page1.pagecount = strtoint(InputBox("Ile etykiet","Wpisz ilośc etykiet","1"));
3. Wyjść z szablonu i zapisać go
4. Przy próbie otworzenia szablonu pojawi się okno z miejscem służącym do wpisania ilości. System wyświetli taką ilość stron, jaka została tam wprowadzona
W celu oznaczenia jednego z szablonów jako domyślny:
Jeśli chcemy premiować pracowników na podstawie uzyskanej przez nich średniej wydajności należy:
[AVG(<analiza."wydajnosc">,MasterData1)]
[IIF(AVG(<analiza."wydajnosc">,masterdata1)<=65,"0zl", (IIF(AVG(<analiza."wydajnosc">,masterdata1)<=85,"300zl", (IIF(AVG(<analiza."wydajnosc">,masterdata1)<=86,"500zl","500zl")))))]
» Wróć do: PODRĘCZNIK UŻYTKOWNIKA