| 1 | | = [wiki:UserGuide Przewodnik użytkownika]/[wiki:UserGuide/AdvancedConfiguration/DefiningReports Tworzenie raportów] > AAA = |
| | 1 | = [wiki:UserGuide Przewodnik użytkownika]/[wiki:UserGuide/AdvancedConfiguration/DefiningReports Tworzenie raportów w SQL] > Filtry dla raportów = |
| | 2 | |
| | 3 | = [wiki:UserGuide Przewodnik użytkownika] > Filtry dla raportów = |
| | 4 | |
| | 5 | {{{ |
| | 6 | #!html |
| | 7 | <style> |
| | 8 | table.wiki { |
| | 9 | border: 1px solid #CCC; |
| | 10 | border-collapse: collapse; |
| | 11 | border-spacing: 0; |
| | 12 | } |
| | 13 | |
| | 14 | table.wiki td { |
| | 15 | border: 1px solid #CCC; |
| | 16 | padding: 10px; |
| | 17 | border-image: initial; |
| | 18 | } |
| | 19 | tr > td:first-child { |
| | 20 | font-weight:bold; |
| | 21 | } |
| | 22 | tr > tr:first-child { |
| | 23 | font-weight:bold; |
| | 24 | } |
| | 25 | tr:first-child { |
| | 26 | color:white; |
| | 27 | text-align:center; |
| | 28 | } |
| | 29 | tr:first-child td { |
| | 30 | background-color: #0BA1E0; |
| | 31 | color:white; |
| | 32 | font-weight:bold; |
| | 33 | } |
| | 34 | </style> |
| | 35 | }}} |
| | 36 | |
| | 37 | == Wstęp == |
| | 38 | |
| | 39 | Moduł raportów w systemie eDokumenty umożliwia filtrowanie danego raportu poprzez określenie parametrów na dwa sposoby: |
| | 40 | - standardowe parametry |
| | 41 | - utworzenie filtrów przez użytkownika |
| | 42 | |
| | 43 | == Standardowe parametry == |
| | 44 | |
| | 45 | Standardowe parametry to specjalne tokeny dzięki, którym możemy obsłużyć przekazywane dane z listy, kartoteki lub poprzez formularz parametrów do raportu. |
| | 46 | |
| | 47 | Należy zwrócić uwagę na miejsce z którego jest wywoływany raport gdyż ma to wpływ na definicję operatora SQL przed takim tokenem. |
| | 48 | Warunki stosowanie operatorów: |
| | 49 | || Operator || Kiedy stosować || Przykład parametru || |
| | 50 | || IN || dla listy gdyż możemy otrzymać kilka zaznaczonych elementów.[[BR]] Token zostanie zamieniony na identyfikatory z danej listy np.: 1,2,3,4 || '''Miejsce:''' Lista klientów [[BR]] '''Parametr:''' contid IN ({CONTID}) || |
| | 51 | || znak = || dla kartoteki przekazywana jest tylko jedna wartość do parametru || '''Miejsce:''' Kartoteka klienta [[BR]] '''Parametr:''' contid = {CONTID} || |
| | 52 | |
| | 53 | W przypadku jeśli w definicji raportu użyjemy np.: {CONTID} a raport zostanie wywołany z modułu (przekazane zostaną zaznaczone elementy) wtedy token zostanie zamieniony na pierwszy z zaznaczonych elementów. |
| | 54 | |
| | 55 | W przypadku niewłaściwego podpięcia raportu lub niewłaściwego użycia operatora raport wygeneruje błąd. |
| | 56 | |
| | 57 | == Obsługiwane tokeny == |
| | 58 | |
| | 59 | Obecnie obsługiwane tokeny to: |
| | 60 | || Nazwa || Opis || Wartość domyślna || Określanie na formularzu || |
| | 61 | || {DATE_FROM} || Data od || Początek bieżącego miesiąca || TAK || |
| | 62 | || {DATE_TO} || Data do || Koniec bieżącego miesiąca || TAK || |
| | 63 | || {USR_ID} || Pracownik || Pracownik z listy || TAK || |
| | 64 | || {LOGGED_USR_ID} || Zalogowany pracownik || Id zalogowanego pracownika (users.usr_id) || NIE || |
| | 65 | || {ENT_ID} || Identyfikator podmiotu || Identyfikator podmiotu || NIE || |
| | 66 | || {FILTER_STRING} || Ciąg filtrujący || 'TRUE' || TAK - definicja filtrów to określa || |
| | 67 | || {ACORID} || Jednostka rozliczeniowa || 0 || TAK || |
| | 68 | || {TOVCID} || Miejsce powstawania kosztów || 0 || TAK || |
| | 69 | || {ADANID} || Dodatkowa analityka || 0 || TAK || |
| | 70 | || {CONTID} || Klient || Pierwszy nie usunięty klient z listy (sortowany po contid) || TAK || |
| | 71 | || {CONTIDS} || Klient || Pierwszy nie usunięty klient z listy (sortowany po contid) || TAK || |
| | 72 | || {DOC_ID} || Dokument (z listy lub kartoteka) || 0 || NIE || |
| | 73 | || {DOC_IDS} || Dokument (z listy lub kartoteka) || 0 || NIE || |
| | 74 | || {DOCIDS} || Dokument (z listy lub kartoteka) || 0 || NIE || |
| | 75 | || {PRC_ID} || Sprawa || 0 || TAK || |
| | 76 | || {PRC_IDS} || Sprawa || 0 || TAK || |
| | 77 | || {PRCIDS} || Sprawa || 0 || TAK || |
| | 78 | || {EVNTID} || Zdarzenie (z listy lub kartoteka) || 0 || NIE || |
| | 79 | || {EVNTIDS} || Zdarzenie (z listy lub kartoteka) || 0 || NIE || |
| | 80 | || {CAMPID} || Kampania (z listy lub kartoteka) || 0 || TAK || |
| | 81 | || {CAMPIDS} || Kampania (z listy lub kartoteka) || 0 || TAK || |
| | 82 | || {DEVCID} || Urządzenie (z listy lub kartoteka) || 0 || TAK || |
| | 83 | || {DEVCIDS} || Urządzenie (z listy lub kartoteka) || 0 || TAK || |
| | 84 | || {DEPOID} || Produkt (z listy lub kartoteka) || 0 || TAK || |
| | 85 | || {DEPOIDS} || Produkt (z listy lub kartoteka) || 0 || TAK || |
| | 86 | || {RES_ID} || Zasób (z listy lub kartoteka) || 0 || TAK || |
| | 87 | |
| | 88 | W momencie jeśli w danym raporcie zostanie użyty taki token to system wygeneruje odpowiednie pole na formularzu parametrów do raportu - jeśli jest obsługiwane. Poniższy zrzut ekranu przedstawia wszystkie tokeny możliwe do określania poprzez formularz. |
| | 89 | |
| | 90 | [[BR]][[Image(podstawowe_parametry.png)]][[BR]] (''Parametry'')[[BR]] |
| | 91 | |
| | 92 | == Definiowanie filtrów == |
| | 93 | |
| | 94 | Od wersji 4.0 system eDokumenty umożliwia definiowanie własnych parametrów do raportów określanych jako Filtry. |
| | 95 | |
| | 96 | Na wstępie należy wyszukać interesujący nas raport lub dodać nowy [wiki:UserGuide/AdvancedConfiguration/DefiningReports Tworzenie raportów w SQL]. |
| | 97 | |
| | 98 | Przykładowa definicja raportu (kod SQL): |
| | 99 | |
| | 100 | {{{ |
| | 101 | SELECT |
| | 102 | contid, |
| | 103 | name_1, |
| | 104 | adddat, |
| | 105 | macrtk, |
| | 106 | is_del |
| | 107 | FROM |
| | 108 | contacts |
| | 109 | WHERE |
| | 110 | ent_id = {ENT_ID} |
| | 111 | AND {FILTER_STRING} |
| | 112 | }}} |
| | 113 | |
| | 114 | == Ważne uwagi == |
| | 115 | |
| | 116 | Aby filtrowanie było możliwe wymagane jest dodanie specjalnego tokenu '''{FILTER_STRING}''', który w momencie akceptacji filtrów zostanie zamieniony na warunki SQL zgodne z definicją filtrów. Jeśli w definicji raportu zabraknie tego tokenu to pomimo definicji filtrów nie będą one dostępne na panelu parametrów. |
| | 117 | |
| | 118 | Istotną kwestią jest również miejsce w którym jest dodany token {FILTER_STRING} oraz operator jaki go poprzedza (AND/OR zalecany AND). |
| | 119 | Być może przykład będzie dość abstrakcyjny jednak proszę zwrócić uwagę na zapytanie zagnieżdżone: |
| | 120 | |
| | 121 | {{{ |
| | 122 | SELECT * |
| | 123 | FROM |
| | 124 | (SELECT |
| | 125 | contid, |
| | 126 | name_1, |
| | 127 | adddat, |
| | 128 | macrtk, |
| | 129 | is_del |
| | 130 | FROM |
| | 131 | contacts |
| | 132 | WHERE |
| | 133 | ent_id = {ENT_ID} LIMIT 100) AS foo |
| | 134 | AND {FILTER_STRING} |
| | 135 | }}} |
| | 136 | Ważne jest aby przy takiej definicji raportu filtry wskazywały na kolumny umieszczone w głównym zapytaniu. |
| | 137 | |
| | 138 | == Definicja nowego filtra == |
| | 139 | |
| | 140 | Po otwarciu dialoga raportu powinna nam się pojawić dodatkowa zakładka - "Filtry". |
| | 141 | |
| | 142 | [[BR]][[Image(panel_filtry.png)]][[BR]] (''Panel "Filtry"'')[[BR]] |
| | 143 | |
| | 144 | Przyciski na widocznym zrzucie umożliwiają standardowe zarządzanie filtrami: |
| | 145 | || Nazwa przycisku || Opis || |
| | 146 | || Nowy || definicja nowego filtra/grupy || |
| | 147 | || Edycja || edycja istniejącego filtra/grupy możliwa również poprzez dwukrotne kliknięcie elementu drzewka || |
| | 148 | || Usuń || sunięcie filtra lub grupy (usuwane są też wszystkie podrzędne) || |
| | 149 | || Odśwież listę || odświeża listę filtrów || |
| | 150 | |
| | 151 | Klikając przycisk "Nowy" otrzymujemy formularz dzięki, której możemy zdefiniować nowy filtr lub grupę (zależne od wyboru pola Rodzaj - poniższy zrzut ekranu). |
| | 152 | |
| | 153 | [[BR]][[Image(filtr_raportu.png)]][[BR]] (''Definicja filtra'')[[BR]] |
| | 154 | |
| | 155 | Opis pól: |
| | 156 | || Nazwa pola || Opis || |
| | 157 | || Nazwa || nazwa filtra lub grupy filtrów w zależności co zostanie wybrane w polu rodzaj || |
| | 158 | || Opis || dodatkowa informacja wyświetlania po najechaniu na nazwę filtra w panelu filtrów raportu (dostępny na wygenerowanym raporcie) || |
| | 159 | || Nadrzędny || w przypadku jeśli dany filtr lub grupa ma należeć do grupy należy wybrać z dostępnej listy || |
| | 160 | || Rodzaj || '''Grupa''' - grupuje kilka filtrów lub innych grup[[BR]] '''Filtr''' - konkretny filtr - filtry mogą być definiowane bez elementu nadrzędnego lub mogą należeć do grupy. Filtr nie może należeć do innego filtra || |
| | 161 | || Typ opcji || rodzaj wygenerowanego pola na panelu filtrów w wygenerowanym raporcie. Szczegóły poniżej || |
| | 162 | || Filtr || wyrażenie filtrujące. W zależności od typ opcji może wymagać podanie tokenu {value} - szczegóły poniżej || |
| | 163 | || Wartości dla listy || tylko dla typu: Lista jednokrotnego wyboru, Lista wielokrotnego wyboru, Pola radiowe - kwerenda SQL, gdzie pierwsza wartość to klucz, który '''musi być typu INTEGER''' natomiast druga to opis wartości. Można stosować następujące tokeny: [[BR]] {LOGGED_USER} - identyfikator zalogowanego pracownika (users.usr_id) [[BR]] {LOGGED_ORUNID} - identyfikator jednostki zalogowanego pracownika (organization_units.orunid) [[BR]] {ENT_ID} - identyfikator podmiotu (podmioty.id_pod) [[BR]] {CURRENT_DATE} - bieżąca data w formacie YYYY-MM-DD [[BR]] {CURRENT_TIME} - bieżący czas w formacie HH:MM || |
| | 164 | |
| | 165 | == Typ opcji == |
| | 166 | Poniżej znajduje się aktualna lista typów opcji oraz przykład definicji: |
| | 167 | |
| | 168 | || Typ opcji || Opis || Przykład filtru || Wymaga tokenu {value} || |
| | 169 | || Wartość BOOLEAN || Zastosowanie dla kolumn typu boolean gdzie wartość to TRUE lub FALSE || is_del IS {value} || Tak || |
| | 170 | || Wartość TEXT || Dowolne pole tekstowe do którego chcemy zastosować wyszukiwanie || name_1 ~* E'{value}' || Tak || |
| | 171 | || Pole zaznaczane || Jedna opcja zaznaczenia filtruje tylko wtedy gdy jest zaznaczony. Jeśli podamy w filtrze token {value} zostanie zamieniony na TRUE || is_del IS TRUE to samo da nam is_del IS {value} ale is_del IS FALSE nie jest tym samym co is_del IS {value} - {value} jest zawsze zamieniane na TRUE || Nie ale może być patrz przykład || |
| | 172 | || Lista jednokrotnego wyboru || Pole typu Select gdzie można wybrać tylko jedną wartość. Wymagane jest zadeklarowanie SQL dla listy opcji || adduid = {value} || Tak || |
| | 173 | || Lista wielokrotnego wyboru || Lista z opcjami do wyboru || adduid || Nie tylko należy zadeklarować kolumnę której filtr dotyczy || |
| | 174 | || Pola radiowe || Lista z opcjami do wyboru || adduid || Nie tylko należy zadeklarować kolumnę której filtr dotyczy || |
| | 175 | || Pole daty z godziną || Wizualizacja tego filtru posiada dodatkowe pole do określania godziny jeśli jest wymagana taka do dokładność || adddat >= '{value}' lub można adddat >= '2012-01-01 12:00' || Raczej tak niepodanie tokenu {value} jest niecelowe || |
| | 176 | || Pole daty bez godziny || Brak pola godzina || adddat >= '{value}' lub można adddat >= '2012-01-01' || Raczej tak niepodanie tokenu {value} jest niecelowe || |
| | 177 | || Wybór miesiąca oraz roku || Umożliwia wybranie roku oraz miesiąca. Zwracana wartość to rok plus miesiąc oraz 1 dzień czyli np. 2012-02-01. Umożliwia to budowanie zakresów miesięcy jeśli zdefiniujemy drugi filtr tego typu w grupie || adddat >= '{value}' || Tak || |
| | 178 | || Kontakt z książki adresowej || Zwraca identyfikator (contacts.contid) klienta || contid = {value} || Tak || |
| | 179 | || Lista spraw || Zwraca identyfikator sprawy (processes.prc_id) || prc_id = {value} || Tak || |
| | 180 | || Osoba kontaktowa|| Zwraca identyfikator osoby kontaktowej (contact_persons.copeid) || copeid = {value} || Tak || |
| | 181 | || Urządzenie || Zwraca identyfikator urządzenia (devices.devcid) || devcid = {value} || Tak || |
| | 182 | || Projekt || Zwraca identyfikator projektu (projects.projid) || projid = {value} || Tak || |
| | 183 | || Lista pracowników || Zwraca identyfikator wybranych pracowników (users.usr_id). '''WAŻNE - wymagane jest aby był operator IN w wyrażeniu filtrującym gdyż wartości są zwracane w postaci 1,2,3,4''' || adduid IN ({value}) || Tak || |
| | 184 | |
| | 185 | |
| | 186 | W moim przypadku chcę filtrować listę klientów według parametru opiekun dlatego: |
| | 187 | - Typ opcji : Lista pracowników |
| | 188 | - Filtr: macrtk IN ({value}) - pole macrtk przechowuje id opiekuna (users.usr_id) |
| | 189 | |
| | 190 | Po zapisaniu filtr jest dostępny z poziomu listy filtrów danego raportu: |
| | 191 | |
| | 192 | [[BR]][[Image(nowy_filtr_na_liscie.png)]][[BR]] (''Nowy filtr na liście filtrów w raporcie'')[[BR]] |
| | 193 | |
| | 194 | Oraz dodatkowo po wygenerowaniu raportu klikając przycisk Określ parametry otrzymujemy formularz jak na zrzucie poniżej: |
| | 195 | |
| | 196 | [[BR]][[Image(filtr_na_raporcie.png)]][[BR]] (''Filtr na wygenerowanym raporcie'')[[BR]] |
| | 197 | |
| | 198 | Po zatwierdzeniu (przycisk Zapisz na formularzu Określ parametru raportu) raport zostanie ponownie wygenerowany uwzględniając nasz wybór. |