www.tres.pl - Baza wiedzy Trawers ERP - Spis treści
Funkcje TrExtLang. Formatowanie, Sterowanie, Przetwarzanie 1. Opis ogólny 2. Funkcje ţ...{} 2.1 Zestawienie funkcji 2.2 Opis funkcji 2.3 Reguły użycia funkcji 3. Bloki danych 4. Pytania i odpowiedzi 5. Tematy powiązane 1. Opis ogólny Funkcje TrExtLang Funkcje zgromadzone w tym module programu Trawers ERP realizują wiele zadań: służą do formatowania wydruków i opisów, pobierają dane ze zbiorów, zapisują dane do zbiorów, wykonuja obliczenia, sterują pracą innych modułów, np. SOA (API), Alerty, AutoRun. SOA Architektura wymiany danych Alerty i raportowanie AutoRun Procesy automatyczne Funkcje mogą wymieniać dane z innymi komponentami programu Trawers i tworzyć wielo-funkcyjne ciągi procesów. Patrz: Komponenty technologiczne. Złożenia Dlatego funkcje zebrane w tym module nazywamy: Funkcje TrExtLang Trawers Extension Language Tj. Rozbudowany moduł języka formatowania dokumentów i sterowania procesami. Pierwotnie funkcje tego modułu służyły do formatowania wydruków wg wzorców i wysyłania gotowych wydruków na urządzenia zewnętrzne: drukowanie, e-maile Drukowanie Obecnie zostały znaczenie rozbudowane i zintegrowane z innymi komponentami programu Trawers ERP: SOA (API), Alerty, AutoRun, TrEmail, IdProces, itd. Zadania funkcji TrExtLang * Formatowanie wydruków i opisów (teksty) * Formatowanie wzorców wydruku dokumentów, np. faktur * Formatowanie wzorców wydruków etykiet * Formatowanie raportów generowanych przez alerty * Formatowanie opisów w polach memo * Pobieranie danych z wielu źródeł, np. z kartotek KIM * Wysyłanie danych do urządzeń zewnętrznych * Przekazywanie danych do programów zewnętrznych * Inicjowanie procesów przetwarzania: SOA (API), Alert, RaportyXML Właściwości funkcji TrExtLang * Formatowanie tekstu * Wstawianie elementów graficznych: obrazki, kody kreskowe * Wstawianie innych wydruków i plików załączników * Przetwarzenie tabel * Prowadzenie dialogu z operatorem * Obliczenia arytmetyczne * Funkcje logiczne: porównania, pętle programowe * Czytanie i zapisywanie rekordów do zbiorów danych * Wykonywanie funkcji programu Trawers (IdProces) Funkcje TrExtLang formatujące stosuje się w graficznym systemie drukowania (param 0614 [ ]). NOTE: Tekstowy system drukowania zostanie wyłączony 31.12.2021 Przykłady wydruków Inne przykłady wydruków: Wzorce dokumentów Przykłady Wzorce etykiet Przykłady Opis tworzenia wzorców: Wzorce dokumentów i etykiet Funkcje używane do tworzenia wzorców mają prefix ţ... Służą do formatowania wydruków, dodawania elementów graficznych, np. logo firmy, wstawiania pól z dodatkowymi obliczeniami, np. podsumowań, także wykonywanych warunkowo, tworzenia serii wydruków (wydruki kaskadowe), itp. TrExtLang. Język pisania (formatowania) wydruków i opisów (dokumentów) Funkcje TrExtLang tworzą swoisty język pisania wydruków dokumentów. Pozwalają uzyskać elementy graficzne wydruku, np. ramki, podkreślenia, obrazki. Dają możliwość formatowania danych numerycznych, dat i godzin. Umożliwiają też kształtowanie treści wydruków, poprzez porównywanie wartości liczbowych, porównywanie dat, wykonywanie operacji arytmetycznych i logicznych. 2. Funkcje ţ...{} Funkcje ţ01..ţ32 Stosowane, aby zachować zgodność z tekstowym systemem drukowania Np. ţ12 Znak: 12 1B-32- Funkcje stosowane do definiowania właściwości wydruku w urządzeniach rodzaju: [Port] i [Plik PRN] (wydruki na drukarkach) Stosowane, aby zachować zgodność z drukarkami igłowymi. Funkcje wskazują np. nr czcionki w urządzeniu wyjściowym. Czcionka o danym numerze będzie użyta podczas wydruku od momentu napotkania funkcji na wzorcu Np. ţ24 Font 8 NOTE: Używać tylko w przypadku gdy wydruki są realizowane na drukarce igłowej. W pozostałych przypadkach lepiej użyć funkcji ţCzcionka{Arial;8} Wydruk będzie prawidłowy niezależnie od ustawień urządzenia wyjściowego 2.1 Funkcje TrExtLang. Zestawienie Grupy funkcji Formatowanie tekstu Data i godzina Zmienne Obliczenia Porównania Powtórzenia, pętle programowe Elementy graficzne Kody kreskowe Pobieranie danych z kartotek i dokumentów Rejestrowanie w bazie danych Dialog z operatorem Załączanie innych wydruków i plików Rozmieszczanie na stronie Funkcje składniowe Parametry urządzenia wyjściowego Wykonanie funkcji Trawers BaseLinker Funkcje księgowe Formatowanie tekstu tCzcionka - Ustala krój i rozmiar czcionki tKolor - Ustala kolor tekstu tPogrub - Wytłuszcza tekst tPochyl - Pochyla tekst tPodkreśl - Podkreśla tekst tZawiń - Zawija tekst tJustuj - Justuje tekst tDoLewej - Równa tekst do lewej tDoPrawej - Równa tekst do prawej tDoŚrodka - Równa tekst do środka tUsuńSpacjeZlewej - Usuwa spacje z lewej tUsuńSpacjeZprawej - Usuwa spacje z prawej tUsuńSpacje - Usuwa spacje z prawej i lewej tFragment - Zwraca fragment tekstu tUsuń - Usuwa znaki z tekstu tZastąp - Szuka i zamienia fragmenty tekstu tSłownie - Zwraca wartość wyrażoną słownie w języku: PL, EN i DE tCRLF - Rozdziela tekst znakami nowego wiersza [CRLF] tRegex - Zwraca fragment zgodny z wrażeniem regularnym tDoRegex - Przekształca tekst na wyrażenie regularne tDoXml - Konwertuje znaki &<>" do postaci stosowanej w XML tHttpGetParam - Zapisuje w tabeli ţ...[] parametry przekazane w formacie HTTP GET tCSV - Pobiera pola linii CSV do tabeli ţ...[] tIle - Zwraca ilość znaków w tekście albo ilość wystąpień ciągu tIleReg - Zwraca ilość ciągów zgodnych z wyrażeniem regularnym Data i godzina tFormatDaty - Formatuje datę tRóżnicaDat - Zwraca liczbę dni między datami tDzieńTygodnia - Zwraca nr kolejny dnia tygodnia dla podanej daty tDzieńMiesiąca - Zwraca nr dnia w miesiącu dla podanej daty tMiesiącRoku - Zwraca nr kolejny miesiąca w roku dla podanej daty tDzieńRoku - Zwraca nr kolejny dnia w roku dla podanej daty tTydzień - Zwraca nr tygodnia w roku dla podanej daty Zmienne tNazwa - Zapisuje/pobiera dane z rejestru tRejestrStron - Zapisuje/pobiera dane z rejestru stron tNazwa[] - Zapisuje dane do tabeli tIleWierszy - Zwraca ilość pozycji w tabeli ţ...[] tTabelaWrejestr - Przepisuje wiersze tabeli ţ...[] do rejestru ţ... Obliczenia tDodaj - Zwraca wynik dodawania tOdejmij - Zwraca wynik odejmowania tPomnóż - Zwraca wynik mnożenia tPodziel - Zwraca wynik dzielenia tOblicz - Zwraca wynik wyrażenia matematycznego lub logicznego tMax - Zwraca największą wartość tMin - Zwraca najmniejszą wartość tSuma - Dodaje wartość do wskazanego rejestru tInc - Dodaje 1 do wskazanego rejestru i drukuje tProcent - Oblicza procent tFormat - Formatuje liczbę Porównania tPorównajDaty - Porównuje dwie daty tPorównajTeksty - Porównuje teksty tPorównajLiczby - Porównuje liczby t=0 - Sprawdza czy wartość = 0 t>0 - Sprawdza czy wartość > 0 t<0 - Sprawdza czy wartość < 0 tJeżeliPusty - Sprawdza czy tekst jest wypełniony tJeżeliZawiera - Sprawdza czy tekst tekst zawiera wyrażenie Powtórzenia, pętle programowe tPowtórz - Powtarza tekst podaną ilość razy tFor - Realizuje pętlę programową: for i = X to Y step Z tWhile - Realizuje pętlę programową: while !empty(war()) ... tPowtórzDopóki - Realizuje pętlę programową: while war() ... tUntil - Realizuje pętlę programową: do ... until !empty(war()) tPowtórzJeżeli - Realizuje pętlę programową: do ... until war() tPrzerwijPowtarzanie - Zatrzymuje kolejne iteracje pętli programowej Elementy graficzne tObrazek - Wstawia obrazek tStylLinii - Ustala styl linii tLinia - Rysuje linię tProstokąt - Rysuje prostokąt Kody kreskowe tEan128 - Rysuje kod EAN 128 z podaną zawartością tCode39 - Rysuje kod Code 39 z podaną zawartością tEan13 - Rysuje kod EAN 13 z podaną zawartością tDataMatrix - Rysuje kod DataMatrix z podaną zawartością tQR - Rysuje kod QR z podaną zawartością Pobieranie danych z kartotek i dokumentów tRekord - Pobiera rekord z bazy danych do tabeli ţ...[] tIndeks1 - Pobiera wartości pierwszego klucza indeksowego do tabeli ţ...[] tIndeks1Reg - j.w.; Do wyszukania rekordów pobiera wyrażenie regularne tOdbiorca - Pobiera kartę kontrahenta do tabeli ţ...[] tDostawca tGmina - Pobiera pozycję z tabeli jednostek terytorialnych tPowiat tWojewództwo tNazwaKraju - Zwraca nazwę kraju dla podanego symbolu tKIM - Pobiera kartę z KIM do tabeli ţ...[] tKSOM - Pobiera kartę z KSOM do tabeli ţ...[] tJm - Pobiera jednostkę miary zapasu (magazynowania) tOpak - Pobiera jednostkę opakowania tGrupa - Pobiera kartę grupy towarowej tCenaSpr - Wstawia cenę z cennika sprzedaży w MI tCenaZak - Wstawia cenę z cennika zakupu w ZA tIlośćZapasu - Ilość asortymentu w magazynie tWartośćZapasu - Wartość asortymentu w magazynie tIlośćDostępna - Ilość asortymentu dostępna w magazynie tIlośćZarezerwowana - Ilość asortymentu planowana do wydania w przyszłej operacji rozchodu do sprzedaży lub wydania do produkcji. tTabelarycznie - Zapisuje do pliku wskazane zestawienie, tu: NZ_ZDM10 tWykonajFunkcje - Wykonuje funkcję o podanym IdProces Zapisywanie w bazie danych tKontakt - Zapisuje planowany kontakt w terminarzu RK tKontaktOK - Zapisuje wykonanie kontaktu (zdarzenia) z rezultatem: OK tEmailOznacz - Oznacza e-mail symbolem operatora tEmailPrzenieś - Przenosi e-mail do innego folderu tEmailUsuńZkosza - Trwale usuwa e-mail tSOA - Wykonuje funkcję SOA Dialog z operatorem tKomunikat - Wysyła wiadomość do operatora tWierszOkna - Przygotowuje wiersz okna dialogowego tOkno - Wyświetla okno dialogowe Załączanie innych wydruków i plików tZałączPlik - Pobiera wskazany plik jako załącznik tZałączniki - Załącza pliki załączników powiązane z dokumentem lub kartą tTreśćPliku - Wstawia treść z pliku w formacie tekstowym tInnyWydruk - Wywołuje wydruk wskazanego dokumentu tWstawWydruk - Wstawia inny wydruk w treść aktualnie drukowanego tZałączWydrukPDF - Zapisuje wydruk w pliku PDF i załącza do bieżącego wydruku tZałączWydrukTxt - Zapisuje wydruk w pliku TXT i załącza do bieżącego wydruku tZałączWydrukHtml - Zapisuje wydruk w pliku w HTML i załącza do bieżącego wydruku Rozmieszczanie na stronie tXY - Ustala położenie kolejnego elementu na stronie tCofnijWiersz - Cofa kursor o jeden wiersz ţY{-1em} tMarginesy - Ustawia marginesy tNowaStrona - Przechodzi do kolejnej strony tNieDzielNaStrony - Blokuje łamanie wydruku na strony tPrzerwij - Przerywa wydruk tJestMiejsceNaLinie - Sprawdza czy wystarczy miejsca umieścić N linii na stronie Funkcje składniowe t - Grupa - umożliwia użycie w parametrze znaków: " ";[]{} t# - Pomija tekst, nie będzie analizowany i drukowany tNazwa~ - Definicja funkcji t~ - Wiersz definicji funkcji tA02 - Opóźniona analiza składni tWyłączParser - Funkcje będą drukowane jak zwykły tekst tWłączParser - Wznawia działanie interpretera Parametry urządzenia wyjściowego [Plik] tNazwaPliku - Zmienia i zwraca nazwę pliku/wydruku tNazwijPlik - Zmienia nazwę pliku/wydruku [Polecenie] tPolecenieParametr - Parametr wywołania polecenia systemu operacyjnego [E-mail] tEmailTemat - Zmienia temat wysyłanego e-maila tEmailDo - Zmienia adres e-mail adresata tEmailEdycja - Zmienia parametr: Edytuj przed wysyłką tEmailSkrzynka - Zmienia parametr: Skrzynka nadawcza tEmailPracownik tEmailOdbiorca tEmailDostawca - Zwraca lub wiąże wysyłany e-mail z kontrahentem tEmailSystem - Zwraca symbol systemu z kartą kontrahenta NA,ZO,PL Wykonanie funkcji programu Trawers tRaport - Wykonuje RaportXML i eksportuje go do pliku tRaportCSV - Eksportuje RaportXML w formacie CSV do katalogu trtemp\ tAlert - Wykonuje alert z Tabeli Alertów tTTS - Odczytuje tekst głosem tSOA - Wykonuje funkcję SOA tZapiszWarchiwum - Zapisuje plik wydruku do e-archiwum tUruchom - Uruchamia program Aplikacja BaseLinker tBLAddCategories - Export grup indeksów do BaseLinker tBLAddProducts - Export indeksów KIM do BaseLinker tBLUpdateProductsQuantity - Aktualizacja stanów zapasów w BaseLinker tBLUpdateProductsPrices - Aktualizacja cen w BaseLinker tBLGetOrders - Import zamówień z BaseLinker Funkcje księgowe Zestawienia w KG Księga Główna tDekret - Formatuje wydruk pieczątki dekretacyjnej tomw - Obroty Wn okresu obliczeniowego tomm - Obroty Ma okresu obliczeniowego tsmw - Saldo Wn obrotów okresu obli. (może być < 0) tsmm - Saldo Ma obrotów okresu obli. (może być < 0) tzmw - Saldo Wn obrotów okresu obli. (= 0 gdy < 0) tzmm - Saldo Ma obrotów okresu obli. (= 0 gdy < 0) tonw - Obroty Wn narastająco tonm - Obroty Ma narastająco tsnw - Saldo Wn obrotów narastająco (może być < 0) tsnm - Saldo Ma obrotów narastająco (może być < 0) tznw - Saldo Wn obrotów narastająco (= 0 gdy < 0) tznm - Saldo Ma obrotów narastająco (= 0 gdy < 0) tbow - Bilans Otwarcia Wn roku obliczeniowego tbom - Bilans Otwarcia Ma roku obliczeniowego tsbw - Saldo Wn Bilansu Otwarcia (może być < 0) tsbm - Saldo Ma Bilansu Otwarcia (może być < 0) tzbw - Saldo Wn Bilansu Otwarcia (= 0 gdy < 0) tzbm - Saldo Ma Bilansu Otwarcia (= 0 gdy < 0) trwn - Obroty Wn roku poprzedniego trma - Obroty Ma roku poprzedniego tpwn - Obroty Wn roku (planowane) tpma - Obroty Ma roku (planowane) tw01 - Obroty Wn okresu 01 tm01 - Obroty Ma okresu 01 tw02 - Obroty Wn okresu 02 tm02 - Obroty Ma okresu 02 tw03 - Obroty Wn okresu 03 tm03 - Obroty Ma okresu 03 tw04 - Obroty Wn okresu 04 tm04 - Obroty Ma okresu 04 tw05 - Obroty Wn okresu 05 tm05 - Obroty Ma okresu 05 tw06 - Obroty Wn okresu 06 tm06 - Obroty Ma okresu 06 tw07 - Obroty Wn okresu 07 tm07 - Obroty Ma okresu 07 tw08 - Obroty Wn okresu 08 tm08 - Obroty Ma okresu 08 tw09 - Obroty Wn okresu 09 tm09 - Obroty Ma okresu 09 tw10 - Obroty Wn okresu 10 tm10 - Obroty Ma okresu 10 tw11 - Obroty Wn okresu 11 tm11 - Obroty Ma okresu 11 tw12 - Obroty Wn okresu 12 tm12 - Obroty Ma okresu 12 tw13 - Obroty Wn okresu 13 tm13 - Obroty Ma okresu 13 tozw - Obroty Wn zakresu okresów tozm - Obroty Ma zakresu okresów tszw - Saldo Wn zakresu okresów (może być < 0) tszm - Saldo Ma zakresu okresów (może być < 0) tsaw - Suma sald po str. Wn narast. od BO do mca tsam - Suma sald po str. Ma narast. od BO do mca tsww - Saldo sald str. Wn zakresu mc-y - wartość [SsKG(w,Wn)] tsow - Saldo sald str. Wn zakresu mc-y - strona [Wn]/[] [SsKG(o,Wn)] tswm - Saldo sald str. Ma zakresu mc-y - wartość [SsKG(w,Ma)] tsom - Saldo sald str. Ma zakresu mc-y - strona [Ma]/[] [SsKG(o,Ma)] tsws - Suma sald zakresu mc-y - wartość [SsKG(w,'')] tsos - Suma sald zakresu mc-y - strona [Wn]/[]/[Ma] [SsKG(o,'')] tdww - Saldo obrotów Wn zakresu mc-y - wartość [SzKG(w,Wn)] tdow - Saldo obrotów Wn zakresu mc-y - strona [Wn]/[] [SzKG(o,Wn)] tdwm - Saldo obrotów Ma zakresu mc-y - wartość [SzKG(w,Ma)] tdom - Saldo obrotów Ma zakresu mc-y - strona [Ma]/[] [SzKG(o,Ma)] tdws - Saldo obrotów zakresu mc-y - wartość [SzKG(w,'')] tdos - Saldo obrotów zakresu mc-y - strona [Wn]/[]/[Ma] [SzKG(o,'')] 2.2 Funkcje TrExtLang. Opis funkcji [***] Pogrubienie - tPogrub{ tekst } lista [***] Pogrubienie WŁ - tPogrubiaj lista [***] t33 lista [***] Pogrubienie WYŁ - tNiePogrubiaj lista [***] t34 lista [***] Pochylenie - tPochyl{ tekst } lista [***] Pochylenie WŁ - tPochylaj lista [***] t35 lista [***] Pochylenie WYŁ - tNiePochylaj lista [***] t36 lista [***] Podkreślenie - tPodkreśl{ tekst } lista [***] Pochylenie WŁ - tPodkreślaj lista [***] t37 lista [***] Pochylenie WYŁ - tNiePodkreślaj lista [***] t38 lista Przykłady: tPogrub{Razem: tRazemBrutto} tPogrubiaj |Indeks|Nazwa| tNiePogrubiaj tPodkreśl{tPogrub{Ogółem:}} Funkcje formatują wydruk. Np. powodują zmianę czcionki na pogrubioną (wytłuszczoną), pochyloną lub podkreśloną NOTE: Na wydrukach standardowych (których wygląd nie może być zmieniany), pogrubione są napisy w tytułach i nagłówkach zestawień. [***] Przerwanie wydruku - tPrzerwij lista [***] t41 lista Przykład: ţPorównaj{s-ACCKod-s;xx;;ţKomunikat{Zamówienie wymaga akceptacji} ţPrzerwij} Przerywa bieżący wydruk. W przypadku wydruku wstawianego ţWstawWydruk{}, ţInnyWydruk{} lub ţZałączWydruk{} przerywa tylko wydruk wstawiany. Wydruk, który wywołał bieżący wydruk będzie kontynuowany. Jeżeli bieżący wydruk wywołał inne wydruki ţInnyWydruk{} to zostaną anulowane. Przerwanie wydruku anuluje także zapis do e-archiwum ţZapiszWarchiwum{} Przerwanie wydruku umożliwia drukowanie tylko dokumentów spełniających określone kryteria. Przerwanie wydruku ma także zastosowanie w przypadku alertów. Pozwala np. zgłosić alert tylko gdy łączna suma zaległości kontrahentów przekracza określoną kwotę. [***] Czy wystarczy miejsca umieścić linie - tJestMiejsceNaLinie lista Parametry: * Ilość linii * wartość zwracana gdy wystarczy miejsca na linie (opcjonalny) * wartość zwracana gdy nie wystarczy miejsca aby umieścić linie (opcjonalny) Przykład: ţJestMiejsceNaLinie{2;ţCofnijWiersz;ţ{ţEnd}ţNowaStrona;ţCofnijWiersz} ţJestMiejsceNaLinie{5;Razem: ş-Ilosc wydana-ş;|||||} Program spradza czy wystarczy wystarczy miejsca między kursorem a marginesem dolnym strony [***] Wysuw strony WYŁ - tNieDzielNaStrony lista [***] t46 lista Program nie wysunie strony po wydrukowaniu dokumentu Funkcja umożliwia wydruk kilku dokumentów na jednej stronie Pozwala utworzyć zestawienie z zakresu dokumentów [***] Funkcje TrExtLang WŁ - tWłączParser lista [***] t47 lista [***] Funkcje TrExtLang WYŁ - tWyłączParser lista [***] t48 lista Wyłącza przetwarzanie funkcji Funkcje zostaną wydrukowane jak zwykły tekst Można zastosować do wydrukowania treści wzorca. Polecenie wyłączenia parsera będzie ostatnim przetworzonym i nie zostanie umieszczone na wydruku. Innym praktycznym zastosowaniem jest opóźnienie przetwarzania do momentu odczytania alertu. Np. alert sprawdza warunki i przygotowuje raport. W raporcie umieszczone są funkcje dialogu z operatorem - ţOkno{}. Parser wyłączany jest przed definicją dialogu aby funkcje zostały zapisane w raporcie. Odebranie komunikatu z alertem spowoduje przetworzenie funkcji zapisanych w raporcie, które przeprowadzą dialog z operatorem. Przykład: Wysyłka wezwań do zapłaty z potwierdzaniem przez operatora Alerty i raportowanie. Przykłady [***] Wstaw obrazek - t49{plik.bmp; [szerokość];[wysokość]} lista [***] tObrazek{plik.bmp; [szerokość];[wysokość]} lista [***] tWstawObraz{plik.bmp; [szerokość];[wysokość]} lista Przykłady: tObrazek{../adtres/logo.bmp; 30; 15} tObrazek{../adtres/tlo.png;;} tObrazek{file:///C:/katalog_z_grafiką/tUsuńSpacje{s--indeks--s}} tObrazek{https://www.tres.pl/themes/tres/assets/images/logo.png} tObrazek{ftp://login:hasło@adres.serwera/ścieżka/obraz.jpg} tObrazek{tStronaZeZdjęciamiProduktów ţUsuńSpacje{s--indeks--s}.jpg} Grafika z internetu Wstawienie obrazka (grafiki) znajdujących się w Internecie: ţWstawObraz{https://www.tres.pl/themes/tres/assets/images/logo.png} Działanie: Wstawia obrazek (element graficzny) Parametry: * ścieżka i nazwa do pliku z obrazkiem, rysunkiem, zdjęciem * szerokość obrazka w milimetrach na wydruku (opcjonalny) * wysokość obrazka w milimetrach na wydruku (opcjonalny) Jeżeli obrazek znajduje się na zewnętrznym serwerze to program pobierze go podczas każdego wydruku. W przypadku gdy drukowanych jest wiele grafik warto rozważyć zainstalowanie serwera pośredniczącego (proxy), który będzie buforował drukowane grafiki. [***] Położenie - t50{[pozycja X]; [pozycja Y]} lista [***] tXY{[pozycja X]; [pozycja Y]} lista [***] tX{[pozycja X]} lista [***] tY{[pozycja Y]} lista Przykłady: tXY{;-1em} - cofnie kursor o jeden wiersz tXY{20;25} tXY{15} tXY{;30.5} tXY{+100} tXY{-20.3;+30.5} tX{-20.3} tY{+30.5} tCofnijWiersz{} tCofnijWiersz tCofnijWiersz{3} tCofnijWiersze{3} Działanie: Przemieszcza kursor do wskazanej pozycji Parametry: * położenie na osi X w prawo (opcjonalny) * położenie na osi Y w dół (opcjonalny) [***] Czcionka - t51{[nazwa]; [rozmiar]} lista [***] tCzcionka{[nazwa]; [rozmiar]} lista [***] tRozmiarCzcionki{rozmiar} lista Przykład: tCzcionka{Arial; 15} tCzcionka{Times New Roman} tCzcionka{;5} tRozmiarCzcionki{5} Działanie: Zmienia krój i rozmiar czcionki Parametry: * nazwa czcionki (opcjonalny) * rozmiar w punktach typograficznych (opcjonalny) W systemie Windows podstawowe czcionki są zainstalowane. W systemie Linux, zależnie od dystrybucji, może powstać konieczność zainstalowania brakujących czcionek. Gdy brak wskazanych czcionek, to program wybierze automatycznie inne, najbardziej zbliżone. Może to spowodować, że wydruk wg wzorca będzie wyglądać inaczej niż planowano, np. napisy będą wychodzić poza pola danych lub poza marginesy. Trzeba zainstalować czcionki wskazane w funkcji tCzcionka{} [***] Kolor tekstu - t52{[kolor];[tło];[przezroczystość]} lista [***] tKolor{[kolor];[tło];[przezroczystość]} lista [***] tKolorTła{tło} lista [***] tPrzezroczystość{przezroczystość} lista Przykład: ţKolor{#FF0000} ţKolor{#0F0} ţKolor{blue} ţKolor{czarny} ţKolor{#777;#FFF;0.3} ţKolor{żółty;;0.5} ţKolorTła{szary} ţPrzezroczystość{0.5} = ţTransparentność{0.5} Działanie: Zmienia kolor tekstu Parametry: * kolor tekstu * kolor tła * przezroczystość od 0 (pełna) do 1 (brak) Rozpoznawane nazwy kolorów: aqua (błękitny), black (czarny), blue (niebieski), fuchsia (fuksja), gray (szary), green (zielony), lime, maroon, navy (granatowy), olive (oliwkowy), purple (purpurowy), red (czerwony), silver (srebrny), teal, white (biały), yellow (żółty) Parametr przezroczystość działa z urządzeniami wyjściowymi rodzaju: cups, plik PDF i email PDF Parametr przezroczystości (en: Transparency) pozwala wstawić na dokumencie cyfrowy znak wodny (en: Digital watermark). [***] Styl linii - t53{[styl]; [szerokość]; [kolor]} lista [***] tStylLinii{[styl]; [szerokość]; [kolor]} lista [***] tSzerokośćLinii{szerokość} lista [***] tGrubośćLinii{szerokość} lista [***] tKolorLinii{kolor} lista Przykład: ţStylLinii{solid; 0.1; blue} ţStylLinii{dashdash} ţStylLinii{brak} ţStylLinii{..} ţSzerokośćLinii{0.1} = ţGrubośćLinii{0.1} ţKolorLinii{niebieski} Działanie: Ustala styl, szerokość i kolor linii Parametry: * styl linii (opcjonalny) * szerokość linii w mm (opcjonalny) * kolor linii (opcjonalny) Rozpoznawane nazwy styli: none (brak), solid (ciągły)(-), dash (kreski)(--), dot (kropki)(..), dashdot (kreskakropka)(-.), dashdotdot (kreska2kropki)(-..) Parametry pominięte przyjmą wartości aktualnie ustawione. np. ţStylLinii{;1;} zmieni tylko szerokość. Styl i kolor zostaną bez zmian. [***] Linia - t54{[[start X];[start Y];]koniec X; koniec Y} lista [***] tLinia{[[start X];[start Y];]koniec X; koniec Y} lista [***] tWstawLinię{[[start X];[start Y];]koniec X; koniec Y} lista Przykład: ţLinia{10; 15; 20; 25} ţLinia{+50} Działanie: Rysuje linie Parametry: * współrzędna początku linii w osi X (opcjonalny) * współrzędna początku linii w osi Y (opcjonalny) * współrzędna końca linii w osi X * współrzędna końca linii w osi Y [***] Prostokąt - t55{[X1];[Y1];[X2];[Y2];[kolor]} lista [***] tProstokąt{[X1];[Y1];[X2];[Y2];[kolor]} lista [***] tWstawProstokąt{[X1];[Y1];[X2];[Y2];[kolor]} lista Przykłady: ţProstokąt{10; 15; 20; 25; red} ţProstokąt{+10;+15;+20;+25} Działanie: Rysuje prostokąt z ramką i wypełnia kolorem Parametry: * współrzędna lewej krawędzi prostokąta w osi X (opcjonalny) * współrzędna górnej krawędzi prostokąta w osi Y (opcjonalny) * współrzędna prawej krawędzi prostokąta w osi X (opcjonalny) * współrzędna dolnej krawędzi prostokąta w osi Y (opcjonalny) * kolor wypełnienia (opcjonalny) Ramkę rysuje linią o aktualnym stylu ustalonym przez --> ţStylLinii{} Aby narysować tylko obramowanie bez wypełnienia (przezroczyste) należy pominąć parametr kolor lub podać: none (brak) np. ţStylLinii{solid;0.2;black} <-- styl linii: czarna ciągła o gr. 0.2mm ţProstokąt{10;10;100;20;none} <-- czarna ramka o grubości 0.2mm (wnętrze przezroczyste) Przykład ramki z kolorowym nagłówkiem: TţProstokąt{+0.5em;-0.5em;+101em;+1em;Zielony}oţX{+100em}o Too T|| Too [***] nie wykorzystane t56 lista [***] Treść z [;] - t{tekst} lista [***] t57{tekst} lista Przykład: ţPorównaj{ţ{A;B;C;D};ţ{abcd;efgh};RÓWNE;RÓŻNE} ţPorównaj{şIndeks towaru ş;ţ{A000;0001};RÓWNE;RÓŻNE} tţ{Rej[A.1]} Działanie: Pozwala zastosować znak [;] w parametrze Pozwala użyć znaków " ";[]{} w nazwie rejestru i tabeli Parametry: * tekst - tekst zawierający znak [;] NOTE: Program każde pole znakowe wpisuje w znak ţ{} s--...--s = ţ{s--...--s} [***] Różnica dat - tRóżnicaDat{[data1];[data2|dni];[format]} lista [***] t58{[data1];[data2|dni];[format]} lista Przykłady: ţRóżnicaDat{2016-01-10;5;} zwróci: 2016.01.05 ţRóżnicaDat{2016-01-10;-5;} zwróci: 2016.01.15 ţRóżnicaDat{2016-01-10;2016-01-20;} zwróci: -10 ţRóżnicaDat{2016-01-10;2016-01-01;} zwróci: 9 ţRóżnicaDat{2019-01-10;2016-01-01;R} zwróci: 3 ţRóżnicaDat{şTer.plş;;999} dni ţRóżnicaDat{şRkonczş;şPkonczş;999} dni po terminie ţRóżnicaDat{şTer.plş;-2;RRRR.MM.DD} wykonać przelew ţRóżnicaDat{şData dş;-ş-Zş;RRRR.MM.DD} termin płatności ţPorównajDaty{ţRóżnicaDat{şTer.plş;7};;;Ponad tydzień po terminie !} ţ>D{ţRóżnicaDat{şTer.plş;7};;Ponad tydzień po terminie !} Działanie 1: Oblicza liczbę dni między datami: Dni = Data1-Data2 Działanie 2: Wyznacza datę odsuniętą o dni: Data = Data1-Dni Parametry: * data1 - domyślnie aktualna data * data2 - domyślnie aktualna data * dni - liczba dni przed data1 * format - format drukowanego wyniku np. 999, RRRR.MM.DD, DDD, TTT, RR Datami i wartościami mogą być pola, wyniki innych funkcji np. różnicy dat, daty wpisane na stałe. Jeżeli data1 będzie pusta ' . . ', program nic nie zwróci. Jeżeli w miejscu data2 będzie wpisana liczba dni, to program odejmie od data1 podaną liczbę dni. Zwróci datę wcześniejszą o liczbę dni. Jeżeli parametr dni będzie ujemny lub będzie to pole poprzedzone '-' to program obliczy datę późniejszą od data1 o podaną liczbę dni. Okres pomiędzy datami może być wyrażony w jednostkach innych niż dni, tak samo jak w ţFormatDaty{}. [***] Porównanie dat - tPorównajDaty{data1;data2;równe;[później];[wcześniej];[różne]} lista [***] t59{data1;data2;równe;[później];[wcześniej];[różne]} lista Przykłady: ţPorównajDaty{2016-01-10;2016-01-20;[ROWNE];[POZNIEJ];[WCZESNIEJ];[ROZNE]} zwróci: [WCZESNIEJ][ROZNE] ţPorównajDaty{2016-01-10;2016-01-01;[ROWNE];[POZNIEJ];[WCZESNIEJ];[ROZNE]} zwróci: [POZNIEJ][ROZNE] ţPorównajDaty{2016-01-10;2016-01-10;[ROWNE];[POZNIEJ];[WCZESNIEJ];[ROZNE]} zwróci: [ROWNE] ţPorównajDaty{şTer.plş;;;Przekroczony termin !} ţPorównajDaty{şRkonczş;şPkonczş;planowo;po terminie;przed terminem} Działanie: Porównuje daty Parametry: * data1 - domyślnie aktualna data * data2 - domyślnie aktualna data * równe - wartość zwracana gdy data1 = data2 * później - wartość zwracana gdy data1 jest późniejsza niż data2 * wcześniej- wartość zwracana gdy data1 jest wcześniejsza niż data2 * różne - wartość zwracana gdy data1 różni się od data2 Datami i wartościami mogą być pola, wyniki innych funkcji np. różnicy dat, daty wpisane na stałe. Jeżeli któraś z dat będzie pusta ' . . ', program nic nie zwróci. [***] Porównanie tekstów - t60{tekst1;tekst2;równe;[różne]} lista [***] tPorównajTeksty{tekst1;tekst2;równe[;różne]} lista [***] tPorównajTekst{tekst1;tekst2;równe[;różne]} lista [***] tPorównaj{tekst1;tekst2;równe[;różne]} lista [***] tJeżeliPusty{tekst;gdy pusty[;nie pusty]} lista [***] tJeżeliNiePusty{tekst;gdy nie pusty[;pusty]} lista [***] tJeżeliZawiera{tekst;co;gdy zawiera[;nie zawiera]} lista [***] tJeżeliNieZawiera{tekst;co;gdy nie zawiera[;zawiera]} lista Przykłady: ţJeżeliNiePusty{ş-nazwa u odb-ş;ş-nazwa u odb-ş;ş-nazwa towaru-ş} Zwraca nazwę towaru z cennika kontraktowego, gdy podana, jeżeli nie to z karty KIM ţPorównaj{şJmsş;Tszt;Each;şJmsş} Zamienia np. Tszt --> Each ţPorównaj{@SYMBOLW;PLN;1;2} Gdy symbol waluty to PLN wstaw 1, w przeciwnym przypadku wstaw 2 Działanie: Porównuje dwa teksty Porównanie tekstu: zwraca wskazany tekst, gdy oba teksty są równe Porównanie liczb: zwraca wskazany tekst, gdy liczby są równe lub inny tekst, gdy pierwsza liczba jest różna od drugiej. Zastosowanie: pokazanie czegoś na wydruku zależnie od czegoś innego, np. * zmień kolor na czerwony, gdy wartość jest ujemna * pokaż 0.000 do wydania, gdy wydano więcej niż zlecono * pokaż nazwę indeksu z cennika kontraktowego, gdy jest w nim nazwa albo z KIM, gdy nazwy nie ma w cenniku Parametry: * tekst 1 * tekst 2 * równe - wartość zwracana, gdy teksty są takie same * różne - wartość zwracana, gdy tekst 1 różni się od tekst 2 Porównanie pomija spacje przed i za tekstem oraz nie uwzględnia wielkości liter. Teksty porównywane są zgodnie z alfabetem [***] Porównanie liczb - tPorównajLiczby{liczba1;liczba2;równe;[większa];[mniejsza];[różne]} lista [***] t61{liczba1;liczba2;równe;[większa];[mniejsza];[różne]} lista Przykłady: t61{ş- Ilosc -ş;10;;duża ilość !} t61{10;ş- Ilosc -ş;;mała ilość !} ţPorównajLiczby{10;ş- Ilosc -ş;;;;różne} ţPorównajLiczby{ş-Ilosc wydana-ş;ş-Ilosc wyma-ş;ok;wydano więcej} ţ>L{ş- Ilosc -ş;10;duża ilość !} ţ<L{ş- Ilosc -ş;10;mała ilość !} ţ=0{ş- Ilosc -ş;nie podano ilości} ţ<0{ş- Ilosc -ş;ilość mniejsza od 0} ţ<=0{ş- Ilosc -ş;za mała ilość} ţ>0{ş- Ilosc -ş;ş- Ilosc -ş} ţ>=0{ş- Ilosc -ş;ş- Ilosc -ş} ţPorównajLiczby{10;ş- Ilosc -ş;;;;różne} ţPorównajLiczby{ş-Ilosc wydana-ş;ş-Ilosc wyma-ş;ok;wydano więcej} Działanie: Porównuje dwie liczby Parametry: * liczba1 * liczba2 * równe - wartość zwracana gdy liczba1 = liczba2 * większa - wartość zwracana gdy liczba1 > liczba2 * mniejsza- wartość zwracana gdy liczba1 < liczba2 * różne - wartość zwracana gdy liczba1 różni się od liczba2 Liczbami i wartościami mogą być pola, wyniki innych funkcji np. dodawania, liczby wpisane na stałe. [***] Tabela * tNazwa{nazwa[;[klucz][;[+|- kolejność];wartość]]} lista [***] t62[klucz;+|- kolejność]{wartość} lista Przykłady: ţPozycje[şIndeks towaru ş]{şIndeks towaru ş ş-- Ilosc ---ş} ţPozycje[;#ş-- Ilosc ---ş]{şIndeks towaru ş ş-- Ilosc ---ş} ţPozycje[]{şIndeks towaru ş} ţPozycje[] ţşcWaş={ţDodaj{ţşcWaş;şPozycja-netto wlş}} tţ{Razem waluty}[şcWaş]{ţşcWaş şcWaş} tţ{Razem waluty}[EUR ] tţ{Razem waluty}[PLN ] tţ{Razem waluty}[] Działanie: a) Zapisuje wartość w wierszu tabeli b) Drukuje zawartość tabeli wg ustalonego porządku Parametry: * nazwa - nazwa tabeli * [klucz] - unikalny symbol wiersza * [kolejność] - wyrażenie ustalające kolejność wydruku wierszy * [wartość] - zawartość wiersza W kolejnych wierszach tabeli można zapamiętać wartości. Następnie wydrukować we wskazanej kolejności. Objaśnienie parametrów: * nazwa Identyfikuje tabele. Można utworzyć kilka tabel z różnymi nazwami. * klucz Identyfikuje wiersze tabeli. Usuwa, nadpisuje i drukuje wiersz. Gdy klucz jest pusty, to program dodaje automatycznie kolejne wiersze. Takich wierszy nie można zmienić i usunąć, gdyż nie mają identyfikatora * kolejność Ustala kolejność ułożenia wierszy. Zawiera wyrażenie, które będzie sortowane alfabetycznie. Pierwszy znak wyrażenia może zawierać + lub - oznaczające odpowiednio kolejność rosnącą lub malejącą. Jeżeli wyrażenie zawiera pola danych z wartościami liczbowymi, to trzeba przed i za polem wstawić znak # aby program sortował to pole numerycznie. Można ustalać kolejność wg kilku pól danych jednocześnie. Trzeba podać je w parametrze jedno za drugim. Formaty użytych pól muszą być takie same we wszystkich wierszach. Gdy nie podany, to przyjmuje zawartość parametru: klucz * wartość To ciąg tekstu i pól danych, które będą zapisane w wierszu tabeli. Wartość może zawierać m.in. elementy ramek. Można jednocześnie wypełnić kilka kolumn tabelki narysowanej z użyciem ramki. Operacje: 1. Dopisywanie, zamiana wiersza Przykład: ţIndeksy[şIndeks towaru ş;#ş-- Ilosc ---ş]{şIndeks towaru ş ş-- Ilosc ---ş} To polecenie zapisze w tablicy o nazwie 'Indeksy' wiersz, którego kluczem będzie symbol indeksu. Wiersze będą ułożone w kolejności rosnącej zgodnie z ilością. Wiersz zawiera dwie kolumny. W pierwszej są indeksy, w drugiej ilości. Wiersze którym nadano klucz można usuwać i zmieniać ich zawartość. Jeżeli w tabeli jest już wiersz o podanym kluczu, to będzie zastąpiony nowym 2. Usunięcie wiersza Przykład 1 ţIndeksy[şIndeks towaru ş;] Z tabeli będzie usunięty wiersz z kluczem zgodnym z wartością pola danych şIndeks towaru ş Przykład 2 ţIndeksy[INDEKS-1 ;] Z tabeli będzie usunięty wiersz z kluczem = 'INDEKS-1 '. 3. Deklaracja tabeli Przykład: ţIndeksy[;] ţ62{Indeksy;;} Te zapisy tworzy pustą tabelę. Pozwalają uniknąć błędu !Brak tabeli! gdy tabela jest wypełniana warunkowo. Jest też konieczny gdy wiersze są odczytywane przez t62{nazwa;id} przed ich dopisaniem, np. sumowanie w wierszu tabeli. Jeżeli tabela już jest, to program nic nie zrobi. Np. T ţ62{Suma;;} P ţ62{Suma;şJSş;; ţ65{ţ62{Suma;şJSş};ş-- Ilosc ---ş;} şJSş} T ţ62{Suma} Podsumuje ilości wg jednostek miar w dokumencie Powyższy zapis można uprościć do: P ţSuma[şJSş]{ ţDodaj{tSuma[şJSş];ş-- Ilosc ---ş} şJSş} T ţSuma[] W tym przypadku deklaracja tabeli nie jest potrzebna. 4. Wydruk jednego wiersza Przykład: tIndeksy[INDEKS-1 ] Program zwróci wartość wiersza tabeli z kluczem = 'INDEKS-1 '. 5. Wydruk tabeli Przykład: ţIndeksy[] W kolejnych liniach będą wydrukowane wiersze tabeli w porządku ustalonym przez parametr: kolejność. W przykładzie: wg rosnącej ilości. Przykłady wykorzystania: * podsumowania np. suma ilości produktów, stawki VAT z wartościami z dokumentu * grupowanie np. lista magazynów, z których będzie wydany towar * zmiana kolejności np. wydruk pozycji wg terminów realizacji * wyszczególnienie np. w stopce faktury wyszczególnienie numerów zamówień, do których utworzono pozycje faktury. Patrz przykład w Pytania i odpowiedzi NOTE: Program przenosi tabelę o nazwie ţTR_MEM[] pomiędzy wydrukiem głównym i kaskadowym ţInnyWydruk, ţZałączWydruk oraz składanym ţWstawWydruk. Można ją wykorzystać do przekazywania wartości z wydruku głównego do wydruku wywoływanego i odwrotnie. Przykład: Zapamiętanie wartości: ţTR_MEM[wartość 1]{wartość do przekazania} ţTR_MEM[ilość]{s--ilosc--s} Odczytanie wartości: ţTR_MEM[wartość 1] ţTR_MEM[ilość] [***] Format daty/czasu - tFormatDaty{data;format} lista [***] tFormatujDatę{data;format} lista [***] t63{data;format} lista Przykłady: ţFormatDaty{şData wş;RRRR.MM.DD} ţFormatDaty{şData wş;DD-MM-RRRR} ţFormatDaty{şData wş;DD.MM.RRRR} ţFormatDaty{şData wş;RRRR-MM-DD} ţFormatDaty{şData wş;RRMMDD} ţFormatDaty{şData wş;RRRRMMDD} ţFormatDaty{şData wş;MM.DD.RR} ţFormatDaty{ş---Data i czas---ş;RRRR.MM.DD GG:MN:SS} ţFormatDaty{2011.10.20;RRRR} zwróci 2011 ţFormatDaty{2011.10.20;RR} zwróci 11 ţFormatDaty{2011.10.20;MM} zwróci 10 ţFormatDaty{2011.10.20;DD} zwróci 20 ţFormatDaty{12.31;DDd GGg} zwróci 12d 7g ţFormatDaty{tRóżnicaDat{şRkonczş;şPkonczş;};MMMmc DDdni po terminie} ţFormatDaty{tRóżnicaDat{ş---Data i czas---ş;;};minęło DDDD dni i MNNN.N minut} ţFormatDaty{tRóżnicaDat{;ş---Data i czas---ş;};za R lat i TT tygodni} ţRok{2030.01.15} -> 2030 ţMiesiąc{2030.01.15} -> 01 ţDzień{2030.01.15} -> 15 ţGodzina{2030.01.15 14:23} -> 14 ţMinuta{2030.01.15 14:23} -> 23 ţSekunda{2030.01.15 14:23:02} -> 02 Działanie: Zmienia format wydruku daty lub czasu Parametry: * data (pole) albo czas wyrażony w dniach * format daty Budowa formatu data: RRRR - rok RR - dwie ostatnie cyfry roku MM - miesiąc DD - dzień GG - godzina MN - minuta SS - sekunda .SSS - milisekunda Budowa formatu czas: R - cyfry lat M - cyfry miesięcy T - cyfry tygodni D - cyfry dni .D - części dnia G - cyfry godzin .G - części godziny MN - cyfry minut (N - gdy jedna cyfra) .N - części minuty S - cyfry sekund .S - części sekundy Rok, miesiąc i dzień mogą być rozdzielane dowolnymi znakami Patrz też inne funkcje, które zmieniają format wydruku pola: tFormat i tFragment [***] Format liczby - tFormat{liczba;format} lista [***] tFormatLiczby{liczba;format} lista [***] tFormatuj{liczba;format} lista [***] tFormatujLiczbę{liczba;format} lista [***] t64{liczba;format} lista Przykłady: ţFormat{60500;99 999.99} -> 60 500.00 ţFormat{20000;9999.99} -> ****.** ţ0pad{12;9999} -> 0012 ţ0trim{0012;9999} -> 12 ţNtrim{12;9999} -> 12 ţBez0{0;9999} -> Działanie: Formatuje zapis liczby Parametry: * liczba (pole) * format wyniku Budowa formatu wyniku: Składa się on z cyfr 9 reprezentujących cyfry, kropki wyznaczającej miejsce podziału części całkowitej i dziesiętnej. Oraz dowolnych innych znaków umieszczonych wprost, bezpośrednio we wzorcu. Wynik będzie zaokrąglony do podanej liczby cyfr dziesiętnych. Szerokość formatu określa szerokość wyniku (dopełnianie spacjami). Gdy wynik nie mieści się w podanej szerokości wyświetlane są ***. Przykładowe formaty: '9999 999.99', '999tys 999zl. 99 groszy' Uwaga: Format nie może rozszerzyć pola ponad definicje w tabeli pól. Zwiększy jedynie szerokość na wydruku. Nie może także zwiększyć precyzji zapisu wartości. Patrz też inne funkcje, które zmieniają format wydruku pola: ţFormat i ţFragment [***] Dodawanie - t65{składnik;składnik;[format]} lista [***] tDodawanie{składnik ;składnik;[format]} lista [***] tDodaj{składnik ;składnik;[format]} lista [***] Odejmowanie - t66{odjemna ;odjemnik;[format]} lista [***] tOdejmowanie{odjemna ;odjemnik;[format]} lista [***] tOdejmij{odjemna ;odjemnik;[format]} lista [***] Mnożenie - t67{czynnik ;czynnik ;[format]} lista [***] tMnożenie{czynnik ;czynnik;[format]} lista [***] tPomnóż{czynnik ;czynnik;[format]} lista [***] Dzielenie - t68{dzielna ;dzielnik;[format]} lista [***] tDzielenie{dzielna ;dzielnik;[format]} lista [***] tPodziel{dzielna ;dzielnik;[format]} lista Przykłady: ţDodaj{10.5; 15} zwróci 25.5 ţPomnóż{2; 3} zwróci 6 ţOdejmij{20;t67{2;3}} zwróci 14 ţPodziel{60500;14;9 999.99} zwróci 4 321.43 ţOdejmij{20000;100;9999.99} zwróci ****.** ţPomnóż{ ţOdejmij{20;10;9.99}; 10;9999.99} zwróci *.** Działanie: Zwraca wynik działania matematycznego Parametry: * argument 1 * argument 2 * format wyniku (opcjonalny) Budowa formatu wyniku, patrz: Format Wykonuje proste operacje, tj. dodawanie, odejmowanie, mnożenie i dzielenie. Argumentami mogą być wartości, pola i inne funkcje wyliczające. Składanie wielu funkcji wyliczających pozwala uzyskiwać funkcje o większej złożoności. Można podać format wyniku. Funkcji tych można użyć np. do uzyskania na wydruku pozycji ilości do realizacji w zamówieniu, ponieważ wyniki funkcji mogą być argumentami innych funkcji. [***] Obliczanie - t={wyrażenie; [format]} lista [***] t={wyrażenie logiczne [;[prawda][;fałsz]]} lista [***] tOblicz{wyrażenie; [format]}lista [***] tObliczenie{wyrażenie; [format]}lista [***] t69{wyrażenie; [format]} lista Przykłady: ţ={ 1 + 2 * 3 } ţ={ (3+4)/((1+2)*(4-2)) } ţ={ tRejestr * 3.1415;999 999.99} ţ={ ş-Ilosc wydana-ş / ş-Ilosc wyma-ş * 100;999.9}% ţ={ 20 + 1.15 * ş- Ilosc -ş / (tSuma -5) } ţ={ ş- Ilosc -ş > 10; dużo; mało} Działanie: Zwraca wynik obliczenia wyrażenia matematycznego lub logicznego Parametry: * wyrażenie matematyczne/logiczne * format wyniku (opcjonalny) * wynik gdy prawda (dla wyrażeń logicznych) * wynik gdy fałsz (dla wyrażeń logicznych) Oblicza wynik wyrażenia matematycznego lub logicznego z zachowaniem kolejności działań i uwzględnieniem nawiasów. Zaokrąglenie wyniku można uzyskać przez podanie odpowiedniego formatu wyniku. Wynik wyrażenia logicznego bez podanych parametrów dla prawdy i fałszu będzie .T. lub .F. i może zostać użyty jako parametr innego wyrażenia logicznego. Wyrażenie może zawierać: * operatory: * / + - * operatory logiczne: koniunkcji: & alternatywy: | negacji: ! relacji: < <= >= > = # lub != lub <> * potęga: ^ lub ** * modulo: % * nawiasy: () * liczby * pola dla wzorców zawierające wartości * funkcje zwracające wartości [***] Rejestr - tNazwa lista [***] tNazwa={wartość[;]} lista [***] t70{nazwa;[wartość[;]]} lista Przykłady: ţSuma={100.65} ţSuma={ţDodaj{ţSuma; 20.15}} ţFormat{ţSuma;9999.99} zwróci: 120.80 Działanie: Zapamiętuje wartość w rejestrze albo wyświetla zawartość rejestru Parametry: * nazwa - nazwa rejestru * wartość - wartość zapamiętywana w rejestrze (opcjonalny) * wartość; - wartość zapamiętywana w rejestrze, ale tylko gdy rejestr jest pusty. [Nazwa rejestru]: systemowa (patrz niżej) lub użytkownika (dowolna nazwa) Można utworzyć wiele rejestrów. Nazwy rejestrów nie mogą się powtarzać. [Zawartość rejestru]: wartość liczbowa albo tekstowa. [Wartość]: parametr zapamiętuje podaną wartość w rejestrze. Gdy pominięty, to program zwraca zawartości rejestru. Można przepisywać zawartość jednego rejestru do drugiego i używać łącznie z funkcjami działań matematycznych. [Wartość;]: Dodanie znaku ';' za wartością, nadaje rejestrowi wartość początkową tylko, gdy rejestr jest pusty. Gdy rejestr ma już zawartość to nie jest wypełniany. Przykład: zainicjowanie rejestru Lp wartością 1 i zwiększanie go dla każdej pozycji: P ţLp={1;} ţSuma{Lp;1} ţFormat{ţLp;9999} NOTE: Powyższą linię można zastąpić prostszym wyrażeniem: P ţFormat{ţInc{Lp};9999} lub P ţInc{Lp;9999} Rejestry systemowe o stałych nazwach: tUrządzenieSymbol - symbol wybranego urządzenia wydruku tUrządzenieNazwa - nazwa tUrządzenieRodzaj - rodzaj tWersja - wersja programu np. Trawers5 tWersjaNr - nr wersji programu np. 5.00 tFirma - symbol firmy tOddział - symbol oddziału tOperator - symbol operatora tRola - id roli tI - aktualna iteracja pętli ţPowtórz tX - aktualne położenie kursora na stronie w mm: X tY : Y tStrona - nr strony wydruku tIlośćStron - łączna ilość stron wydruku tStron - łączna ilość stron wydruku tMarginesDolny - rozmiar dolnego marginesu w mm tDataSys - aktualna systemowa data i godzina tData - data bieżąca z którą pracuje program, np. 2016-04-26 tCRLF - znak podziału wiersza [CRLF] tErrorLevel - wartosć zwrócona przez ostatnie wywołanie ţUruchom{} Inny przykład: Tłumaczenie nazw jednostek miar: Potrzeba: na wydruku dokumentu umieścić nazwy jednostek miar w języku angielskim (EN). W pozycji dokumentu w zbiorze jest nazwa w języku polskim (PL). PL EN Wykonać tłumaczenie: para --> pair szt --> each lt --> ltr Rozwiązanie: Zastosować funkcje: Rejestr. Zapamiętać w nagłówku dokumentu wartości w rejestrze. Wykorzystać zapamiętane wartości w linii pozycji 1) definicje PL->EN w nagłówku wzorca T ţpara={pair} T ţszt={each} T ţlt={ltr } 2) tłumaczenie jednostki miary w linii pozycji P tşJSş [***] Rejestr stron - t71{rejestr;[wartość[;]]} lista [***] tRejestrStron{[rejestr;[wartość[;]]]} lista [***] tIlośćStron{[rejestr;[wartość[;]]]} lista [***] tStron{[rejestr;[wartość[;]]]} lista [***] tRejestrKońcowy{rejestr;[wartość[;]]} lista [***] tWartośćKońcowa{rejestr;[wartość[;]]} lista Przykłady: ţRejestrStron{stron wydruku; tStrona;} - ilość stron w dok. ţRejestrStron{şNr dokum. ş;şSş;} - numer ostatniej strony dok. ţRejestrStron{şNr dokum. şşSş;şLş;} - ostatnia pozycja na stronie Działanie: Zapamiętuje wartość w rejestrze albo drukuje końcową zawartość rejestru Parametry: * rejestr - nazwa rejestru * wartość - wartość zapamiętywana w rejestrze (opcjonalny) * ; - znak ';' za wartością zwraca zawartości rejestru Nazwa rejestru: dowolna Zawartość rejestru: wartość liczbowa albo tekstowa. Można utworzyć wiele rejestrów. Nazwy rejestrów nie mogą sie powtarzać. Wartość: parametru zapamiętuje wartości w rejestrze. Gdy pominięty, to program zwraca zawartość rejestru. [***] Zawijanie - tZawiń{tekst;[szerokość]} lista [***] t72{tekst;[szerokość]} lista Przykłady: ţZawiń{ş-----opis-----ş; 180} ţZawiń{ş----- Nazwa platnika -------ş;50} ţJustuj{ţZawiń{ş----- Nazwa platnika -------ş;50}} Działanie: Zawija długi tekst w kilku liniach Parametry: * tekst - długi tekst, pole * szerokość - szerokość oczekiwanej szpalty tekstu Znacznik umieszcza długi tekst w kilku wierszach. Długi tekst jest automatycznie łamany i zapisywany w kolejnych wierszach. Argument: szerokość, steruje szerokością szpalty. Dobre efekty można uzyskać stosując łącznie z funkcją wyrównania: ţJustuj{ţZawiń{...}} wydrukuje szpaltę z tekstem justowanym ţCentruj{ţZawiń{...}} wydrukuje szpaltę z tekstem wycentrowanym Znacznika używa się do umieszczania pól dodatkowego opisu i pól memo oraz do umieszczania długich pól np. nazw w wąskich kolumnach tabeli. Pozwala to na umieszczenie pól zawierających tekst dłuższy niż dostępne miejsce na wydruku np. nazwy indeksów, nazwy firm, opisy dodatkowe, uwagi. NOTE: Jeżeli zawijany tekst jest otoczony innym tekstem to dla pozostałych tekstów też trzeba użyć funkcji ţZawiń{} nawet jeżeli mieszczą się na wydruku. Pominięcie ţZawiń{} spowoduje powtórzenie otaczającego tekstu w każdym wydrukowanym wierszu. ţZawiń{s---Indeks---s}ţZawiń{s----- Nazwa indeksu -----s;20em} [***] Justowanie - tJustuj{tekst;[szerokość]} lista [***] t73{tekst;[szerokość]} lista Przykłady: ţJustuj{ţZawiń{ş----- Nazwa platnika -------ş;50}} Działanie: Justuje tekst, utrzymuje szerokość szpalty Parametry: * tekst - justowany tekst, pole, zawartość rejestru... * szerokość - oczekiwana szerokość (opcjonalny) Znacznik justuje tekst, tj. wyrównuje do prawej i lewej strony. Wyrównuje szpaltę tekstu. Likwiduje 'postrzępienie' prawej krawędzi poprzez drobne zmiany odstępów między wyrazami. Przydatny jest zwłaszcza przy tekstach pisanych czcionką o zmiennej szerokości. Używany wraz z zawijaniem ţZawiń{}, pozwala złożyć długi opis dodatkowy w równą szpaltę o podanej szerokości. Dodatkowo, po wydrukowaniu, pozostawia kursor zawsze za szpaltą. To pozwala uzyskać równe kolumny bez użycia tabeli. Opcjonalny parametr: szerokość, określa oczekiwaną szerokość pola, w którym ma nastąpić wyrównanie tekstu. Domyślnie, szerokość pola jest wyliczana proporcjonalnie do liczby znaków, kroju oraz rozmiaru czcionki. Np. Kolumna z nazwą indeksu może mieć do 100 mm. Na wydruku nie ma miejsca by zmieścić nazwę dłuższą niż 40mm. Zawijanie tekstu pozwala wydrukować dłuższe nazwy w dwóch lub trzech wierszach. Blacha 10mm 18G2A 1500x2500 wydrukuje się w dwóch wierszach: Blacha 10mm 18G2A 1500x2500 Dodatkowo, używając funkcji centrowania, uzyska się: Blacha 10mm 18G2A 1500x2500 [***] Do lewej - tDoLewej{tekst;[szerokość]} lista [***] t74{tekst;[szerokość]} lista [***] Do prawej - tDoPrawej{tekst;[szerokość]} lista [***] t75{tekst;[szerokość]} lista [***] Do środka - tDoŚrodka{tekst;[szerokość]} lista [***] tCentruj{tekst;[szerokość]} lista [***] t76{tekst;[szerokość]} lista Przykłady: ţDoŚrodka{ Jednostka miary } ţDoPrawej{ţFormat{tSuma;999 999 999.99}} ţDoŚrodka{Ilość; 20} ţDoŚrodka{Wartość netto; 14em} ţDoPrawej{ş-- Ilosc ---ş; 40} ţDoLewej{Wartość netto; 40} Działanie: Wyrównuje tekst do lewej/prawej/środka Parametry: * tekst - wyrównywany tekst, pole, zawartość rejestru... * szerokość - szerokość pola (opcjonalny) Znacznik wyrównuje do prawej, lewej, albo wyśrodkowuje tekst. Przydatny jest zwłaszcza przy tekstach pisanych czcionką o zmiennej szerokości. Umożliwia wyrównywanie do prawej wartości numerycznych, wyśrodkowywanie tekstów w nagłówkach kolumn. Opcjonalny parametr: szerokość określa szerokość pola, w którym nastąpi wyrównanie tekstu. Domyślnie, szerokość pola jest wyliczana proporcjonalnie do ilości znaków, kroju oraz rozmiaru czcionki. Jeżeli tekst znajduje się w ramce to domyślna szerokość pola jest równa pozostałemu miejscu w kolumnie. Jeżeli w kolumnie jest kilka wyrównywanych tekstów to program wyrówna do kolumny tylko ostatni. Szerokość ujemna (-) powoduje wypisanie tekstu po lewej stronie od aktualnego położenia kursora. [***] Usuń spacje z lewej - t77{tekst} lista [***] tUsuńSpacjeZlewej{tekst} lista [***] tLtrim{tekst} lista [***] Usuń spacje z prawej - t78{tekst} lista [***] tUsuńSpacjeZprawej{tekst} lista [***] tRtrim{tekst} lista [***] tTrim{tekst} lista Przykłady: ţUsuńSpacjeZlewej{ 000123 } -> '000123 ' ţUsuńSpacjeZprawej{ 000123 } -> ' 000123' ţUsuńSpacje{ 000123 } -> '000123' ţTrim{ 000123 } -> '000123' ţUsuńSpacjeZprawej{şIndeks towaru ş} -> '000123' ţRtrim{şIndeks towaru ş} ţRtrim{şNumer partii ş} ţUsuńSpacjeZprawej{ş-Dodatkowy opis 01-ş} ţUsuńSpacjeZprawej{ş-Dodatkowy opis 02-ş} ţUsuńSpacjeZlewej{ş-- Ilosc ---ş} Działanie: Usuwa spacje z lewej/prawej strony tekstu Parametry: * tekst, z którego usunięte będą spacje z lewej/prawej strony Usunięcie spacji umożliwia umieszczenie obok siebie dwóch pól, których zawartość ma zmienną długość. [***] Fragment - t79{tekst;start;[licz]} lista [***] Fragment - tFragment{tekst;start;[licz]} lista Przykłady: tFragment{şNr dokum. ş;1;} -> cały numer ţFragment{FA0001/02/12;1;} -> FA0001/02/12 ţFragment{FA0001/02/12;1;6} -> FA0001 ţFragment{FA0001/02/12;8;2} -> 02 ţFragment{FA0001/02/12;-5;2} -> 02 ţFragment{FA0001/02/12;-2;} -> 12 ţFragment{FA0001/02/12;;-2} -> 12 ţFragment{FA0001/02/12;11;} -> 12 ţFragment{FA0001/02/12;"/";} -> 02/12 ţFragment{FA0001/02/12;"/";"/"} -> 02 ţFragment{FA0001/02/12;;"/"} -> FA0001 ţFragment{Wartość netto;9;} -> netto ţFragment{Jan Kowalski;" ";} -> Kowalski ţFragment{Jan Adam Kowalski;"Jan Adam ";} -> Kowalski ţFragment{Jan Kowalski;;" "} -> Jan ţFragmentOdLewej{Jan Kowalski;15} -> "Jan Kowalski" ţOdLewej{Jan Kowalski;15} -> "Jan Kowalski" ţFragmentOdPrawej{Jan Kowalski;15}-> "Jan Kowalski" ţOdPrawej{Jan Kowalski;15} -> "Jan Kowalski" ţRpad{Jan Kowalski;15} -> "Jan Kowalski " ţLpad{Jan Kowalski;15} -> " Jan Kowalski" Działanie: Zwraca fragment tekstu Parametry: * tekst, z którego pobrany będzie fragment * start - pozycja początkowa w tekście lub początkowy ogranicznik tekstu * licz - liczba znaków do pobrania lub końcowy ogranicznik tekstu Fragment drukuje lub porównuje fragment pola lub tekstu. Początek fragmentu wskazuje parametr: start. Jeżeli start jest liczbą dodatnią, to początek liczony jest od skrajnego lewego znaku. Jeżeli jest liczbą ujemną, to liczony jest od skrajnego prawego znaku. Np. -2 to drugi znak licząc od końca. Jeżeli parametr start jest tekstem w cudzysłowiu "" to program szuka i przyjmuje za początek fragmentu znaki za znalezionym tekstem. Parametr: licz pobiera podaną liczbę znaków. Gdy pominięty, to program pobiera fragment od wskazanej pozycji do końca tekstu. Jeżeli jest liczbą ujemną, to pobierany jest tekst wskazanej długości z lewej strony od wyznaczonego początku. Jeżeli parametr licz jest tekstem w cudzysłowiu "" to program szuka i przyjmuje za koniec fragmentu znaki przed znalezionym tekstem. Patrz też inne funkcje, które zmieniają format wydruku pola: tFormat i tFormatDaty [***] EAN 128 - t80{tekst;[grubość kreski];[wysokość]} lista [***] tEan128{tekst;[grubość kreski];[wysokość]} lista Przykłady: ţEan128{şIndeks towaru ş} ţEan128{şIndeks towaru şşNumer partii şş-- Ilosc ---ş} ţEan128{şIndeks towaru ş; 0.85; 50} ţEan128{şIndeks towaru ş;; 30} Działanie: Rysuje kod EAN 128 z podaną zawartością Parametry: * tekst do narysowania w postaci kodu EAN 128 * grubość pojedyńczej kreski w milimetrach (opcjonalny) * wysokość kodu w milimetrach (opcjonalny) Funkcja rysuje kod kreskowy EAN 128. Grubość pojedynczej kreski wpływa na gęstość i szerokość kodu Zgodnie ze specyfikacją parametr ten powinien zawierać się w zakresie 0.250 - 1.016 milimetra. Domyślnie przyjmowane jest 0.33mm Domyślnie kod przyjmuje wysokość aktualnego wiersza. Program drukując kod EAN 128 wykorzystuje zestaw znaków Code C. Ten zestaw znaków daje krótki wydruk ciągów cyfr. NOTE: Drukarka etykiet. Wydruk barkodu na drukarce etykiet. Warto ustalić najpierw rozmiar etykiety potrzebny, aby pomieścić barkod utworzony dla najdłuższego spodziewanego, tekstu, np. indeksu KIM. Warto także sprawdzić, czy standardowy wydruk na A4 jest zgodny z wydrukiem na etykiecie. Czy barkod mieści się na etykiecie ?. Czy nie jest obcinany. Aby drukować na drukarce etykiet (np. typu Zebra), należy upewnić się, że drukarka ta w systemie operacyjnym jest widoczna jako standardowa drukarka, i że można niej drukować w standardowy sposób - tak jak na drukarce laserowej. Że nie wymaga sterowania za pomocą specjalistycznych kodów sterujących. Patrz też: Kody kreskowe Opis ogólny [***] Code 39 - t81{tekst;[grubość kreski];[wysokość];[sum T/N];[2:1/3:1]} lista [***] tCode39{tekst;[grubość kreski];[wysokość];[sum T/N];[2:1/3:1]} lista Przykłady: ţCode39{şIndeks towaru ş} ţCode39{şIndeks towaru ş;;4em} ţCode39{şIndeks towaru ş; 0.30; 4em; T} ţCode39{şIndeks towaru ş; 0.30; 4em; N; 2:1} ţCode39{şIndeks towaru ş; 0.30; 4em;;3:1} ţCode39{şIndeks towaru ş; 0.30; 4em;;thin} ţCode39{şIndeks towaru ş; 0.30; 4em;;wide} ţCode39{şIndeks towaru ş; 0.30; 4em} Działanie: Rysuje kod Code39 z podaną zawartością Parametry: * tekst do narysowania w postaci kodu Code39 * grubość pojedynczej kreski w milimetrach (opcjonalny) * wysokość kodu w milimetrach (opcjonalny) * czy program ma wyliczyć i dorysować dodatkowy znak sumy kontrolnej domyślnie nie [N] * stosunek szerokości pasków grubych do cienkich: 2:1, 2.5:1, 3:1 domyślnie 2.5:1 Funkcja rysuje kod kreskowy Code39. Pozwala kodować 43 znaki: * wielkie litery alfabetu bez znaków diakrytycznych A-Z * cyfry 0-9 * znaki -. $/+% Program zmienia litery w przekazanym tekście na wielkie oraz litery diakrytyzowane na odpowiedniki ASCII. Jeżeli w tekście znajdą się znaki niekodowalne, to kod nie zostanie narysowany. Grubość pojedynczej kreski wpływa na gęstość i szerokość kodu. Domyślnie przyjmowane jest 0.33mm Domyślnie kod przyjmuje wysokość aktualnego wiersza. Wysokość powinna umożliwiać odczyt pod różnymi kątami Stosunek szerokości pasków grubych do cienkich musi mieścić się w przedziale od 2:1 do 3:1. Domyślnie program przyjmuje proporcję 2.5:1. Zmieniając ten parametr można zmienić szerokość kodu kosztem czytelności W przypadku wydruku do pliku tekstowego, prn, html lub ekran program wydrukuje ciąg znaków zamiast kodu kreskowego. NOTE: Bardziej uniwersalne od Code39 są kody i GS1-128 i Gs1-QR [***] EAN 13 - tEan13{ean13;[grubość kreski];[wysokość]} lista [***] t82{ean13;[grubość kreski];[wysokość]} lista Przykłady: ţEan13{ş---EAN13---ş} ţEan13{ş---EAN13---ş; 0.25; 25} Działanie: Rysuje kod EAN 13 z podaną zawartością Parametry: * ean13 - symbol do narysowania w postaci kodu EAN 13 * grubość pojedynczej kreski w milimetrach (opcjonalny) * wysokość kodu w milimetrach (opcjonalny) Funkcja rysuje kod kreskowy EAN 13. ean13 może zawierać 13 cyfr lub 12 bez cyfry kontrolnej. W przypadku podania 12 cyfr program obliczy 13 cyfrę kontrolną. Można to wykorzystać do generowania kodów EAN 13 Grubość pojedynczej kreski wpływa na gęstość i szerokość kodu Zgodnie ze specyfikacją GS1 parametr ten powinien zawierać się w zakresie 0.264 - 0.660 milimetra. Domyślnie przyjmowane jest 0.33mm Domyślnie kod przyjmuje wysokość aktualnego wiersza. Taka wysokość powinna umożliwiać odczyt pod różnymi kątami Zalecane wymiary kodów można znaleźć na stronach organizacji GS1 W przypadku wydruku do pliku tekstowego, prn, html lub ekran program wydrukuje ciąg cyfr zamiast kodu kreskowego. [***] Data Matrix - tDataMatrix{tekst;[rozmiar]} lista [***] t83{tekst;[rozmiar]} lista Przykłady: ţDataMatrix{TEL:+48586610015;} ţDataMatrix{şIndeks towaru şşNumer partii şş-- Ilosc ---ş;} ţDataMatrix{şIndeks towaru ş; 50} ţDataMatrix{https://www.tres.pl; 3em} Działanie: Rysuje kod DataMatrix z podaną zawartością Parametry: * tekst do narysowania w postaci kodu Data Matrix * rozmiar kodu (opcjonalny) Funkcja rysuje 2D (dwuwymiarowy), kwadratowy kod kreskowy DataMatrix. Rozmiar kodu trzeba dobrać tak aby był czytelny po wydrukowaniu. Domyślnie kod ma wysokość wiersza. [***] QR Code - tQR{tekst;[rozmiar];[korekcja L/M/Q/H]} lista [***] tQRcode{tekst;[rozmiar];[korekcja L/M/Q/H]} lista [***] t84{tekst;[rozmiar];[korekcja L/M/Q/H]} lista Przykłady: ţQR{TEL:+48586610015;;M} ţQR{şIndeks towaru ş;5em;H} ţQR{şIndeks towaru şşNumer partii şş-- Ilosc ---ş;} ţQR{https://www.tres.pl/produkty/ş---EAN13---ş; 50;} Działanie: Rysuje kod QR z podaną zawartością Parametry: * tekst do narysowania w postaci kodu QR * rozmiar kodu (opcjonalny) * poziom korekcji błędów (opcjonalny) L - 7% (domyślnie) M - 15% Q - 25% H - 30% Funkcja drukuje 2D (dwuwymiarowy), kwadratowy kod kreskowy QR. Rozmiar kodu trzeba dobrać tak aby był czytelny po wydrukowaniu. Domyślnie kod ma wysokość wiersza. Im wyższy poziom korekcji tym większa odporność kodu na uszkodzenia. [***] Plik załącznika - t85{plik;[katalog]} lista [***] tZałącz{plik;[katalog]} lista [***] tZałączPlik{plik;[katalog]} lista [***] tWstawZałącznik{plik;[katalog]} lista (załącznik standardowy) Przykłady: ţZałącz{specyfikacja.pdf} ţZałącz{instrukcje/Ogólna.doc} ţZałącz{instrukcje/ţRtrim{şIndeks towaru ş}.pdf} ţZałącz{goto/ţRtrim{şIndeks towaru ş}.pdf} ţZałącz{trerror.log;trlog} Działanie: Wysyła wskazany plik (pliki) razem z dokumentem Parametry: * plik - nazwa pliku * katalog - katalog programu Trawers, w którym znajduje się plik domyślnie katalog załączników np. /nazal Parametr: katalog musi wskazywać na katalog programu Trawers np. /naZal, /mgZal, /zoZal, /trInOut, /trRaporty, /trLog, itp. Nie może wskazywać na katalog, w którym znajdują się pliki z danymi tj. /nadane, /mgdane, /zodane, itd. W podglądzie wydruku na ekran widać, które pliki będą załączone i wskazane ewentualne problemy z dostępem do plików. Plik załącznika można wysyłać e-mailem, drukować, przekazać jako parametr programu Patrz też: ţZałączniki Pliki załączników [***] Plik załącznika dokumentu - tZałączniki{[refNo|[zbiór;klucz];[grupa][;plik]]} lista [***] tZałączPlikiDokumentu{[refNo|[zbiór;klucz];[grupa][;plik]]} lista [***] t86{[refNo|[zbiór;klucz];[grupa][;plik]]} lista (załącznik indywidualny) Przykłady: ţZałączPlikiDokumentu{} ţZałączniki{SI-FA0001/11/12} ţZałączniki{Odbiorca;sPla.s} ţZałączniki{Dostawca;sDos.s} ţZałączniki{Pracownik; 1} ţZałączniki{Pracownik; 1; UM} ţZałączniki{Pracownik; 1;;Umowa o pracę.pdf} ţZałączniki{Pracownik; 1; UM; Umowa o pracę.pdf} ţZałączniki{Zadanie;00000001} ţZałączniki{Kontakt; 853} ţZałączniki{KIM;s--- indeks ---s} ţZałączniki{KSOM;sMss--- indeks ---s} ţZałączniki{Partia;sMss--- indeks ---ssNumer partii s} ţZałączniki{LOT;sMss--- indeks ---ssNumer partii s} ţZałączniki{Seria;sMss--- indeks ---ss------Numer serii------s} ţZałączniki{SER;sMss--- indeks ---ss------Numer serii------s} Działanie: Załącza pliki załączników powiązane z dokumentem lub kartą Parametry: refNo lub zbiór - Nr RefNo dokumentu lub zbiór do którego załączone są załączniki (domyślnie drukowany dokument) klucz - identyfikator karty/dokumentu z załącznikami grupa - symbol grupy z której program załączy pliki (domyślnie wszystkie grupy) plik - nazwa pliku do załączenia (domyślnie wszystkie pliki) Plik załącznika musi mieć wskaźnik: Wysłać = [T] w karcie definicji. W podglądzie wydruku na ekran widać, które pliki będą załączone i wskazane ewentualne problemy z dostępem do plików. Można wysłać jako: * załącznik e-mail -> urządzenie wyjściowe rodzaju: [Email] * parametr wykonania programu -> urządzenie wyjściowe rodzaju: [Polecenie] * wydruk na drukarce -> urządzenie wyjściowe rodzaju: [CUPS] i [Win32] NOTE: Aby wydrukować plik na drukarce musi on być skojarzony w systemie operacyjnym z poleceniem wydruku. W Windows można to sprawdzić klikając prawym klawiszem myszy na pliku Jeżeli w menu kontekstowym jest pozycja Drukuj, to można drukować pliki załączników w tym formacie. Jeżeli nie ma to trzeba zainstalować odpowiedni program, np. Acrobat Reader dla plików w formacie PDF Przykład zastosowania do wysłania e-mailem oferty sprzedaży do odbiorcy z wieloma załącznikami, np. fotografiami produktu: Pliki załączników Jeżeli na wzorcu wydruku faktury sprzedaży (w linii T) umieścimy ţZałaczniki{Odbiorca;sPla.s}, to program załączy załączniki z karty odbiorcy. Podobnie, jeżeli w linii P umieścimy tZałączniki{Indeks;s---indeks ---s}, to program załączy załączniki powiązane z kartami indeksów, które są na dokumencie. Także, na wydrukach dotyczących pracownika ţZałączniki{} umieści załączniki z karty pracownika. W połączeniu z ţRekord{} i ew. ţIndeks1{] można załączać z kartotek powiązanych. Np. umieszczenie załączników z karty pracownika powiązanego z operatorem, który zarejestrował zlecenie: ţRekord{241;sOPs} ţZałączniki{Pracownik;ţ...[person]} Dodatkowo, można zawęzić listę umieszczanych załączników do konkretnej grupy. Np. ţZałączniki{Indeks;s--- indeks ---s;GW} umieści załączniki z karty indeksu z grupy GW (np. gwarancja). Można też zawęzić do załączników o wskazanej nazwie. Np. ţZałączniki{Dostawca;sKodds;;OWU.pdf}, aby załączyć dokument ogólnych warunków ubezpieczenia świadczonych przez ubezpieczyciela. Ubezpieczyciel w tym przykładzie, to główny dostawca KIM rodzaju: usługa. NOTE: Może być kilka plików OWU.pdf w różnych grupach aby zawęzić trzeba podać grupę jw. [***] Treść z pliku txt - tTreśćPliku{plik;[kodowanie]} lista [***] t87{plik;[kodowanie]} lista Przykłady: ţTreśćPliku{/licencje/licencja.txt;cp852} ţTreśćPliku{../trtres/trinout/opis.txt;utf-8} Działanie: Wstawia treść z pliku w formacie tekstowym. Parametry: * plik - ścieżka i nazwa pliku z treścią do drukowania * kodowanie- kodowanie liter domyślnie program próbuje rozpoznać kodowanie znaków [***] nie wykorzystane t88 lista [***] nie wykorzystane t89 lista [***] Dołącz inny wydruk (kaskadowo) - tInnyWydruk{[drukarka];idProces[;p1][;p2][;p3][;...]} lista [***] tInnyWydruk{[drukarka];system[;p1][;p2][;p3][;...]} lista [***] t90{[drukarka];idProces[;p1][;p2][;p3][;...]} lista KG: ZK NA: FA FK FZ FP FQ OF ZL OB FO ZI SR RZ SD LD NA_DFA50 MG: RO PR Z1 Z2 K1 K2 PM RM R3 R4 O1 O2 P1 P2 NW PL: P2 PM: PM_ZEX10 RK: KO SE: WS ZA: OF OB ZL ZO: FA FK DA FM ZI SR RZ ZP: ZL KR RO Z1 PR Z2 KD KN KU SM SO DW KO Z3 SH Wydruki RaportyXML: PM: [PM_ZEX10] Raporty XML > Wydruk Wydruki (raporty) Alertów: NZ [NZ_ZDS10] Dynamika sprzedaży NA [NA_DZM58] Zamówienia > Niedobór asortymentu ZO [ZO_ZRO60] Planowane zapłaty zobowiązań Ostatnie wybory operatorów Przykłady: ţInnyWydruk{;NA;FA;TRES01FP;şNr dokum. ş} ţInnyWydruk{EKRAN0;NA;ZL;TRES0100;şNr zamow. ş} ţInnyWydruk{EKRAN0;NA;ZL;UWAGA000;şNr zamow. ş} ţInnyWydruk{;MG;RO;TRES0100;şMş;şBsş;şP.bnş} ţInnyWydruk{;PM_ZEX10;RAP001} Działanie: Wywołuje wydruk wskazanego dokumentu Parametry: * drukarka - symbol urządzenia wyjściowego * idProces - symbol wydruku * p1,p2,p3... - parametry wydruku system/idProces rodzaj wydruku -------- ---------------------------------------- KG zestawienia księgowe p1 - ZK p2 - symbol wzorca wydruku p3 - pusty NA należności wg wzorca p1 - rodzaj wzorca dokumentu SR,RZ p2 - symbol wzorca wydruku p3 - symbol odbiorcy p4 - data do (domyślnie data bieżąca) p5 - dni 1 p6 - dni 2 [p7]- ujmij * W Wszystkie * O tylko opóźnione * B tylko bez opóźnień * 1 opóźnione 1 * 2 opóźnione 2 * 3 opóźnione 3 NA dokument wg wzorca p1 - rodzaj wzorca dokumentu FA,FK,FZ,FP,FQ,OF,ZL,FO,ZI,SD,LD p2 - symbol wzorca wydruku p3 - numer dokumentu NA_DFA50 zestawienie faktur sprzedaży [p1] - symbol wzorca wydruku * pusty - wydruk zestawienia standardowego * podany - wydruk faktur(y) wg wzorca, np. TRESGR00 program pominie parametry p7 i p8 [p2] - od numeru [p3] - do numeru * pominięte p2 i p3: wydrukowane będą wszystkie faktury z okresu * pominięte p3: wydrukowana będzie tylko faktura: p2 [p4] - rok obliczeniowy albo data wystawienia dokumentu * pusty - program odczyta z p2 [p5] - miesiąc obliczeniowy * można pominąć p5 gdy w p4 jest data wystawienia dokumentu * pusty - program odczyta z p2 [p6] - symbol odbiorcy * pusty - wszystkie faktury * podany - tylko faktury odbiorcy [p7] - Zawiera: Wszystkie pozycje/Sumy zbiorcze (W/S) * pusty - sumy zbiorcze [p8] - Ujmij pozycje: Wszystkie/Niezatwierdzone/Zatwierdzone (W/N/Z) * pusty - wszystkie pozycje NA_DZM58 zamówienia > niedobór asortymentu p1 - nazwa zapisu wyborów operatora NZ_ZDS10 dynamika sprzedaży netto wg odbiorców i grup p1 - nazwa zapisu wyborów operatora MG nota wysyłkowa wg wzorca [NW] (na jednym wydruku znajduje się asortyment z wielu dok rozchodu) p1 - NW p2 - symbol wzorca np. TRES0100 p3 - symbol magazynu p4 - symbol systemu, który rejestrował dokument rozchodu p5 - od numeru dokumentu [p6] - do numeru dokumentu * pominięte p6: Nota wysyłkowa wg dok rozchodu nr p5 * podane p6: Nota wysyłkowa wg dok rozchodu nr od p5 do p6 [p7] - rok albo data wystawienia dokumentu [p8] - m-c * można pominąć p8 gdy w p7 jest data wystawienia dokumentu * można pominąć p7 i p8, gdy numer dok p5 jest 12 znakowy i zawiera w suffiksie okres, np. FA0001/10/12 * gdy brak okresu, program przyjmie bieżący p9 - symbol obiorcy p10 - symbol adresu [p11]- ułożenie asortymentu wg: * N - numerów dok rozchodu * I - indeksów asortymentu * M - miejsc w magazynie (domyślnie) PL PIT-11 p1 - P2 p2 - symbol wzorca p3 - symbol pracownika [p4] - rok obliczeniowy lub data od (domyślnie rok zamknięty) [p5] - miesiąc obliczeniowy do lub data do (domyślnie 12) RK kontakt p1 - KO p2 - symbol wzorca np. TRES0100 p3 - id kontaktu SE wizyta serwisowa p1 - WS p2 - symbol wzorca np. TRES0100 p3 - numer wizyty MG dokument magazynowy p1 - rodzaj wzorca dokumentu RO,PR,RM,PM,Z1,Z2,... [p2] - symbol wzorca * pusty - wydruk zestawienia standardowego * podany - wydruk dokumentu wg wzorca, np. TRES0100 p3 - symbol magazynu p4 - symbol systemu, który rejestrował dokument p5 - od numeru [p6] - do numeru * pominięte p6: wydruk dok p5 * podane p6: wydruk dok od p5 do p6 [p7] - rok albo data wystawienia dokumentu [p8] - m-c * można pominąć p8 gdy w p7 jest data wystawienia dokumentu * można pominąć p7 i p8 gdy numer dokumentu p5 jest 12 znakowy i zawiera w suffiksie okres, np. FA0001/10/12 np. wydruk dok rozchodu wystawionych do faktury: P ţMagazyny[şMş]{şMş} T ţWstawWydruk{MG;RO;TRES0100;ţMagazyny[];NA;şNr dokum. ş} * gdy brak okresu, program przyjmie bieżący [p9] - zestawienie standardowe * Zawiera: Wszystkie pozycje/Sumy zbiorcze (W/S) pusty - sumy zbiorcze ZA dokument wg wzorca p1 - rodzaj wzorca dokumentu OF,ZL,OB p2 - symbol wzorca wydruku p3 - numer dokumentu ZO zobowiązania wg wzorca p1 - rodzaj wzorca dokumentu SR,RZ p2 - symbol wzorca wydruku p3 - symbol odbiorcy p4 - data do (domyślnie data bieżąca) p5 - dni 1 p6 - dni 2 [p7]- ujmij * W Wszystkie * O tylko opóźnione * B tylko bez opóźnień * 1 opóźnione 1 * 2 opóźnione 2 * 3 opóźnione 3 ZO dokument wg wzorca p1 - rodzaj wzorca dokumentu FA,FK,DA,FM,ZI p2 - symbol wzorca wydruku p3 - numer dokumentu ZO_ZRO60 planowane zapłaty zobowiązań p1 - nazwa zapisu wyborów operatora ZP dokument produkcyjny p1 - rodzaj wzorca dokumentu KR,RO,Z1,PR,Z2,... p2 - symbol wzorca, np. TRES0100 [p3] - symbol systemu, który rejestrował dokument * domyślnie ZP p4 - numer dokumentu [p5] - rok albo data wystawienia dokumentu [p6] - m-c * można pominąć p6 gdy w p5 jest data wystawienia dokumentu * gdy brak okresu, program przyjmie bieżący [p7] - numer pozycji * pusty - wszystkie pozycje dokumentu * podany - tylko pozycja o podanym numerze ZP specyfikacje do zlecenia p1 - rodzaj wzorca dokumentu ZL,SM,SO,DW,SH p2 - symbol wzorca, np. TRES0100 [p3] - symbol zlecenia * podany - tylko zlecenie o podanym symbolu [p4] - nr zamówienia * podany - tylko zlecenia do zamówienia [p5] - numer pozycji zamówienia wymagany nr zamówienia [p4] * podany - tylko zlecenia do pozycji zamówienia * pusty - zlecenia do wszystkich pozycji PM_ZEX10 RaportyXML [p1] - symbol raportu Funkcja wywołuje wydruk wskazanego dokumentu Może wywołać kolejkę (kaskadę) wydruków. Po zakończeniu aktualnie drukowanego może wydrukować inny dokument. Można wywołać wiele wydruków z jednego wzorca. Funkcja: ţInnyWydruk{} może wykonać wiele zadań, np. * Drukuje dwie faktury, z napisem KOPIA, po wydrukowaniu oryginału * Wysyła wiadomość (ţKomunikat{}) do operatora, po wydrukowaniu dokumentu * Automatycznie drukuje dok wydania na drukarce w magazynie, po wydrukowaniu faktury sprzedaży * Drukuje dok wydania z magazynu a następnie list przewozowy * Wysyła e-mail z dokumentem po wydrukowaniu dokumentu * Dodrukowuje zamówienia po wydrukowaniu faktury Aby uzyskać automatyczny wydruk 2 kopii faktury: 1. Skopiować aktualny wzorzec faktury do np. KOPIAFAK 2. Zmienić w wzorcu kopii faktury napis: Oryginał na: Kopia 3. W wzorcu wydruku oryginału na końcu dopisać: T ţInnyWydruk{;NA;FA;KOPIAFAK;şNr dokum. ş} T ţInnyWydruk{;NA;FA;KOPIAFAK;şNr dokum. ş} Przykłady: Wydruki kaskadowe i składane [***] Wstaw inny wydruk - tWstawWydruk{idProces[;p1][;p2][;p3][;...]} lista [***] tWstawWydruk{system;rodzaj;wzorzec;nr dok]} lista [***] t91{idProces[;p1][;p2][;p3][;...]} lista Wydruki dokumentów: KG: ZK NA: FA FK FZ FP FQ OF ZL OB FO ZI SR RZ SD LD NA_DFA50 MG: RO PR Z1 Z2 K1 K2 PM RM R3 R4 O1 O2 P1 P2 NW PL: P2 PM: PM_ZEX10 RK: KO SE: WS ZA: OF OB ZL ZO: FA FK DA FM ZI SR RZ ZP: ZL KR RO Z1 PR Z2 KD KN KU SM SO DW KO Z3 SH Wydruki RaportyXML: PM: [PM_ZEX10] Raporty XML > Wydruk Wydruki (raporty) Alertów: NZ [NZ_ZDS10] Dynamika sprzedaży NA [NA_DZM58] Zamówienia > Niedobór asortymentu ZO [ZO_ZRO60] Planowane zapłaty zobowiązań Ostatnie wybory operatorów Przykłady: ţWstawWydruk{NA;FA;TRES01FP;şNr dokum. ş} ţWstawWydruk{NA;ZL;TRES0100;şNr zamow. ş} ţWstawWydruk{NA;ZL;UWAGA000;şNr zamow. ş} ţWstawWydruk{MG;RO;DOK_RO01;şMş;şBsş;şP.bnş;;;;} ţWstawWydruk{MG;RO;DOK_RO01;@MAG;@NSYST;@NUMER;;;;} ţWstawWydruk{PM_ZEX10;RAP001} ţWstawWydruk{NZ_ZDS10;UjmijGrupy} Działanie: Wysyła wydruk Wstawia inny wydruk w treść aktualnie drukowanego Tworzy wydruki składane Parametry: opis w ţInnyWydruk Podobnie jak ţInnyWydruk, drukuje inny, nowy dokument (pod-druk). Pod-wydruk wstawi do aktualnego wydruku. Po zakończeniu wydruku, program powróci do przetwarzania pierwotnego wydruku Wywołany wydruk także może zawierać funkcję: t91 Wstaw inny wydruk. Przykłady zastosowań: Wydruki kaskadowe i składane * Wybór wzorca zależny od zawartości dokumentu, w połączeniu z funkcjami tPorównaj, tPorównajLiczby, tPorównajDaty np. wzorzec w języku angielskim, gdy kraj kontrahenta inny niż PL Należy przygotować: - wzorzec w języku angielskim np. FA0000EN - wzorzec w języku polskim np. FA0000PL - wzorzec wybierany podczas wydruku np. FA000000 Wzorzec FA000000: T ţWstawWydruk{NA;FA;ţPorównaj{ş+ş;PL;FA0000PL;FA0000EN};şNr dokum. ş} Jeżeli wymagany jest wydruk w wielu wersjach językowych, to można użyć kilku ţPorównaj{}, np. T ţWstawWydruk{NA;FA;ţPorównaj{ş+ş;PL;FA0000PL;ţPorównaj{ş+ş;DE;FA0000DE;FA0000EN}};şNr dokum. ş} lub wpisać jako kolejne linie: T ţPorównaj{ş+ş;PL;ţWstawWydruk{NA;FA;FA0000PL;şNr dokum. ş};} T ţPorównaj{ş+ş;DE;ţWstawWydruk{NA;FA;FA0000DE;şNr dokum. ş};} T ţPorównaj{ş+ş;EN;ţWstawWydruk{NA;FA;FA0000EN;şNr dokum. ş};} T ţPorównaj{ş+ş;SV;ţWstawWydruk{NA;FA;FA0000EN;şNr dokum. ş};} Jeżeli płatnik jest z innego kraju, to program wysunie pustą kartkę. * Drukowanie stałych tekstów zapisanych w osobnym wzorcu * Wydruk w pozycji faktury informacji z zamówienia * Podział wzorca wydruku na fragmenty, np. nagłówek i treść. Wzorce wydruku oryginału, kopii i duplikatu różnią się wywołaniem odpowiedniego wzorca nagłówka. Wzorzec oryginału: # nagłówek T ţWstawWydruk{NA;FA;NAGLOFAK;şNr dokum. ş} # treść T ţWstawWydruk{NA;FA;TRESCFAK;şNr dokum. ş} Wzorzec kopii: # nagłówek T ţWstawWydruk{NA;FA;KOPIAFAK;şNr dokum. ş} # treść T ţWstawWydruk{NA;FA;TRESCFAK;şNr dokum. ş} Wzorzec duplikatu: # nagłówek T ţWstawWydruk{NA;FA;DUPLIFAK;şNr dokum. ş} # treść T ţWstawWydruk{NA;FA;TRESCFAK;şNr dokum. ş} Patrz też: t90 [***] Powtórzenie - tPowtórz{ilość;tekst} lista [***] t92{ilość;tekst} lista Przykłady: ţPowtórz{5;X} -> XXXXX ţPowtórz{ţOblicz{ş-Ilosc wydana-ş/ş-Ilosc wyma-ş*6};=} ţPowtórz{3;ţInnyWydruk{;NA;FA;KOPIAFAK;şNr dokum. ş}}) ţPowtórz{6; ţI} -> 1 2 3 4 5 6 ţPowtórz{3;ţa={ţI}} ţPowtórz{4; ţOblicz{ţa * ţI;99}} ţY{+1em}} -> 1 2 3 4 2 4 6 8 3 6 9 12 Działanie: Powtarza tekst podaną ilość razy Parametry: * ilość - ilość powtórzeń * tekst - powtarzany tekst Pozwala drukować tekst lub inny wydruk podaną ilość razy. Numer aktualnego powtórzenia jest pamiętany w rejestrze ţI Umożliwia realizację pętli programowej. Zawartość ţI można modyfikować co umożliwia przetwarzanie do czasu spełnienia określonego warunku, np: - rób jeżeli (inf: while do, do while) ţPowtórz{1;ţPorównajLiczby{ţInc{w};5;;;;wyrażenie do przetworzenia ţI={0}}} Patrz funkcja ţWhile Patrz funkcja ţPowtórzDopóki - powtarzaj dopóki (inf: do loop while, repat until) ţPowtórz{1;wyrażenie do przetworzenia ţPorównajLiczby{ţInc{u};5;;;;ţI={0}}} Patrz funkcja ţUntil - powtórz dla i od X do Y (inf: for i=X to Y) Patrz funkcja ţFor [***] Okno dialogowe - tOkno{tabela;[tytuł];[opis]} lista [***] t93{tabela;[tytuł];[opis]} lista Przykład 1: ţRząd={ 1}ţKolumna={1}ţSzerokość={50}ţWysokość={30} ţEtykieta[;01]{Współrzędne pierwszej etykiety:} ţEtykieta[Rząd;02]{Rząd } ţEtykieta[Kolumna;03]{Kolumna} ţOkno{Etykieta;Współrzędne początkowe;Program rozpocznie wydruk od wskazanego miejsca} ţXY{ţ={ţKolumna*ţSzerokość;};ţ={ţRząd*ţWysokość;}} Przykład 2: ţPytanie[]{Odbiorca sPla.s s------ Nazwa ----- s} ţPytanie[]{jest z kraju s+s} ţPytanie[]{Czy kontynuować wydruk wg wzorca w PL ?} ţPorównaj{ş+ş;PL;;ţOkno{Pytanie;Kontrola wzorca wydruku}} Przykład 3: ţInformacja[]{} ţInformacja[]{Wydruk dokumentu sNr. dokum. s} ţInformacja[]{z dnia 20sData ws} ţInformacja[]{} ţOkno{Informacja;Kontynuować ?}} Przykład 4: ţWyrażenie={ } ţWierszOkna{Kalkulator;Wyrażenie;Wyrażenie} ţWierszOkna{Kalkulator; np. 1+2*3} ţOkno{Kalkulator;Kalkulator;Wyrażenie do obliczenia} Wynik: ţ={ţWyrażenie} Przykład 5: ţWzorzec[ETY]{Wydruk etykiety} ţWzorzec[ROB]{Wydruk karty robocizny} ţWzorzec={ROB} ţWierszOkna{Wybór;} ţWierszOkna{Wybór;Wzorzec wydruku;Wzorzec} ţWierszOkna{Wybór;} ţOkno{Wybór;Wybór wydruku} Wybrano: ţWzorzec -> ţWzorzec[ţWzorzec] Działanie: Wyświetla okno dialogowe Parametry: * tabela - nazwa tabeli t62 z zawartością okna * tytuł - tytuł okna * opis - opis wyświetlany w pierwszym wierszu Funkcja ţOkno{} wyświetla okno dialogowe podczas wydruku i umożliwia pobranie parametrów od operatora. Umożliwia też przerwanie wydruku. Wyświetlenie okna z informacją i z możliwością przerwania pokazują przykłady 2,3. Podanie klucza w tabeli ţ...[] zgodnego z rejestrem ţ... o tej samej nazwie spowoduje doświetlenie wartości rejestru t70. Operator może zmienić wartość rejestru. Jeżeli jest tabela ţTabela[] o nazwie identycznej z rejestrem ţRejestr to operator wybiera wartość wpisaną do ţTabela[] (przykład 5). Początkowa zawartość rejestru ţRejestr określa maksymalną ilość znaków jaką może wprowadzić operator. Wiersz z rejestrem pustym np. ţNazwa={} nie zostanie wyświetlony. Pobieranie z ekranu można wykorzystać np. do umieszczania na wydruku informacji których nie ma w dokumencie. Umożliwia zmianę postaci wydruku zależnie od pobranych parametrów. Pobrane wartości są dostępne od razu za funkcją ţOkno{}. Możliwe jest wyświetlanie kolejnych okien w celu uszczegółowienia informacji. [***] Powiadomienie - t94{treść;[operator];[priorytet]} lista [***] tKomunikat{treść;[operator];[priorytet]} lista Przykłady: ţKomunikat{Wydrukowano WZ;AA;} ţKomunikat{Faktura şNr dokum. ş ponad tKwota;DO;7} ţKomunikat{Inna wartość VAT w Fakt. şNr dokum. ş;;} Działanie: Wysyła wiadomość do operatora Parametry: * treść - treść wiadomości * operator - odbiorca powiadomienia * priorytet - 1 niski - 9 wysoki Funkcja wysyła wiadomość do operatora wykonującego wydruk lub innego. Np. * powiadamia magazyniera o wydrukowaniu dokumentu rozchodu * powiadamia o wydrukowaniu dokumentu o dużej wartości * powiadamia operatora, że wartości na dokumencie nie mieszczą się w ustalonych widełkach Do warunkowego powiadamiania należy użyć funkcji porównujących tPorównaj, tPorównajLiczby, tPorównajDaty. Pomocne są także funkcja obliczania wartości i rejestry. [***] Wysuw strony - tNowaStrona lista [***] t39 lista Przykład: ţOdb={sPla.s;} ţPorównajTeksty{sPla.s;ţOdb;;ţOdb={sPla.s} ţNowaStrona} Powoduje przejście do nowej strony. NOTE: Łamanie strony najlepiej robić na początku wydruku aby uniknąć wysuwu pustej strony po wydruku. [***] Nowa strona - tNowaStrona{[pozycja Y]} lista t95{pozycja Y} lista Przykłady: ţNowaStrona{150} ţNowaStrona{+20} ţNowaStrona{+4em} Działanie: Warunkowo łamie stronę Parametry: * pozycja Y - położenie względem górnej krawędzi kartki Funkcja grupuje linie tekstu w blok, tak aby tekst nie został podzielony między dwie strony. Realizacja polega na wcześniejszym, warunkowym złamaniu strony. Strona będzie złamana jeżeli: 1. Aktualne położenie Y jest dalsze od podanej pozycji lub 2. Podana pozycja leży poza obszarem wydruku Łamanie strony w podanych przykładach nastąpi gdy: ţNowaStrona{150} - kursor przekroczy 150mm ţNowaStrona{+20} - nie zmieści się 20mm wydruku ţNowaStrona{+4em} - nie zmieszczą się jeszcze 4 wiersze aktualnej wysokości ţNowaStrona{} - łamie stronę NOTE: Funkcja ţNowaStrona{} w większości przypadków powinna być umieszczona na końcu wiersza. Tekst i funkcje umieszczone w tym samym wierszu za funkcją ţNowaStrona{} zostaną wykonane już na nowej stronie ale przed wydrukiem linii typu S. To oznacza, że zostaną wydrukowane przed nagłówkiem strony co zwykle nie jest oczekiwanym rezultatem. [***] Funkcja - tNazwa{[p1;p2;p3;...]} lista [***] tNazwa~{definicja} lista [***] t96{nazwa;[definicja];[p1;p2;p3;...]} lista Przykłady: ţDodaj_1~{ ţ%1={0;} ţ%1={ţ={ţ%1 + 1}} ţ%1 } ţDodaj_1{Licznik} -> 1 ţDodaj_1{Licznik} -> 2 ţDodaj_1{Pozycja} -> 1 ţDodaj_1{Licznik} -> 3 ţProc~{ţ={ %1 / %2 * 100 ;999.9}} ţProc{1;5} -> 20.0 ţProc{ş-Ilosc wydana-ş;ş-Ilosc wyma-ş} ţFunkcja{Proc} -> Drukuje definicję funkcji ţProc Działanie: Definiuje lub wykonuje funkcję Parametry: nazwa - nazwa funkcji definicja - definicja funkcji p1,p2,p3.. - parametry przekazane do funkcji podczas wykonania Funkcja to jest zestaw poleceń lub instrukcji programowych zebranych pod jedną nazwą. Funkcje TrExtLang ułatwiają tworzenie rozwiązań programowych. Nie trzeba używać ciągu wielu instrukcji programowych. Wystarczy użyć funkcji z parametrami. Funkcje TrExtLang umieszcza się w różnych miejscach wzorca. Po napotkaniu funkcji we wzorcu, program wykonuje funkcję, tzn. wykonuje zapisane w niej polecenia. Do wykonywanej funkcji można przekazać parametry. Parametry w definicji zapisuje się jako %1, %2, %3, %4, itd. Podczas wykonania w miejscu %.. będzie wartość parametru. W powyższych przykładach parametrem %1 są słowa Licznik i Pozycja. Parametrami mogą być teksty, daty, pola, inne funkcje TrExtLang. Można przekazać listę parametrów: %... - lista wszystkich parametrów %.2. - lista parametrów począwszy od drugiego %.3. - lista parametrów począwszy od trzeciego, itd. Np. ţFont~{ţCzcionka{%...}} ţFont{Arial;10} ţTekstWkolorze~{ ţKolor{%.2.} %1 ţKolor{czarny;biały;1} } ţTekstWkolorze{Trawers;zielony;żółty;0.5} [***] Wiersz funkcji t~ lista [***] t~{...} lista Działanie: Cofa kursor o jeden wiersz Usuwa otaczające spacje z wiersza definicji funkcji ţ~ ułatwia umieszczanie na wzorcu wierszy, które nie zawierają tekstu do drukowania. Są to np. wiersze zapisujące w rejstrach wyniki obliczeń, wywołujące inne wydruki lub definiujące funkcje TrExtLang. Takie wiersze powodują powstanie pustego wiersza na wydruku i aby temu zapobiec trzeba cofać położenie kursora. ţ~ jest alternatywną dla funkcji cofającej kursor np. Pţ~ ţSuma{Wynik;tWartości[]} ţ~ w treści definicji funkcji podowuje usunięcie otaczających spacji. To umożliwia formatowanie treści funkcji. np. Bez użycia ţ~ wierszy definicji funkcji nie można poprzedzać spacjami ponieważ będą one treścią funkcji i zostaną wydrukowane podczas przetwarzania funkcji. TţPorównaj{s--pole-s;XYZ; TţZróbCoś{arg1; Targ2}; TţZróbCośInnego{arg3; Targ4} T} ţCofnijWiersz Użycie t~ zwiększa czytelność wzorca. Program usunie spacje z definicji i nie wydrukuje zbędnego pustego wiersza: Tţ~ ţPorównaj{s--pole-s;XYZ; Tţ~ ţZróbCoś{arg1; Tţ~ arg2}; Tţ~ ţZróbCośInnego{arg3; Tţ~ arg4} Tţ~ } W razie potrzeby wydrukowania spacji można ująć tekst w ţ{...}. Otoczenie tekstu ţ{...} ułatwia rozpoznanie ile spacji zostanie wydrukowanych. Tt~ ţZróbCoś{arg1; Tt~ ţ{ arg2} Tt~ } [***] Nazwa pliku - t97{nazwa;[.ext][;]} lista [***] tNazwijPlik{nazwa;[.ext]} lista [***] tNazwaPliku{nazwa;[.ext]} lista Przykłady: ţNazwijPlik{Faktura şNr dokum. ş;} ţNazwijPlik{Faktura şNr dokum. ş z dnia 20şData wş;} ţNazwijPlik{şPla.ş - FA şNr dokum. ş;} ţNazwijPlik{şPla.ş - FA şNr dokum. ş;xml} ţNazwijPlik{Wydruk ş---Data i czas---ş;.xhtml} ţNazwijPlik{Raport ş---Data i czas---ş;.csv} ţNazwaPliku{Faktura şNr dokum. ş;} -> Faktura FV0001-09-19.pdf Działanie: Ustala nazwę tworzonego pliku wydruku Parametry: nazwa - nazwa pliku ext - rozszerzenie nazwy pliku np. xml Funkcja ţNazwijPlik{} zmienia nazwę tworzonego pliku z losowej na wskazaną. Można to wykorzystać do np. tworzenia archiwum wydruków faktur w postaci plików pdf, np. 001234_Firma_Alfa_FV5811-07-10. Aby po wydrukowaniu na drukarce, dodatkowo utworzyć plik i zapisać do archiwum, to należy użyć wydruku kaskadowego ţInnyWydruk{} do utworzenia pliku i urządzenie: Polecenie, aby skopiować plik do katalogu archiwum. Dodatkowe uwarunkowania: * W urządzeniu: Plik, należy wybrać: nadawanie nazwy przez program Jeżeli nazwa jest wpisana przez operatora, to nie będzie zmieniona * Nazwa pliku powinna być unikalna. Jeżeli plik o podanej nazwie już jest, to może zostać nadpisany * Znaki zabronione w nazwie pliku będą zastąpione znakiem '-' * Jeżeli nie będzie rozszerzenia pliku [ext], to ustali rozszerzenie wg użytego urządzeniem wyjściowego * Przy wydruku na drukarkę, ekran itd. funkcja ţNazwijPlik{} jest ignorowana Przykład zamieszczono w dokumentacji: Trawers_Wzorce.pdf [***] Marginesy - tMarginesy{[górny];[dolny];[lewy];[prawy]} lista [***] t98{[górny];[dolny];[lewy];[prawy]} lista Przykłady: ţMarginesy{10;15;10} Działanie: Ustala nowe marginesy strony Parametry: górny - margines górny dolny - margines dolny lewy - margines lewy prawy - margines prawy (tylko Win32, CUPS, PDF) Ustala marginesy strony. Lewy margines określa domyślną niezadrukowaną szerokość od lewej krawędzi strony. Górny wyznacza odległość od górnej krawędzi kartki od której będzie umieszczany tekst na nowej stronie. Dolny określa odległość od dolnej krawędzi kartki po dotarciu do której program przejdzie do nowej strony. Zaleca się użycie tego znaku na początku każdego wzorca graficznego [***] Komentarz - t99{[komentarz]} lista [***] t#{[komentarz]} lista [***] t# [komentarz] lista Przykłady: ţ#{Nagłówek strony} sMs ţ# komentarz liniowy Działanie: Wstawia komentarz Parametry: * komentarz Umieszcza niedrukowany tekst wewnątrz wzorca. Komentarz liniowy t# traktuje wszystkie znaki do końca linii oraz spacje przed nim jako tekst do pominięcia. Przykład: Tţ{ T Rumia ţ# miejscowość T Targowa ţ# ulica T} Powyższy zapis spowoduje wydruk: Rumia Targowa Spacje po słowie Rumia i treść komentarza nie zostaną wydrukowane. Komentarz może być też całoliniowy. Służy do tego typ linii [#] Linie typu [#] są całkowicie pomijane podczas wydruku. Oznacza to, że: - linia [#] nie jest drukowana. Kursor nie jest przesuwany - linia [#] nie jest analizowana. Funkcje nie są przetwarzane Przykład: T Linia 1 >>>ţ#{Nagłówek strony}ţA={100}ţ#{Zainicjuj rejestr A}<<< # Ta linia nie pojawi się na wydruku # ţA={500} tu rejestr nie zostanie zainicjowany T Linia 2 Powyższa sekwencja spowoduje wydruk: Linia 1 >>><<< Linia 2 oraz zainicjowanie rejestru A wartością 100 [***] Opóźniona analiza - tA02{tekst} lista Przykłady: ţRejestr={AAA} ţTabela[]{ţRejestr} Program wpisze do tabeli AAA ţRejestr={BBB} ţTabela[] -> na wydruku AAA ţRejestr={AAA} ţTabela[]{ţA02{ţRejestr}} Program wpisze do tabeli wyrażenie tRejestr ţRejestr={BBB} ţTabela[] -> na wydruku BBB ţFormatDaty{123.45;ţA02{ţUsuńSpacjezLewej{GGGGGG godz}}} Działanie: Odkłada analizę składniową na późniejszy etap Parametry: * tekst - wyrażenie z funkcjami ţA02 pozwala przekazać jako parametr wyrażenie z funkcjami, które w innym przypadku zostałyby przetworzone przed przekazaniem. [***] Nie wykorzystane A03 lista [***] tInc{rejestr[;format]} lista Dodaje 1 do wskazanego rejestru i drukuje. Rejestr jest jednorazowo inicjowany przy pierwszym wywołaniu funkcji. Można np. użyć w linii [P] do numerowania pozycji: ţInc{Lp} [***] tProcent{X;Y} lista Oblicza procent ţProcent{ţX;ţY} zwróci (ţX / ţY) * 100 [%] ţProcent{1;5} zwróci 20.00 [%] ţProcent{5;1} zwróci 500.00 [%] [***] tDekret{ţZawiń{ş----DEKRET----ş;78em}} lista Formatuje wydruk pieczątki dekretacyjnej umożliwia wydruk dowolną czcionką np. Arial ţDekret{ţZawiń{ş----DEKRET----ş;78em}} [***] tSuma{rejestr;wartość[;format]} lista Dodaje wartość do wskazanego rejestru ţSuma{Razem;ş-Ilosc wydana-ş} tRazem [***] tHttpGetParam{nazwa ţ...[];adres URL} lista Zapisuje w wierszach tabeli ţ...[] parametry przekazane w formacie HTTP GET ţHttpGetParam{Parametry;http://maps.google.pl/?ll=54.518877,18.543476&t=m&z=19} ţParametry[ll] -> 54.518877,18.543476 ţParametry[t] -> m ţParametry[z] -> 19 [***] tRegex{wyrażenie reg;część;tekst} lista Zwraca fragment tekstu odpowiadający wyrażeniu regularnemu Dodatkowo pozwala na wskazanie części tekstu wyrażenia, który będzie zwrócony ţRegex{\[TR:SI([^\]]+)\];2;Proszę o fakturę [TR:SI?nr=F0001/10/13]} Zwróci fragment odpowiadający części wyznaczonej nawiasami (): ?nr=F0001/10/13 Poszczególne części przyjmą wartości: 1 -> [TR:SI?nr=F0001/10/13] 2 -> ?nr=F0001/10/13 [***] tTabelaWrejestr{tabela ţ...[];separator} lista [***] t62->70{tabela ţ...[];separator} lista Przepisuje wiersze tabeli ţ...[] do rejestru ţ... Pozwala wydrukować zawartość tabeli w jednej linii. Pierwszy parametr to nazwa tabeli i jednocześnie nazwa rejestru do którego będzie przepisana tabela. Drugi parametr to separator, użyty do oddzielenia poszczególnych wierszy. Przykład: ţTabelaWrejest{Zamowienia;, } tZamowienia Jeżeli tabela 'Zamowienia' zawiera: ZA0001/01/13 ZA0002/01/13 ZA0003/01/13 to program zapisze w rejestrze 'Zamowienia': ZA0001/01/13, ZA0002/01/13, ZA0003/01/13 [***] tUsuń{znaki do usunięcia;tekst} lista Usuwa znaki z tekstu Pozwala usunąć zbędne znaki, cyfry i litery z tekstu. ţUsuń{ -;s--NIP--s} -> NIP bez kresek i spacji ţUsuń{ -;123-45-6789-0} -> 1234567890 ţUsuń{"';s--nazwa--s} -> nazwa bez apostrofów i cudzysłowów ţUsuń{,. ;s--ilosc--s} -> ilość bez kropek,przecinków i spacji ţUsuń{,. ; 123,456.78} -> 12345678 [***] tZastąp{szukany ciąg;wstawiany ciąg;tekst} lista Szuka i zamienia fragmenty tekstu Pozwala usunąć lub zamienić literę lub ciąg znaków w tekście. Pierwszy parametr to szukany znak, litera lub wyraz. Drugi parametr to wyraz którym zostanie zastąpiony znaleziony. Wyraz szukany i wstawiany mogą różnić się długością. Trzeci parametr to przeszukiwany tekst lub pole dla wzorca. ţZastąp{.;,;t64{s--ilosc--s;9 999.99}} -> 1 234,56 ţZastąp{.;;t64{s--ilosc--s;9999.99}} -> 123456 ţZastąp{szt;each;şJmsş} kg -> kg szt -> each [***] tCenaSpr{p1;[p2];[p3];[p4];[p5];[p6];[p7];[p8];[p9];[p10]} lista [***] tCenaZak{p1;[p2];[p3];[p4];[p5];[p6];[p7];[p8];[p9];[p10]} lista Wstawia cenę z cennika sprzedaży w MI Wstawia cenę z cennika zakupu w ZA p1 - Indeks KIM p2 - nr ceny: 1,2,3,4,5,6 (domyślnie: 1) p3 - typ cennika: 60,50,40,30,25,20,10 Gdy p3 jest pusty to zwraca aktualną cenę asortymentu Cenniki sprzedaży Cenniki zakupu p4 - magazyn, np. 01 p5 - waluta, np: EUR (domyślnie: PLN) p6 - grupa kontrahenta, np. 00 p7 - symbol kontrahenta, np. 000001 p8 - symbol adresu wysyłkowego, np. AD0001 p9 - data, np. 2015-05-22 (domyślnie: dziś) p10- godzina, np. 12:45 (domyślnie: teraz) Przykłady: ţCenaSpr{sIndeks towaru s;4;60} --> cena 4 z cennika PLN katalogowego ţCenaSpr{sIndeks towaru s;2;60;;EUR} --> cena 2 z cennika EUR katalogowego ţCenaSpr{sIndeks towaru s;1;50,01} --> cena 1 z cennika PLN dla mag 01 ţCenaSpr{sIndeks towaru s;3;30;;;;şOdb.ş} --> cena 3 z cennika PLN kontraktowego ţCenaZak{sIndeks towaru s;5;60} --> cena 5 z cennika zakupu PLN katalogowego [***] tKontakt{p1;p2;[p3];[p4];[p5];[p6];[p7];[p8];[p9];[p10]...[p24]} lista Zapisuje planowany kontakt w terminarzu RK [***] tKontaktOK{p2;[p3];[p4];[p10]...[p24]} lista Zapisuje wykonanie kontaktu (zdarzenia) z rezultatem: OK Można wykorzystać do zaplanowania kontaktu z klientem np. zaplanować wykonanie telefonu po wysłaniu lub przygotowaniu oferty Można też użyć do odnotowania kontaktu z klientem np. po wysłaniu dokumentu do przedstawiciela handlowego można zapisać kontakt w powiązaniu z klientem, którym opiekuje się ten przedstawiciel Kontakt może być zakończony lub planowany we wskazanym dniu i godzinie. Kontakt zostanie zapisany po poprawnym zakończeniu wydruku. Jeżeli wydruk zostanie przerwany, to kontakt nie zostanie zapisany. ţKontakt{p1;p2;[p3];[p4];[p5];[p6];[p7];[p8];[p9];[p10]...[p24]} ţKontaktOK{p2;[p3];[p4];[p10]...[p24]} p1 - jedna z wartości: O,NA,D,ZO O,NA - odbiorca D,ZO - dostawca p2 - symbol kontrahenta, np. 000001 p3 - symbol kontaktu (domyślnie: pusty) p4 - nazwa kontaktu (domyślnie: pusty) p5 - symbol operatora (domyślnie: zalogowany) p6 - data i czas, np. 2016.10.12 11:00 (domyślnie: teraz) p7 - symbol celu (domyślnie: pusty) p8 - symbol rezultatu (domyślnie: pusty) Gdy p8 jest pusty to kontakt zostanie pokazany na liście planowanych kontaktów p9 - opis rezultatu (domyślnie: pusty) p10-p24 - linie opisu (domyślnie: puste) [***] tRekord{zbiór;klucz indeksu 1;[nazwa ţ...[]];[rok/data];[mc];[sfirmy]} lista Pobiera rekord z bazy danych do tabeli ţ...[] Pozwala wydrukować wartość pola, które jest w bazie danych a nie ma w tabeli pól dla wzorców. Podczas drukowania program sięga bezpośrednio do wskazanego rekordu w zbiorze i pobiera wartość pola (pól) Parametry: zbiór - symbol zbioru (Słownik danych - opisy zbiorów) indeks 1 - wartość dla Indeks 1 (Słownik danych - opisy zbiorów) Program wyszuka pierwszy zgodny rekord np. zbiór 245 Indeks1 upper(ident+symbol+symop+idrola) Wartość parametru dla rodzaju opakowania becz: EBECZ Wielkość liter nie ma znaczenia. nazwa ţ...[]- nazwa tabeli do której zostaną wpisane pola (domyślnie pusta []) rok/data - wymagany dla zbiorów okresowych Można podać rok obliczeniowy lub datę dokumentu mc - wymagany dla zbiorów okresowych miesięcznych Można pominąć jeżeli podano datę dokumentu sfirmy - symbol firmy (domyślnie firma bieżąca) Przykłady: ţRekord{229;sIndeks towaru s;KIM} --> wczytanie karty indeksu do ţKIM[] ţKIM[OPAKOWAN] --> wydruk symbolu opakowania ţRekord{245;EţKIM[OPAKOWAN];Opakowanie} --> wczytanie rekordu z Tab mag, grup, Jm MG ţOpakowanie[NAZWA] --> wydruk nazwy opakowania ţOpakowanie[WART1] --> wydruk wagi opakowania ţRekord{402;sSymbol Q12s;TabelaQ12} --> wczytanie nazwy symbolu Q12 ţTabelaQ12[nazwa]} --> wydruk nazwy [***] tKIM{indeks[;nazwa ţ...[]]} lista Pobiera kartę z KIM do tabeli ţ...[] Przykłady: 1. Wymiary z karty KIM tKIM{sIndeks towaru s;KIM} ţKIM[Wysok] x ţKIM[Szero] --> wydruk wymiarów 2. Ile potrzeba palet ? ţKIM{şWy-Indeks tow ş;KIM} ţPalet={ţ={şWy Ilosc ---ş * ţKIM[WSSPRZ] / ţKIM[PLILOSC]}} ţPalet={ţ>L{ţPalet;ţFormat{ţPalet;99};ţ={ţPalet +1;99};ţFormat{ţPalet;99}} Ilość na palecie: ţKIM[PLILOSC] ţKIM[JM] Potrzeba palet : ţPalet [***] tKSOM{magazyn;indeks[;nazwa ţ...[]]} lista Pobiera kartę z KSOM do tabeli ţ...[] Przykład: tKSOM{10;sIndeks towaru s;Ksom} ţKsom[milosc] --> ilość w magazynie 10 [***] tOdbiorca{symbol[;nazwa ţ...[]]} lista [***] tDostawca{symbol[;nazwa ţ...[]]} lista Pobiera kartę kontrahenta do tabeli ţ...[] ţOdbiorca{symbol[;nazwa ţ...[]]} Przykład: ţOdbiorca{sPla.s;Płatnik} ţPłatnik[ODODNUME] -> Wyróżnik - zakładka dane finansowe [***] tGrupa{symbol[;nazwa ţ...[]]} lista Pobiera kartę grupy towarowej Przykład: ţGrupa{sQs;Grupa} ţGrupa[nazwa] --> nazwa grupy towarowej [***] tJm{symbol[;nazwa ţ...[]]} lista Pobiera jednostkę zapasu (magazynowania) Przykład: ţJm{szt;Jm} ţJm[nazwa] --> nazwa jednostki [***] tOpak{symbol[;nazwa ţ...[]]} lista Pobiera jednostkę opakowania Przykład: ţOpak{becz;Opakowanie} ţOpakowanie[nazwa] --> nazwa opakowania o symbolu becz [***] tGmina{symbol[;nazwa ţ...[]]} lista [***] tPowiat{symbol[;nazwa ţ...[]]} lista [***] tWojewództwo{symbol[;nazwa ţ...[]]} lista Pobiera pozycję z tabeli jednostek terytorialnych Przykład: ţWojewództwo{16;Woj} ţWoj[nazwa] --> nazwa województwa 16 [***] tNazwaKraju{symbol} lista Zwraca nazwę kraju dla podanego symbolu Przykład: ţNazwaKraju{PL} --> Polska ţNazwaKraju{DE} --> Niemcy ţNazwaKraju{şHş} --> nazwa kraju nabywcy [***] tSłownie{wartość[;waluta[;język]]} lista Zwraca wartość wyrażoną słownie w podanym języku Dostępne języki to PL, EN i DE Przykłady: ţSłownie{şPozycja-nettoş} ţSłownie{şPozycja-netto wlş;şcWaş} ţSłownie{şPozycja-netto wlş;şcWaş;EN} ţSłownie{şPozycja-netto wlş;şcWaş;ş+ş} ţSłownie{şPozycja-nettoş;PLN;ş+ş} ţZawiń{ţSłownie{şPozycja-nettoş};60em} NOTE: Długi tekst [słownie] można podzielić na wiersze: ţZawiń{} [***] tCRLF{tekst1[;tekst2[;teskt3...]]} lista Rozdziela tekst znakami nowego wiersza [CRLF] Przykłady: ţZawiń{ţCRLF{şImieş;şNazwiskoş};} ţQR{ţCRLF{BEGIN:VCARD;FN:ş-Firma-nazwa-ş;TEL:şFirma-tel.1ş;END:VCARD};;} Występuje też w postaci rejestru tCRLF ţZawiń{şImieşţCRLFşNazwiskoş;30em} [***] tFor{X;Y;Z;tekst} lista Realizuje pętlę programową: for i = X to Y step Z Aktualny stan [i] zapisuje w rejestrze tFOR Przykłady: ţFor{5;14;3; tFOR} -> 5 8 11 14 ţFor{14;5;-3; tFOR} -> 14 11 8 5 [***] tWhile{warunek;tekst} lista Realizuje pętlę programową: while !empty(war()) ... Przykłady: ţI={0} ţWhile{ţ<L{ţInc{I};4;;T};ţI} -> 1 2 3 ---------------- -- war I < 4 tekst [***] tPowtórzDopóki{warunek;tekst} lista Realizuje pętlę programową: while war() ... Przykład: ţLp={0} ţPowtórzDopóki{ţInc{Lp} < 4; ţLp} -> 1 2 3 ------------- --- war Lp < 4 tekst [***] tUntil{tekst;warunek} lista Realizuje pętlę programową: do ... until !empty(war()) Przykłady: ţI={0} ţUntil{ţI;ţ<L{ţInc{I};4;;T}} -> 1 2 3 4 -- ---------------- tekst war I < 4 [***] tPowtórzJeżeli{warunek;tekst} lista Realizuje pętlę programową: do ... until war() Przykład: ţPowtórzJeżeli{ţWartość > 5; ţOkno{Wybór;Proszę podać wartość <= 5}} ţLp={0} ţPowtórzJeżeli{ţInc{Lp} < 4; ţLp} -> 0 1 2 3 ţPowtórzJeżeli{ţLp < 4; ţInc{Lp}} -> 1 2 3 4 ------------- --- war Lp < 4 tekst [***] tPrzerwijPowtarzanie lista Zatrzymuje kolejne iteracje pętli programowej Przykład: tPowtórzDopóki{ţInc{Lp} < 4; ţPrzerwijPowtarzanie ţLp} -> 1 ------------- --- war Lp < 4 tekst [***] tIndeks1{zbiór;[nr indeksu];[fraza];[nazwa ţ...[]];[rok];[mc];[sfirmy]} lista Pobiera wartości klucza indeksowego z bazy danych do tabeli: ţ...[] Łącznie z tRekord{} pozwala wydrukować wiele rekordów z bazy danych, np. komponenty zestawu z kartoteki zestawów sprzedażnych. Parametry: zbiór - symbol zbioru (Słownik danych - opisy zbiorów) nr indeksu - nr przeszukiwanego indeksu (Słownik danych - opisy zbiorów) (domyślnie: 1) fraza - szukana wartość klucza indeksowego Program wyszuka rekordy, których wartości klucza indeksowego rozpoczynają się od podanej frazy. Wielkość liter nie ma znaczenia. np. W zbiorze 245 indeks 1 ma postać: upper(ident+symbol+symop+idrola) Wartości kluczy indeksowe mogą być następujące: G01 AAR1 G02 AAR1 EBECZ EOPAK M01 M02 Aby wybrać rekordy dotyczące opakowań należy podać parametr fraza: E nazwa ţ...[] - nazwa tabeli, do której zostaną wpisane klucze (domyślnie: TR_INDEKS1) rok/data - wymagany dla zbiorów okresowych miesięcznych i rocznych Można podać rok obliczeniowy lub datę dokumentu mc - wymagany dla zbiorów okresowych miesięcznych Można pominąć jeżeli podano datę dokumentu sfirmy - symbol firmy (domyślnie firma bieżąca) Przykład 1: wydruk nazw komponentów P ţIndeks1{370;;sIndeks towaru s;Zestaw} # wczytanie wartości kluczy zestawu sprzedażnego podanego indeksu # do tabeli ţZestaw[] P ţRekord{370;ţZestaw[];Pozycja}ţKIM{ţPozycja[COMPONEN];Komponent}ţKomponent[INAZWA] # wczytanie pól komponentu z KIM do ţKomponenţ...[] # i wydruk nazwy komponentu NOTE: Pobranie wartości przez ţRekord{} i ich wydruk musi być zapisany w jednym wierszu. Dla zwiększenia czytelności można użyć ţA02{} i zapisu wieloliniowego stosując ţA02{} P ţA02{ P ţRekord{370;ţZestaw[];Pozycja} P ţKIM{ţPozycja[COMPONEN];Komponent} P ţKomponent[INAZWA] P } [***] tIndeks1Reg{zbiór;[nr indeksu];[regex];[nazwa ţ...[]];[rok];[mc];[sfirmy]} lista Pobiera wartości klucza indeksowego 1 z bazy danych do tabeli: ţ...[] Do wyszukania rekordów pobiera wyrażenie regularne. Parametry: zbiór - symbol zbioru (Słownik danych - opisy zbiorów) nr indeksu - nr przeszukiwanego indeksu (Słownik danych - opisy zbiorów) regex - wartość dla Indeks w formie wyrażenia regularnego Program wyszuka rekordy, których wartości indeksu [nr indeksu] rozpoczynają się od podanej wartości np. zbiór 245 Indeks 1 upper(ident+symbol+symop+idrola) Wartość parametru dla rodzajów opakowań: E Wielkość liter nie ma znaczenia. W celu znalezienia rekordów zawierających tekst trzeba wyrażenie rozpocząć od .* nazwa ţ...[] - nazwa tabeli do której zostaną wpisane pola (domyślnie TR_INDEKS1) rok - wymagany dla zbiorów okresowych mc - wymagany dla zbiorów okresowych miesięcznych sfirmy - symbol firmy (domyślnie firma bieżąca) Przykłady: Odszukanie i wydrukowanie zestawów sprzedażnych w których występuje indeks PţIndeks1Reg{370;;.{16}ţDoRegex{sIndeks towaru s};Zestawy} --> wczytanie wartości kluczy zestawów sprzedażnych do ţZestawy[] PţRekord{370;ţZestawy[];Pozycja}ţKIM{ţPozycja[SALESKIT];Zestaw} --> wczytanie pól zestawu z KIM do ţZestaw[] ţZestaw[INAZWA] --> wydruk nazwy zestawu [***] tDoRegex{tekst1;tekst2;tekst3;.... } lista Przekształca tekst na wyrażenie regularne Przykłady: ţDoRegex{ZESTAW-SPRZEDAZNY} -> ZESTAW\-SPRZEDAZNY ţDoRegex{s--- indeks ---s} ţDoRegex{tNazwa;tMiasto} -> Tres.*Gdynia [***] tCSV{linia CSV;nazwa ţ...[]} lista Pobiera pola linii CSV do tabeli ţ...[] [;] Separator pól ["] Ogranicznik tekstu Przykłady: ţCSV{ţTreśćPliku{plik.csv;};CSV} ţCSV[1] ţCSV[2] ţCSV[3] ... Aby zmienić separator pól lub ogranicznik tekstu: ţCSV_REGX={ţZastąp{ţ{;};,;ţCSV_REGX}} ţCSV_REGX={ţZastąp{";';ţCSV_REGX}} Rejestr tCSV_I zawiera odczytaną ilość pól Kolejne pola można wybierać przez pozycje: ţCSV[1] ţtCSV[2] [***] tRaport{symbol;[format];[nazwa pliku];[katalog];[formatCSV]} lista Wykonuje RaportXML i eksportuje go do pliku. Zwraca ścieżkę do utworzonego pliku z raportem. symbol - symbol raportu format - DBF, CSV, XML (domyślnie wg definicji) nazwa pliku - ? - unikalna (domyślnie wg definicji) katalog - (domyślnie wg definicji) format CSV - tylko dla CSV (domyślnie 0) 0 - Excel PL, Calc 1 - ist@t2 9 - Trawers Przykłady: ţRaport{MG0001} ţRaport{ISTAT2;;;;1} [***] tRaportCSV{symbol raportu} lista Eksportuje RaportXML w formacie CSV do katalogu trtemp\ Tak utworzony plik można wczytać tTreśćPliku{} i dalej przetwarzać w treści alertu lub wydruku. Przykład: ţPlik_z_raportem={ţRaportCSV{MG0001}} ţTreśćPliku{ţPlik_z_raportem} ţCSV{ţTreśćPliku{ţPlik_z_raportem};CSV} ţCSV[1] ţCSV[4] [***] tAlert{symbol[;powtórz po N dni]} lista Wykonuje alert z Tabeli Alertów symbol - symbol alertu powtórz po dni- po ilu dniach ponownie ująć (domyślnie wg definicji) już raportowane rekordy - powtórzy zgodnie z definicją alertu N - bez powtarzania T - ponownie ujmie już raportowane rekordy 0 - ponownie ujmie już raportowane rekordy 14 - ponownie ujmie rekody raportowane przed 14 dniami 0.5 - ponownie ujmie rekody raportowane przed 12 godzinami 0.003472 - ponownie ujmie rekody raportowane przed 5 minutami Przykłady: ţAlert{AL0001} ţAlert{AL0001;14} ţAlert{AL0001;0} ţAlert{AL0001;T} ţAlert{AL0001;N} Alerty i raportowanie [***] tUruchom{program[;dane wejściowe]} lista Uruchamia program i zwraca dane wyjściowe (stdout) program - nazwa programu lub polecenia dane wejściowe - dane do standardowego strumienia wejścia (stdin) Przykłady: ţUruchom{md5sum;Trawers} ţUruchom{CenaTransportu.bat "tŁącznaWaga " "tMaxWymiar "} ţUruchom{sh -c "ulimit -Sn"} ţZawiń{ţUruchom{ls}} ţZawiń{ţUruchom{dir}} ţUruchom{evince} ţUruchom{xterm mc} ţDummy={ţUruchom{Skrypt.sh}} Zwrócono -> tErrorLevel Program umieszcza zwrócony kod statusu wyjścia (en: exit status) w rejestrze ţErrorLevel W sytuacji gdy wykonywany program nie zwróci nic przez standardowe wyjście i jednocześnie zakończy pracę ustawiając kod wyjścia różny od 0 to na wydruku pojawi się informacja o błędzie: !!! ErrorLevel = NNN Informację o błędzie można ukryć wpisując wynik do dowolnego rejestru: ţWersja={ţUruchom{p7zip --version}} ţ>0{ţErrorLevel; ţKomunikat{Proszę zainstalować 7zip} ţPrzerwij} [***] tIle{tekst[;szukany ciąg]} lista Zwraca liczbę znaków w tekście albo ilość wystąpień ciągu ţIle{tekst[;szukany ciąg]} ţIle{Trawers} -> 7 ţIle{Trawers;r} -> 2 ţIle{s--pole memo--s;tCRLF} [***] tIleReg{tekst;regex} lista Zwraca liczbę ciągów zgodnych z wyrażeniem regularnym ţIle{Trawers;r} -> 2 ţIle{tWydruk;^.*Żarówka.*led.*$} [***] tIleWierszy{nazwa ţ...[]} lista Zwraca liczbę pozycji w tabeli ţ...[] [***] tDzieńTygodnia{[data]} lista Zwraca nr kolejny dnia tygodnia dla podanej daty Jeżeli nie podano daty to zwraca aktualny dzień tygodnia ţDzieńTygodnia{şData wş} ţDzieńTygodnia{} [***] tDzieńMiesiąca{[data]} lista Zwraca nr dnia w miesiącu dla podanej daty Jeżeli nie podano daty to zwraca aktualny dzień ţDzieńMiesiąca{şData wş} ţDzieńMiesiąca{} [***] tMiesiącRoku{[data]} lista Zwraca nr kolejny miesiąca w roku dla podanej daty Jeżeli nie podano daty to zwraca aktualny miesiąc ţMiesiącRoku{şData wş} ţMiesiącRoku{} [***] tDzieńRoku{[data]} lista Zwraca nr kolejny dnia w roku dla podanej daty Jeżeli nie podano daty to zwraca aktualny dzień w roku ţDzieńRoku{şData wş} ţDzieńRoku{} [***] tTydzień{[data]} lista Zwraca nr tygodnia w roku dla podanej daty Jeżeli nie podano daty to zwraca nr aktualnego tygodnia ţTydzień{şData wş} ţTydzień{} [***] tEmailTemat{[temat]} lista Zmienia temat wysyłanego e-maila (tylko urządzenie rodzaju: [Email]) Przykłady: ţEmailTemat{Faktura VAT nr şNr dokum. ş} ţEmailTemat{ } -> usunięcie tematu; program zapyta o temat ţEmailTemat{} -> zwróci temat [***] tEmailDo{[e-mail]} lista Zmienia adres e-mail adresata (tylko urządzenie rodzaju: [Email]) Przykłady: ţEmailDo{biuro@domena7.pl} ţEmailDo{tOsoba[KOEMAIL]} ţEmailDo{ } -> usunięcie adresu; program zapyta o nowy adres ţEmailDo{} -> zwróci e-mail adresata [***] tEmailEdycja{T/N} lista Zmienia parametr: Edytuj przed wysyłką (tylko urządzenie rodzaju: [Email]) Przykłady: ţEmailEdycja{T} ţEmailEdycja{N} ţEmailEdycja{Tak} ţEmailEdycja{Nie} ţEmailEdycja{} -> zwróci wartość parametru T/N [***] tEmailSkrzynka{[symbol skrzynki pocztowej]} lista Zmienia parametr: Skrzynka nadawcza (tylko urządzenie rodzaju: [Email]) Przykłady: ţEmailSkrzynka{BI} ţEmailSkrzynka{} -> zwróci wartość parametru Operator wysyłający wydruk e-mailem musi mieć uprawnienia do skrzynki [***] tEmailOdbiorca{[symbol odbiorcy]} lista [***] tEmailDostawca{[symbol dostawcy]} lista [***] tEmailPracownik{[symbol pracownika]} lista Wiąże wysyłany e-mail z kontrahentem (tylko urządzenie rodzaju: [Email]) Przykłady: ţEmailOdbiorca{sPla.s} -> powiązanie z sPla.s ţEmailOdbiorca{ } -> usunięcie powiązania ţEmailOdbiorca{} -> odczyt aktualnego powiązania [***] tEmailSystem{} lista Zwraca symbol systemu z kartą kontrahenta NA,ZO,PL (tylko urządzenie rodzaju: [Email]) Przykłady: ţEmailSystem{} -> NA Tylko odczyt wartości parametru. Zmiana funkcjami tEmailOdbiorca, tEmailDostawca, tEmailPracownik [***] tEmailOznacz{skrzynka;UID;[operator]} lista Oznacza e-mail symbolem operatora skrzynki - symbol skrzynki pocztowej UID - identyfikator e-maila w bazie danych operator - symbol operatora (domyślnie bieżący) Przykłady: ţEmailOznacz{BI;ţEmail[UID];} -> bieżący operator ţEmailOznacz{BI;ţEmail[UID];AA} ţEmailOznacz{BI;ţEmail[UID]; } -> usunięcie oznaczenia Nie można użyć na aktualnie wysyłanym e-mail [***] tEmailPrzenieś{skrzynka;UID;folder} lista Przenosi e-mail do innego folderu skrzynka - symbol skrzynki pocztowej UID - identyfikator e-maila w bazie danych folder - symbol lub nazwa folderu Przykłady: ţEmailPrzenieś{BI;ţEmail[UID];04} -> przenieś do Kosz ţEmailPrzenieś{BI;ţEmail[UID];Odrzucone} -> przenieś do Odrzucone Operator musi mieć uprawnienia do skrzynki Nie można użyć na aktualnie wysyłanym e-mail ponieważ jeszcze nie jest zapisany [***] tPolecenieParametr{nazwa parametru;wartość} lista Parametr wywołania polecenia systemu operacyjnego (tylko urządzenie rodzaju: [Polecenie]) Przykład przeniesienia pliku z wydrukiem do katalogu odbiorcy: ţPolecenieParametr{katalog_odbiorcy; W:\archiwum\zamówienia\s--odbdost--s\} Polecenie: MOVE /Y &zbior& &katalog_odbiorcy& lub z położeniem katalogu zapisanym w urządzeniu: ţPolecenieParametr{odbiorca;s--odbdost--s} Polecenie: MOVE /Y &zbior& W:\archiwum\zamówienia\&odbiorca&\ Przykład wywołania procesu odebrania nowej poczty e-mail: ţPolecenieParametr{operator;AA} ţPolecenieParametr{firma;MT} ţPolecenieParametr{proces;RK_PEM12} Polecenie: tr5x64.exe --operator=&operator& --firma=&firma& --proces=&proces& Można przekazać wiele parametrów w jednym: ţPolecenieParametr{parametry;--operator=AA --firma=MT --proces=RK_PEM12} Polecenie: tr5w64.exe ¶metry& [***] tTTS{tekst;par1;par2} lista Odczytuje tekst na głos tekst - tekst do odczytania par1 - dodatkowy (domyślnie język operatora) par2 - dodatkowy (domyślnie symbol operatora) Przykłady: ţTTS{Kwota do zapłaty s--brutto--s zł} ţTTS{Awaria maszyny tMaszyna;PL;Jacek ţKomunikat{Awaria maszyny @MASZYNA ţA02{ţTTS{Awaria maszyny @MASZYNA}}; AA;7} Parametry par1 i par2 zostaną przekazane do skryptu: tr-powiedz i mogą być wykorzystane do konfiguracji syntezatora, np. wybór języka. Operator musi mieć wybraną i skonfugurowaną metodę połączenia TTS Synteza mowy TTS Text-To-Speech [***] tSOA{soap} lista Wykonuje funkcję SOA soap - funkcja SOA lub komunikat soap do wykonania Przykłady: ţZawiń{tSOA{About};} ţSOA{<Envelope><Header/><Body><About/></Body></Envelope>} ţSOA{ <Customers> <changeSince>ţRóżnicaDat{tDataSys;7;RRRR-MM-DD}</changeSince> </Customers>} Parametr soap może być w formacie SOAP lub zawierać tylko część <Body>. Funkcje nie wymagające parametrów można wywołać podając tylko nazwę. NOTE: funkcje SOA można także wywoływać w alertach. Alerty i raportowanie. Opisy Przykład wywołania w alercie jest w opisie funkcji [SetARStatus] SOA Funkcje OutBound i InBound [***] tDoXml{tekst} lista Konwertuje znaki &<>" do postaci stosowanej w XML tekst - tekst do zapisu w XML Przykłady: ţDoXml{ A < B } --> A lt; B ţSOA{<OrderNew> <CustomerKey>tDoXML{s--odbiorca--s}</CustomerKey> <ProductKey>tDoXML{s---indeks---s}</ProductKey> </OrderNew>} [***] tZałączWydrukPDF{idProces[;p1][;p2][;p3][;...]} lista Zapisuje wydruk w pliku w formacie PDF i załącza do bieżącego wydruku. Umożliwia załączenie dodatkowych zestawień lub dokumentów do e-maila Parametry są identyczne z tWstawWydruk{} Przykład: ţZałączWydrukPDF{NA;FA;KOPIAFAK;şNr dokum. ş} W odróżnieniu od tWstawWydruk tworzony jest osobny wydruk podobnie jak w tInnyWydruk ale nie jest drukowany tylko załączany jak w tZałącz. Pozwala to załączyć do e-maila kilka wydruków zamiast wysyłać każdy z wydruków osobnym e-mailem. [***] tZałączWydrukTxt{idProces[;p1][;p2][;p3][;...]} lista Zapisuje wydruk w pliku w formacie TXT i załącza do bieżącego wydruku. Umożliwia załączenie dodatkowych zestawień lub dokumentów do e-maila Parametry są identyczne z tWstawWydruk{} Przykład: ţZałączWydrukTxt{NA;FA;KOPIAFAK;şNr dokum. ş} [***] tZałączWydrukHtml{idProces[;p1][;p2][;p3][;...]} lista Zapisuje wydruk w pliku w formacie HTML i załącza do bieżącego wydruku. Umożliwia załączenie dodatkowych zestawień lub dokumentów do e-maila Parametry są identyczne z tWstawWydruk Przykład: ţZałączWydrukHtml{NA;FA;KOPIAFAK;şNr dokum. ş} [***] tZapiszWarchiwum{[nazwa pliku][;katalog]} lista Zapisuje plik wydruku do e-archiwum. Program wykona tylko jedną, ostatnią funkcję na wzorcu. Domyślnie nazwa pliku składa się z okresu obliczeniowego i identyfikatora dokumentu RefNo. Można podać dowolną inną nazwę, np. zawierającą symbol operatora, czytelną nazwę rodzaju dokumentu lub datę i czas wydruku. Format pliku zależy od rodzaju wybranego urządzenia wyjściowego. Gdy wydruk skierowany na drukarki, to program zapisze plik w formacie PDF. Gdy wydruk do pliku, to program zapisze plik o zgodnym formacie. Rodzaj Format pliku urządzenia w e-archiwum ----------- ------------ Cups pdf Win32 pdf Email PDF pdf Plik PDF pdf Plik HTML html Plik TXT txt Plik PRN txt Email zgodnie z formatem treści jw. Polecenie zgodnie z formatem pliku jw. NOTE: W wersjach programu bez funkcji zapisu plików PDF program zapisze plik w formacie TXT. Plik zostanie zapisany w podkatalogu o nazwie zgodnej z symbolem systemu wynikającym z RefNo. Można zmienić katalog, np. zapisać w katalogu innego systemu lub gromadzić zestawienia w osobnym podkatalogu. Funkcja podglądu dokumentu w e-archiwum pokaże najnowszy plik, który w nazwie zawiera RefNo i znajduje się w domyślnym katalogu. Preferuje pliki z domyślną nazwą. Pozostałe pliki można przeglądać w funkcji przeglądania e-archiwum. tZapiszWarchiwum{[nazwa pliku][;katalog]} Przykłady: ţZapiszWarchiwum{} Zapis wydruku w e-archiwum w domyślnym katalogu z domyślną nazwą np. Faktura sprzedaży FA0001/10/19 /trarchiwum/ff/na/2019-10-SI-FA0001-10-19.pdf ţZapiszWarchiwum{;na/şPla.ş} Zapis wydruków w osobnych podkatalogach dla kontrahentów. Podgląd pliku nie będzie dostępny w funkcji przeglądania dokumentu Pliki można oglądać w funkcji przeglądania e-archiwum. /trarchiwum/ff/na/000001/2019-10-SI-FA0001-10-19.pdf ţZapiszWarchiwum{ţDataSys - ş- Id dokum. -ş} Data i czas w nazwie wydruku. Każde wywołanie wydruku spowoduje zapis nowego pliku w e-archiwum. Podgląd pliku w funkcji przeglądania dokumentu pokaże najnowszy plik Pozostałe pliki można oglądać w funkcji przeglądania e-archiwum. ţZapiszWarchiwum{ş- Id dokum. -ş;na/20ş2ş_ş1ş} Zapis plików w osobnych podkatalogach dla okresów obliczeniowych. Pliki można oglądać w funkcji przeglądania e-archiwum. /trarchiwum/ff/na/2019_10/SI-FA0001-10-19.pdf RefNo Numery referencyjne e-faktury, e-archiwum [***] tIlośćZapasu{magazyn;indeks[;Numer partii][;Numer Serii]} lista Ilość asortymentu, która wg zapisów w programie, znajduje się w magazynie Przykład Łącznie we wszystkich magazynach ţIlośćZapasu{;şIndeks towaru ş} KSOM: (ilość w magazynie şMş) ţIlośćZapasu{şMş;şIndeks towaru ş} LOT: ţIlośćZapasu{şMş;şIndeks towaru ş;şNumer partii ş} SER: ţIlośćZapasu{şMş;şIndeks towaru ş;;ş------Numer serii------ş} [***] tWartośćZapasu{magazyn;indeks[;Numer partii][;Numer Serii]} lista Wartość pozycji magazynowej Przykład Łącznie we wszystkich magazynach ţWartośćZapasu{;şIndeks towaru ş} KSOM: ţWartośćZapasu{şMş;şIndeks towaru ş} LOT: ţWartośćZapasu{şMş;şIndeks towaru ş;şNumer partii ş} SER: ţWartośćZapasu{şMş;şIndeks towaru ş;;ş------Numer serii------ş} [***] tIlośćDostępna{magazyn;indeks[;Numer partii][;Numer Serii]} lista Ilość dostępna w magazynie Przykład Łącznie we wszystkich magazynach ţIlośćDostępna{;şIndeks towaru ş} KSOM: Tylko w magazynie şMş ţIlośćDostępna{şMş;şIndeks towaru ş} LOT: ţIlośćDostępna{şMş;şIndeks towaru ş;şNumer partii ş} SER: ţIlośćDostępna{şMş;şIndeks towaru ş;;ş------Numer serii------ş} [***] tIlośćZarezerwowana{magazyn;indeks[;Numer partii][;Numer Serii]} lista Ilość, która jest planowana do wydania w przyszłej operacji rozchodu do sprzedaży lub wydania do produkcji. Przykład Łącznie we wszystkich magazynach ţIlośćZarezerwowana{;şIndeks towaru ş} KSOM: ţIlośćZarezerwowana{şMş;şIndeks towaru ş} LOT: ţIlośćZarezerwowana{şMş;şIndeks towaru ş;şNumer partii ş} SER: ţIlośćZarezerwowana{şMş;şIndeks towaru ş;;ş------Numer serii------ş} [***] tTabelarycznie{system;idproces;nazwa pliku;format;nazwa parametrów last user choice} lista Zapisuje do pliku raport utworzony tabelarycznie Parametry: system - System. Dostępne: NZ idproces - Idproces funkcji raportu. Dostępne idproces: NZ_ZDM10 nazwa pliku - Nazwa pliku eksportu (bez rozszerzenia) format - Format pliku eksportu. Dostępne formaty: CSV XLS nazwa parametrów last user choice - ID Ostatni wybór operatora Ostatnie wybory operatorów Przykład ţTabelarycznie{NZ;NZ_ZDM10;sprzedazwgindeksow;CSV;indeksyogolem} [***] tWykonajFunkcje{idproces;nazwa parametrów last user choice} lista Wykonuje podaną funkcję Parametry: idproces - Idproces funkcji. Dostępne idproces: MI_OC315 Oblicz automatycznie ceny dla cennika: Q_CTYP_60_KATALOGOWY MI_OC325 Oblicz automatycznie ceny dla cennika: Q_CTYP_50_KATALOGOWY_MAG MI_OC335 Oblicz automatycznie ceny dla cennika: Q_CTYP_40_GRUPA_KONTRAH MI_OC345 Oblicz automatycznie ceny dla cennika: Q_CTYP_30_KONTRAKT MI_OC375 Oblicz automatycznie ceny dla cennika: Q_CTYP_25_KONTRAKT_SHIPTO MI_OC355 Oblicz automatycznie ceny dla cennika: Q_CTYP_20_PROMOCYJNY MI_OC365 Oblicz automatycznie ceny dla cennika: Q_CTYP_10_PROMOCYJNY_MAG nazwa parametrów last user choice - ID Ostatni wybór operatora Ostatnie wybory operatorów Przykład ţWykonajFunkcje{MI_OC315;ParametryDlaCennikaPLN_Netto1} Obliczy ceny Netto1 w cenniku katalogowym [60] wg parametrów zapisanych pod nazwą [ParametryDlaCennikaPLN_Netto1] NOTE: Parametry ustala się w funkcji o podanym IdProces, np. MI_OC315 NOTE: Parametry muszą być zapisane przez operatora wykonującego ţWykonajFunkcje (np. przez operatora uruchamiającego Alerty w trybie autorun AD_PAL10) [***] tMax{arg1[;arg2;...]} lista Zwraca największą wartość Przykład: ţMax{4;2;12;4;7;3} -> 12 ţMax{15.23;5.14} -> 15.23 NOTE: Pusty argument traktowany jest jak 0 ţMax{;-10} -> [ ] ţMax{-3;-2;;-4;-1} -> [ ] ţMax{11.10;} -> 11.10 ţMax{1;2;;3;4} -> 4 ţWartośćMax={} ţWartośćMax={ţMax{s-wartosc-s;ţWartośćMax}} [***] tMin{arg1[;arg2;...]} lista Zwraca najmniejszą wartość Przykład: ţMin{4;2;12;4;7;3} -> 2 NOTE: Pusty argument traktowany jest jak 0 ţMin{;10} -> [ ] ţMin{;3;-2;4;1} -> -2 ţMin{11.10;} -> 11.10 ţMin{4;3;;2;1} -> [ ] ţWartośćMin={} ţWartośćMin={ţMin{s-wartosc-s;ţWartośćMin}} [***] tWartościKonta{funkcja;konto;rok;miesiąc[;miesiącDo]} lista Stany i obroty konta w księdze głównej. Zastosowanie: Zestawienia księgowe wg wzorców: Zestawienia w KG Księga Główna Funkcje TrExtLang: omw - Obroty Wn okresu obliczeniowego omm - Obroty Ma okresu obliczeniowego smw - Saldo Wn obrotów okresu obli. (może być < 0) smm - Saldo Ma obrotów okresu obli. (może być < 0) zmw - Saldo Wn obrotów okresu obli. (= 0 gdy < 0) zmm - Saldo Ma obrotów okresu obli. (= 0 gdy < 0) onw - Obroty Wn narastająco onm - Obroty Ma narastająco snw - Saldo Wn obrotów narastająco (może być < 0) snm - Saldo Ma obrotów narastająco (może być < 0) znw - Saldo Wn obrotów narastająco (= 0 gdy < 0) znm - Saldo Ma obrotów narastająco (= 0 gdy < 0) bow - Bilans Otwarcia Wn roku obliczeniowego bom - Bilans Otwarcia Ma roku obliczeniowego sbw - Saldo Wn Bilansu Otwarcia (może być < 0) sbm - Saldo Ma Bilansu Otwarcia (może być < 0) zbw - Saldo Wn Bilansu Otwarcia (= 0 gdy < 0) zbm - Saldo Ma Bilansu Otwarcia (= 0 gdy < 0) rwn - Obroty Wn roku poprzedniego rma - Obroty Ma roku poprzedniego pwn - Obroty Wn roku (planowane) pma - Obroty Ma roku (planowane) Odpowiedniki funkcji z modułu KE: ozw - Obroty Wn zakresu okresów ozm - Obroty Ma zakresu okresów szw - Saldo Wn zakresu okresów (może być < 0) szm - Saldo Ma zakresu okresów (może być < 0) saw - Suma sald po str. Wn narast. od BO do mca sam - Suma sald po str. Ma narast. od BO do mca sww - Saldo sald str. Wn zakresu mc-y - wartość [SsKG(w,Wn)] sow - Saldo sald str. Wn zakresu mc-y - strona [Wn]/[] [SsKG(o,Wn)] swm - Saldo sald str. Ma zakresu mc-y - wartość [SsKG(w,Ma)] som - Saldo sald str. Ma zakresu mc-y - strona [Ma]/[] [SsKG(o,Ma)] sws - Suma sald zakresu mc-y - wartość [SsKG(w,'')] sos - Suma sald zakresu mc-y - strona [Wn]/[]/[Ma] [SsKG(o,'')] dww - Saldo obrotów Wn zakresu mc-y - wartość [SzKG(w,Wn)] dow - Saldo obrotów Wn zakresu mc-y - strona [Wn]/[] [SzKG(o,Wn)] dwm - Saldo obrotów Ma zakresu mc-y - wartość [SzKG(w,Ma)] dom - Saldo obrotów Ma zakresu mc-y - strona [Ma]/[] [SzKG(o,Ma)] dws - Saldo obrotów zakresu mc-y - wartość [SzKG(w,'')] dos - Saldo obrotów zakresu mc-y - strona [Wn]/[]/[Ma] [SzKG(o,'')] Konto można określić z użyciem symboli *,? lub podać zakres kont: * - zastępuje dowolną liczbę znaków ? - zastępuje dowolny znak [od-do] - umożliwia podanie zakresu kont Parametr [miesiąc] 0 = Bilans Otwarcia (dla funkcji z zakresem miesięcy) 01 = miesiąc 01 02 = miesiąc 02, itd.. Parametr [miesiącDo] Domyślnie przyjmuje wartość parametru [miesiąc] Tylko dla funkcji z zakresem miesięcy. Przykłady: ţomw{700;2020;06} ţomw{7*;2020;06} ţomw{70*;2020;06} ţomw{70[1-5]*;2020;06} ţomw{701[10-40]*;2020;06} ţomw{70?[10-40]*;2020;06} ţsww{70?[10-40]*;2020;0;06} Od B.O. do 06 [***] tomw{konto;rok;miesiąc} lista Obroty Wn okresu obliczeniowego [***] tomm{konto;rok;miesiąc} lista Obroty Ma okresu obliczeniowego [***] tsmw{konto;rok;miesiąc} lista Saldo Wn obrotów okresu obli. (może być < 0) [***] tsmm{konto;rok;miesiąc} lista Saldo Ma obrotów okresu obli. (może być < 0) [***] tzmw{konto;rok;miesiąc} lista Saldo Wn obrotów okresu obli. (= 0 gdy < 0) [***] tzmm{konto;rok;miesiąc} lista Saldo Ma obrotów okresu obli. (= 0 gdy < 0) [***] tonw{konto;rok;miesiąc} lista Obroty Wn narastająco [***] tonm{konto;rok;miesiąc} lista Obroty Ma narastająco [***] tsnw{konto;rok;miesiąc} lista Saldo Wn obrotów narastająco (może być < 0) [***] tsnm{konto;rok;miesiąc} lista Saldo Ma obrotów narastająco (może być < 0) [***] tznw{konto;rok;miesiąc} lista Saldo Wn obrotów narastająco (= 0 gdy < 0) [***] tznm{konto;rok;miesiąc} lista Saldo Ma obrotów narastająco (= 0 gdy < 0) [***] tbow{konto;rok} lista Bilans Otwarcia Wn roku obliczeniowego [***] tbom{konto;rok} lista Bilans Otwarcia Ma roku obliczeniowego [***] tsbw{konto;rok} lista Saldo Wn Bilansu Otwarcia (może być < 0) [***] tsbm{konto;rok} lista Saldo Ma Bilansu Otwarcia (może być < 0) [***] tzbw{konto;rok} lista Saldo Wn Bilansu Otwarcia (= 0 gdy < 0) [***] tzbm{konto;rok} lista Saldo Ma Bilansu Otwarcia (= 0 gdy < 0) [***] trwn{konto;rok} lista Obroty Wn roku poprzedniego [***] trma{konto;rok} lista Obroty Ma roku poprzedniego [***] tpwn{konto;rok} lista Obroty Wn roku (planowane) [***] tpma{konto;rok} lista Obroty Ma roku (planowane) [***] tw01{konto;rok} lista Obroty Wn okresu 01 [***] tm01{konto;rok} lista Obroty Ma okresu 01 [***] tw02{konto;rok} lista Obroty Wn okresu 02 [***] tm02{konto;rok} lista Obroty Ma okresu 02 [***] tw03{konto;rok} lista Obroty Wn okresu 03 [***] tm03{konto;rok} lista Obroty Ma okresu 03 [***] tw04{konto;rok} lista Obroty Wn okresu 04 [***] tm04{konto;rok} lista Obroty Ma okresu 04 [***] tw05{konto;rok} lista Obroty Wn okresu 05 [***] tm05{konto;rok} lista Obroty Ma okresu 05 [***] tw06{konto;rok} lista Obroty Wn okresu 06 [***] tm06{konto;rok} lista Obroty Ma okresu 06 [***] tw07{konto;rok} lista Obroty Wn okresu 07 [***] tm07{konto;rok} lista Obroty Ma okresu 07 [***] tw08{konto;rok} lista Obroty Wn okresu 08 [***] tm08{konto;rok} lista Obroty Ma okresu 08 [***] tw09{konto;rok} lista Obroty Wn okresu 09 [***] tm09{konto;rok} lista Obroty Ma okresu 09 [***] tw10{konto;rok} lista Obroty Wn okresu 10 [***] tm10{konto;rok} lista Obroty Ma okresu 10 [***] tw11{konto;rok} lista Obroty Wn okresu 11 [***] tm11{konto;rok} lista Obroty Ma okresu 11 [***] tw12{konto;rok} lista Obroty Wn okresu 12 [***] tm12{konto;rok} lista Obroty Ma okresu 12 [***] tw13{konto;rok} lista Obroty Wn okresu 13 [***] tm13{konto;rok} lista Obroty Ma okresu 13 [***] tozw{konto;rok;miesiąc;miesiącDo} lista Obroty Wn zakresu okresów [***] tozm{konto;rok;miesiąc;miesiącDo} lista Obroty Ma zakresu okresów [***] tszw{konto;rok;miesiąc;miesiącDo} lista Saldo Wn zakresu okresów (może być < 0) [***] tszm{konto;rok;miesiąc;miesiącDo} lista Saldo Ma zakresu okresów (może być < 0) [***] tsaw{konto;rok;miesiąc;miesiącDo} lista Suma sald po str. Wn narast. od BO do mca [***] tsam{konto;rok;miesiąc;miesiącDo} lista Suma sald po str. Ma narast. od BO do mca [***] tsww{konto;rok;miesiąc;miesiącDo} lista Saldo sald str. Wn zakresu mc-y - wartość [SsKG(w,Wn)] [***] tsow{konto;rok;miesiąc;miesiącDo} lista Saldo sald str. Wn zakresu mc-y - strona [Wn]/[] [SsKG(o,Wn)] [***] tswm{konto;rok;miesiąc;miesiącDo} lista Saldo sald str. Ma zakresu mc-y - wartość [SsKG(w,Ma)] [***] tsom{konto;rok;miesiąc;miesiącDo} lista Saldo sald str. Ma zakresu mc-y - strona [Ma]/[] [SsKG(o,Ma)] [***] tsws{konto;rok;miesiąc;miesiącDo} lista Suma sald zakresu mc-y - wartość [SsKG(w,'')] [***] tsos{konto;rok;miesiąc;miesiącDo} lista Suma sald zakresu mc-y - strona [Wn]/[]/[Ma] [SsKG(o,'')] [***] tdww{konto;rok;miesiąc;miesiącDo} lista Saldo obrotów Wn zakresu mc-y - wartość [SzKG(w,Wn)] [***] tdow{konto;rok;miesiąc;miesiącDo} lista Saldo obrotów Wn zakresu mc-y - strona [Wn]/[] [SzKG(o,Wn)] [***] tdwm{konto;rok;miesiąc;miesiącDo} lista Saldo obrotów Ma zakresu mc-y - wartość [SzKG(w,Ma)] [***] tdom{konto;rok;miesiąc;miesiącDo} lista Saldo obrotów Ma zakresu mc-y - strona [Ma]/[] [SzKG(o,Ma)] [***] tdws{konto;rok;miesiąc;miesiącDo} lista Saldo obrotów zakresu mc-y - wartość [SzKG(w,'')] [***] tdos{konto;rok;miesiąc;miesiącDo} lista Saldo obrotów zakresu mc-y - strona [Wn]/[]/[Ma] [SzKG(o,'')] [***] tBLAddCategories{IDIntegracji;wszystkie} lista Export grup indeksów do BaseLinker Przykład: ţBLAddCategories{@INTEGID;T} Parametry: IDIntegracji - symbol integracji wszystkie - T - synchronizuj wszystkie zapisy - N - synchronizuj tylko zapisy, które uległy zmianie [***] tBLAddProducts{IDIntegracji;wszystkie} lista Export indeksów KIM do BaseLinker [***] tBLUpdateProductsQuantity{IDIntegracji;wszystkie} lista Aktualizacja stanów zapasów w BaseLinkerze [***] tBLUpdateProductsPrices{IDIntegracji;wszystkie} lista Aktualizacja cen w BaseLinkerze [***] tBLGetOrders{IDIntegracji;wszystkie} lista Import zamówień z BaseLinker 2.3 Reguły użycia funkcji * Funkcje TrExtLang mogą być parametryzowane. Dodatkowe parametry wprowadza się w nawiasach {...}. Nawias otwierający musi być tuż za nazwą funkcji (nie może ich rozdzielać spacja ani inny znak) Poprawnie: ţ70{rejestr} ţFunkcja{} ţţ{Nazwa ze spacjami}{} Błędnie : ţ70 {rejestr} ţFunkcja {} ţNazwa ze spacjami{} * Jeżeli w nazwie funkcji, rejestru lub tabeli występują spacje to nazwę trzeba wpisać w ţ{...} Nie trzeba wpisywać w ţ{...} jeżeli nazwą jest pole znakowe. np. ţţ{Nazwa ze spacjami}[] ţs--- indeks ---s[] * Parametry rozdzielane są średnikami np. ţCzcionka{Courier New;12} * Nawiasy kwadratowe [...] oznaczają, że parametr jest opcjonalny i można pominąć. W tym miejscu program użyje wartości domyślnej. Dla pozycji wartością domyślną jest aktualne położenie kursora. Pominięte parametry należy rozddzielić średnikami. ţObrazek{plik.bmp;;} - wstaw obrazek bez zmiany rozmiaru. ţObrazek{plik.bmp;10;20} - wstaw obrazek przeskalowany do rozmiaru 10 x 20 mm * Parametry mogą być rozpisane w kolejnych liniach. Domknięcie musi być w linii tego samego typu. Linie z rozpisanymi parametrami zostaną przetworzone jak jedna linia. TţObrazek{ Tplik.bmp; T10;20} Rozpisanie parametrów można wykorzystać do podziału długiej linii wzorca: T ........ długa linia ţ#{ T}kontynuacja w kolejnej linii * Początek strony znajduje się w lewym górnym rogu. Ma współrzędne 0,0 0,0-----40-------100--> X [mm] | | 30 # tXY{40;30} | | | 80 # tXY{100;80} | Y[mm] v * Wszelkie parametry określające położenie i rozmiar wyrażane są w mm i określają położenie na aktualnie drukowanej stronie. np ţXY{10;20} - przesuń kursor na pozycję X=10mm i Y=20mm od początku strony * Wymiary można podać także w jednostkach względnych [em] odnoszących się do wielkości aktualnej czcionki np. ţY{-1em} oznacza cofnięcie kursora o jedna linię niezależnie od wielkości czcionki * Parametry określające położenie można podać jako: * bezwględne: od początku strony np. {10;15} * względne: od aktualnego położenia kursora np. {+15; -1.5} 3. Bloki danych Służą do wstawiania dodatkowych informacji bezpośrednio podczas drukowania. [oFVDEVELOP] Kronika poprzednich faktur [oDEKRET] Pieczątka dekretacyjna [oWYNIKIQA] Wyniki testów kontroli jakości QA [oOPCJEZAM] Opcje (wariant) zamówionego produktu (zapisane w zam sprzedaży) Bloki danych opisano w tym dokumencie: Wzorce dokumentów i etykiet 4. Pytania i odpowiedzi Mnożenie wartości pól P. Na dokumencie nie ma pola: wartość. Są tylko pola: ilość i cena. Jak wydrukować wartość ? O. Użyć operację mnożenia, np. ţ={s--ilosc--s * s--cena--s}. Podsumowanie w stopce P. Jak wydrukować podsumowanie pozycji w stopce dokumentu ? O. Użyć operacje sumowania w rejestrze, np. przed pozycjami: ţSumaKGO={0} w pozycji zapamiętywać KGO: ţKGO={ ţ={s--ilosc--s * ş--KGO--ş}} w pozycji sumować: ţSumaKGO={ ţ={ţSumaKGO + ţKGO} } albo ţSuma{SumaKGO;tKGO} w podsumowaniu wydrukować: ţSumaKGO T ţSumaKGO={0} T ---Indeks------- ----Ilość----- --KGO- P ţKGO={ţ={ş-- Ilosc ---ş * ş--KGO--ş}}şIndeks towaru ş ş-- Ilosc ---ş ţFormat{ţKGO;999.99} ţSuma{SumaKGO;ţKGO} T -------------------------------------- T Razem KGO: ţFormat{ţSumaKGO;9999.99} Pomijanie pozycji zerowych P. Jak pominąć pozycję gdy wartość KGO = 0.00 ? O. Użyć wydruk tekstu i przejście do nowej linii, tylko gdy KGO > 0.00 Tzn. gdy KGO = 0.00 to cofnij wiersz; gdy > 0 to pisz ţ=0{ţKGO; ţCofnijWiersz; W tym KGO tKGO} Stosuje się funkcję ţCofnijWiersz T ţSumaKGO={0} T ---Indeks------- ----Ilość----- --KGO- P ţKGO={ţ={ş-- Ilosc ---ş * ş--KGO--ş}}ţ=0{ţKGO;ţCofnijWiersz;şIndeks towaru ş ş-- Ilosc ---ş ţFormat{ţKGO;999.99} ţSuma{SumaKGO;ţKGO}} T -------------------------------------- T Razem KGO: ţFormat{ţSumaKGO;9999.99} Pomijanie pozycji P. Jak pominąć pozycję sprzedaży usług na wydruku faktury ? O. Drukować zawartość pozycji i przejść do nowej linii, tylko gdy wypełniony magazyn Pozycje usług nie mają wpisanego magazynu. Tzn. gdy puste pole magazyn to cofnąć wiersz; gdy wypełnione to pisać ţPorównaj{şMş;;ţCofnijWiersz; .... tu linia wydruku pozycji ....} Funkcja ţCofnijWiersz cofa o jeden wiersz P. Jak pominąć pozycję zamówienia sprzedaży, gdy stan = [Z] (pozycja zamknięta) ? Zamówienie sprzedaży jest dyspozycją dla magazyniera. Nie powinien pakować asortymentu z pozycji [Z] zamkniętych. O. Drukować zawartość pozycji i przejść do nowej linii, tylko gdy stan nie [Z] Tzn. gdy stan = [Z], to cofnąć wiersz P ţPorównaj{şZş;Z;ţCofnijWiersz;şLş şIndeks towaru ş ş-- Ilosc ---ş şJmş } P ţPorównaj{şZş;Z;ţCofnijWiersz;ş--------------- Nazwa towaru -------------------ş} Funkcja ţCofnijWiersz cofa o jeden wiersz Drukowanie bez łamania stron P. Program drukuje dokumenty, np. faktury sprzedaży lub wezwania do zapłaty na oddzielnych stronach (kartkach). Czy jest funkcja, którą można nakazać drukowanie ciągłe, bez podawania nowej strony (kartki), tj. bez łamania strony ? O. Funkcja tNieDzielNaStrony wstrzyma wysuwanie strony po wydrukowaniu dokumentu Anulowanie (przerwanie) drukowania P. Chcę uzależnić wydruk całego dokumentu od jego stanu (zawartości). Np. aby można było wydrukować tylko zaakceptowane zamówienia zakupu. Tzn. wydrukować tylko wtedy, gdy pole ACCKOD ma wartość xx. Inaczej: Czy funkcjami ţ...{} można zakazać wydruku ? O. Znak tPrzerwij powoduje anulowanie wydruku. Tak jak klawisz F10. W połączeniu z warunkiem ţPorównaj{} pozwoli wydrukować tylko zakceptowane. We wzorcu trzeba wstawić: ţPorównaj{s-ACCKod-s;xx;;ţKomunikat{Zamówienie wymaga akceptacji} ţPrzerwij} NOTE: ţPrzerwij przerywa cały proces drukowania. Ew. następne wydruki w kolejce też nie będą wydrukowane. Inne rozwiązanie, to warunkowe wywołanie wydruku zamówienia zakupu jako wydruku kaskadowego. Grupowanie wskazanych pól P. Faktura sprzedaży powstała wg wielu zamówień. Numery zamówień powiązane są z pozycjami faktury. Nie chcę umieszczać numerów zamówień w pozycjach bo zamówień jest 5 a pozycji sprzedaży 82. Będą powtórzenia numerów. Numery zamówień chce wyszczególnić w stopce lub nagłówku faktury. O. a) Aby wydrukować w stopce, to należy użyć tabeli ţ...[]. Zebrać numery zamówień w tabeli ţ...[] i następnie wydrukować tabelę w stopce. P ţZamówienia[şPNr zamow.ş]{şPNr zamow.ş} ... T Wg zamówień: T ţZamówienia[] b) Aby wydrukować w nagłówku, to trzeba wywołać wydruk kaskadowo. Na pierwszym wzorcu wydruku umieścić nagłówek. W liniach typu [P] zebrać w ţ...[] numery zamówień. W tym wzorcu nie drukować pozycji. Poniżej, w linii typu [T] drukować zawartość tabeli ţ...[]. Następnie wstawić wydruk ţWstawWydruk tego samego dokumentu wg wzorca drukujący pozycje i stopkę dokumentu. Umieszczanie w jednej linii wydruku P. Jak wydrukować zawartość wierszy tabeli ţ...[] w jednej linii ? O. Przepisać zawartość tabeli do rejestru t70. W kolejnym wierszu wydrukować rejestr. Można użyć funkcji ţTabelaWrejestr{} T ţTabelaWrejestr{Zamówienia;, } T ţZamówienia Aby program zawiną zbyt długą linię trzeba użyć tZawiń T ţTabelaWrejestr{Zamówienia;, } T ţZawiń{ţZamówienia;180} Rok 4-cyfrowy [rrrr] P. Jak wydrukować rok czterocyfrowy ? O. a) Zapisać '20' przed polem (maską) daty. Jest : şData sş np. 13.05.03 Zapisać: 20şData sş np. 2013.05.03 b) Użyć znaku: tFormatDaty (ţFormatDaty{data;format}) Np. ţFormatDaty{şData wş;RRRR.MM.DD} ţFormatDaty{şData wş;RRRR-MM-DD} ţFormatDaty{ş---Data i czas---ş;RRRR.MM.DD GG:MN:SS} 5. Tematy powiązane Drukowanie Urządzenia wyjściowe Komponenty technologiczne Wzorce dokumentów i etykiet Wzorce dokumentów Przykłady Wzorce etykiet Przykłady Pola dla wzorców dokumentów i etykiet Lista dokumentów wg wzorców Wydruki kaskadowe i składane RefNo Numery referencyjne e-faktury, e-archiwum Kody kreskowe Opis ogólny Zestawienia w KG Księga Główna SOA Architektura wymiany danych SOA Funkcje OutBound i InBound Alerty i raportowanie AutoRun Procesy automatyczne
www.tres.pl - Baza wiedzy Trawers ERP - Spis treści