Kategorie

Wersja systemu

6.36.46.56.26.16.05.95.85.75.65.55.45.3

Budowanie filtrów na liście

Wprowadzenie

Jedną z podstawowych funkcjonalności listy jest możliwość wyszukiwania czy filtrowania danych. Najprostszą metodą jest skorzystanie z wyszukiwarki globalnej albo z wyszukiwania po kolumnach listy. Można tak wyszukać dokumenty zawierające konkretną nazwę, powiązane z kontrahentem czy stworzone przez użytkownika. Często to jednak nie wystarcza. Chcielibyśmy stworzyć filtry które w łatwy sposób pokażą nam istotne dane, np. faktury z upływającym terminem płatności, zgłoszenia serwisowe dotyczące konkretnego obszaru.

Administrator konfigurujący system może zdefiniować dodatkowe filtry których przykład widać na powyższym zrzucie ekranu. Filtry te są dostępne dla każdego użytkownika systemu który może korzystać z tej konkretnej listy.

Tworzenie filtrów

Filtry tworzymy w konfiguracji listy poprzez Ustawienia > Personalizacja > Listy. Konfiguracja filtrów znajduje się w zakładce Filtry.

Po przełączeniu na tę zakładkę widzimy puste miejsce z przyciskiem do dodawania filtrów. System nie tworzy sam żadnych filtrów na liście, wszystkie filtry musi stworzyć administrator systemu.

Po wybraniu Dodaj nową kategorię filtrów pojawi się okno z konfiguracją filtra:

Każda kategoria filtra odpowiada jednej sekcji w panelu filtrów listy:

 

NAVIGATOR oferuje trzy kategorie filtrów: Polecenie SQL, Kreator filtrów oraz Filtr na podstawie danych z kolumny. Obok typu filtra administrator musi podać jego nazwę oraz metodę sortowania. Nazwa filtra jest istotnym parametrem gdyż będzie ona wyświetlana w panelu filtra. Najlepiej nadać taką nazwę, która jednoznacznie wyjaśnia działania filtra.

Każdy z typów filtra posiada inną konfigurację. Wspólne są jedynie opcje Kolumna – określająca której kolumny na liście dotyczy filtr oraz Multiwybór. Zaznaczenie opcji Multiwybór spowoduje, że użytkownik będzie mógł wybrać więcej niż jedną wartość z filtra. Brak zaznaczenia tej opcji spowoduje, że użytkownik może wybrać tylko jedną wartość.

Polecenie SQL

Polecenie SQL jest najbardziej uniwersalnym rodzajem filtra, daje też największe możliwości konfiguracji. Niestety, jest równocześnie najtrudniejszym w konfiguracji filtrem. Aby móc go swobodnie stosować osoba projektująca filtry powinna posiadać wiedzę na temat budowania zapytań SQL oraz znać strukturę bazy danych NAVIGATORA.

 

W tej opcji pola Kolumna i Operator  powinny zawiera informacje po której kolumnie z listy chcemy filtrować oraz jakiego operatora do filtrowania użyć. System definiuje wartości z filtra na podstawie zapytania SQL.

Użytkownik musi zbudować zapytanie, które zwróci dwie kolumny:
ID – identyfikator z bazy dla wartości filtra. Ta wartość jest kluczowa, po wartości ID system będzie wyszukiwał wiersze listy które pasują do filtra.
VALUE – wartość filtra, napis który będzie wyświetlany w panelu filtrów.

Poniżej przykład zapytania, które generuje filtr oparty o status dokumentu. Filtr można zobaczyć na pierwszym zrzucie ekranu w tym artykule.

SELECT DoPa.Name AS ID, [dbo].fn_Get_Ic_ById(Ic.Icon, DoPa.Name) + ’ ’ + DoPa.Name AS Value
FROM DoPa
JOIN DoPa DoPaP ON DoPa.Parent = DoPaP.ID
LEFT JOIN Ic ON DoPa.IcID = Ic.ID
WHERE DoPaP.GUID = '2D1CE941-7D04-403F-AD9B-A70E31E61D2A’
AND DoPa.Deleted = 0
ORDER BY DoPa.[Order]

W pierwszej linii pobieramy ID z tabeli DoPa w której przechowywane są między innymi statusy dokumentu. Tu jako ID używamy kolumny Name zawierającej nazwę statusu. Zawsze należy sprawdzić jakie dane są zawarte w wybranej kolimnie konfiguracji i dopasowanie kolumny ID do tej kolumny. W kolumnie Values używamy funkcji NAVIGATORA fn_Get_Ic_ById która zwraca ikonę statusu. Dodatkowo pobierana jest nazwa statusu.
Dane pobieramy z tabeli DoPa do której dowiązujemy tę samą tabelę DoPa (klauzula JOIN)  oraz tabelę Ic w której przechowywane są ikony (klauzula LEFT JOIN)
Operacja ta jest wykonywana jest dlatego, że w tabeli DoPa przechowywane są zarówno typy dokumentów jak i statusy. Zapis w bazie wiąże status z typem dokumentu poprzez kolumnę Parent.
W klauzuli WHERE zawężamy zwracaną listę do konkretnego typu dokumentu. Używamy tu kolumny GUID. Guid typu dokumentu można znaleźć w jego konfiguracji.
Na końcu eliminujemy usunięte elementy (Deleted=0) i sortujemy zgodnie z porządkiem statusów (Order).

Powyższy przykład jest trochę bardziej skomplikowany ale dobrze pokazuje potencjał tej konstrukcji.

Kreator filtrów

Kolejnym typem filtrów jest Kreator filtrów. Jest on znacznie prostszy w użycie niż Polecenie SQL ma jednak pewne ograniczenia. W przypadku tego filtra każdą z pozycji filtra definiujemy oddzielnie:

Nadajemy nazwę i definiujemy warunki w oparciu o wartości elementów z listy. W powyższym przykładzie mamy listę pojazdów, która posiada kolumny z datami ważności ubezpieczenie i przeglądu. Interesuje nas szybkie wyszukanie informacji o tych pojazdach, którym data ważności upływa w najbliższym czasie.

Przy konfigurowaniu kreatora filtrów mamy do dyspozycji warunki proste. Są to identyczne konstrukcje jak te, których możemy użyć przy konfigurowaniu formularza. Możemy zdefiniować sumę logiczną (lub) albo iloczyn logiczny (oraz) warunków. Każdy z warunków musi się opierać na o  pojedynczą kolumnę z listy. W zależności od typu danych w kolumnie mamy do dyspozycji różne operatory. Zawsze mamy operatory porównania (równy, nierówny) oraz pusty / niepusty. Dla tekstu mamy operatory zawiera / nie zawiera zaś dla liczb i dat większy / mniejszy.

Dodatkowo dla dat możemy użyć zmiennych które pozwolą nam na odniesienie wartości z kolumny do aktualnej daty. Do dyspozycji mamy takie zmienne jak Bieżący dzień, tydzień, miesiąc, kwartał i rok. Dodatkowo, poprzez opcję przesunięcie, możemy określać daty w zależności od bieżącego dnia. Np. bieżący (dzień +1) to jutrzejszy dzień a (tydzień –  1) to poprzedni tydzień. Na przykładzie ze zrzutu ekranu widać, że użyliśmy w pierwszym filtrze opcji Bieżący tydzień a w drugim Bieżący tydzień +1. Pozwoli nam to na znalezienie pojazdów, którym termin upływa w bieżącym lub przyszłym tygodniu. W systemie filtr prezentuje się następująco:

Filtr na podstawie danych z kolumny

Jest to najprostsza kategoria filtrów która działa tak, jak klauzula GROUP BY w zapytaniu SQL.

W konfiguracji wystarczy podać kolumnę oraz metodę sortowania. System przeszukuje listę i grupuje elementy z identyczną wartością w wybranej kolumnie. Efekt działania tego filtra widać na poniższym zrzucie ekranu:

Warto zwrócić uwagę, że kolumna po której filtrujemy nie jest widoczna na liście. Nie przeszkadza to w prawidłowym działaniu filtra.

Spis treści

Menu