Zaawansowana konfiguracja filtrów

image_print

Funkcjonalność filtrów użytkownika umożliwia tworzenie dodatkowych zaawansowanych filtrów. Okno Filtry użytkownika pozwala na budowanie filtrów na bazie predefiniowanych pól, jak również za pomocą wyrażenia SQL.

Okno Filtry użytkownika można otworzyć wybierając menu Konfiguracja Narzędzia Filtry bądź za pomocą przycisku [Otwórz] oznaczonego ikoną w sekcji filtra na danej liście.

Przycisk otwierający okno Filtry użytkownika

Okno Filtry użytkownika składa się z drzewa obiektów, dla których można zdefiniować filtry. Użytkownik ma możliwość podglądu filtrów zdefiniowanych dla danego obszaru poprzez wybranie przycisku [>] obok nazwy danego obiektu. Po prawej stronie okna znajduje się formularz definicji danego filtra. Zakładka Konstruktor pozwala na budowanie nowego filtra, natomiast zakładka Grupy operatorów pozwala na zarządzanie jego dostępnością dla wybranych operatorów.

Okno Filtry użytkownika

Wstążka okna Filtry użytkownika, oprócz standardowych przycisków zapisu zmian i zamknięcia okna, zawiera przyciski dodawania i usuwania filtra z listy (drzewa obszarów systemowych).

Filtr podpięty do danego obiektu w systemie można również kopiować. W tym celu należy wybrać z drzewa filtrów pozycję, a następnie wybrać przycisk [Kopiuj]. Kolejną czynnością jest wskazanie innego obiektu na drzewie i wybór przycisku [Wklej]. Należy pamiętać, że podczas kopiowania filtra wartości pól, po których możliwe jest filtrowanie, mogą się różnić, dlatego użytkownik powinien je zweryfikować, bądź też ustalić na nowo i zapisać zmiany.

Przyciski [Cofnij]/[Ponów] pozwalają użytkownikowi na wycofanie lub przywrócenie ostatnio dokonanej zmiany w konstruktorze filtrów, natomiast przycisk [Wyczyść] umożliwia wycofanie wszystkich wprowadzonych zmian i rozpoczęcie budowania filtra od nowa. Opcje te dostępne są również w obszarze Edycja na zakładce Konstruktor ([<-] / [->] / [<>]).

Definiowanie nowego filtra

Żeby zdefiniować nowy filtr w oknie Filtry użytkownika, należy wybrać listę lub obiekt, do której/którego ma zostać przypisany nowy filtr, a następnie wybrać przycisk [Dodaj] znajdujący się na wstążce lub nad listą obiektów.

Na nagłówku formularza definicji danego filtra należy podać nazwę filtra oraz opcjonalnie wprowadzić dodatkowy opis.

Sekcja Zapamiętane wyrażenia pozwala na tymczasowe przechowywanie wyrażeń zbudowanych wcześniej w obrębie jednego filtra. W tym celu, należy przeciągnąć dane wyrażenie klikając jedno z miejsc zaznaczonych na poniższym zrzucie ekranu, a następnie umieścić je w sekcji Zapamiętane wyrażenia.

Przenoszenie wyrażenia do sekcji Zapamiętane wyrażenia

Zapamiętane wyrażenie może być wykorzystane do automatycznego uzupełnienia filtra definiowanego w odniesieniu do tego samego miejsca w systemie. Jest również możliwość wykorzystania zapamiętanego wyrażenie w ramach filtra dla innego miejsca, należy jednak pamiętać, że pole z nazwą kolumny pozostanie puste, jeśli dane miejsce nie umożliwia podania nazwy kolumny określonej w zapamiętanym wyrażeniu.

W celu wykorzystania zapamiętanego wyrażenia, należy przeciągnąć je do sekcji Filtr.

Sekcja Parametry umożliwia zdefiniowanie dodatkowych parametrów wykorzystywanych przez filtr, wraz z ich domyślnymi wartościami. Szczegółowy opis działania parametrów został opisany w rozdziale Budowanie nowego filtra z wykorzystaniem parametrów.

Przycisk [P] otwierający okno wartości parametrów
Użytkownik ma możliwość budowania filtra w następujący sposób:

  • Poprzez wybór predefiniowanych pól
  • Poprzez wybór wyrażenia SQL i wpisania warunków końcowych
  • Metodą łączenia wyżej wymienionych typów

Budowanie nowego filtra z predefiniowanych pól

Aby utworzyć filtr z predefiniowanych pól, należy przenieść przycisk [Wartość pola] z sekcji Warunki do sekcji Filtr. Pole to może zostać dodane również poprzez menu kontekstowe, uruchamiane prawym przyciskiem myszy, za pomocą opcji [Wstaw warunek dla wartości pola].

Definiowanie warunku dla predefiniowanych pól

Kroki budowy filtra z wykorzystaniem przycisku [Wartość pola]:

  1. Po przeniesieniu przycisku [Wartość pola] system pozwala na wybór jednej z dostępnych w bazie danych kolumn wybranej listy obiektów, według której filtr będzie funkcjonował.
  2. Kolejnym polem do wyboru jest operator logiczny, który pozwala na określenie, w jaki sposób wartość wybranej kolumny ma być porównywana z wartością podaną przez operatora.
  3. Ostatnim polem jest pole wprowadzania określonej wartości, która będzie porównywana z wartościami wybranej kolumny, bądź też podanie parametru, który będzie mógł być zmieniany każdorazowo przy uruchamianiu filtra.

Filtr z wybraną kolumną, operatorem oraz wpisaną wartością może zostać zapisany i użyty na wybranej liście obiektów.

Budowanie nowego filtra z wyrażeniem SQL

Aby utworzyć filtr z wyrażeniem SQL, należy przenieść przycisk [Wyrażenie SQL] z sekcji Warunki do sekcji Filtr.

Uwaga
Należy pamiętać, że tabele z przedrostkiem sec są tabelami z chronionymi schematami. W związku z tym, w filtrach, w których występują takie tabele, należy odwoływać się do nich przez odpowiednie widoki. Dla przykładu: w zapytaniach ad hoc z SSMS użytkownik może skorzystać z SecAttributes.AttributeClasses, natomiast w filtrze należałoby użyć tabeli Attributes.AttributeClasses.
Definiowanie filtra w oparciu o zapytanie SQL

Pole SQL bazuje na następującym zapytaniu:

SELECT [kolumny] FROM [tabela] WHERE [zdefiniowany filtr]

W związku z tym, standardowo w polu SQL należy zdefiniować jedynie część zapytania wpisywaną po słowie WHERE, ponieważ pierwsza część odnosi się do tabeli wyświetlającej listę, dla której filtr jest budowany (nie należy pisać słów kluczowych SELECT i WHERE).

Przykład

Użytkownik tworzy filtr mający za zadanie wyświetlić wszystkie faktury sprzedaży, które zostały wygenerowane z dokumentu zamówienia sprzedaży (ZS). W tym celu, w polu Zapytanie SQL wprowadza następujące zapytanie zdefiniowane dla listy faktur sprzedaży:

{NumberString} IN
(SELECT FS.NumberString FROM Sales.Headers FS
INNER JOIN Sales.DocumentHeaderRelations HR ON FS.ID = HR.ChildHeaderID
INNER JOIN Sales.Headers ZS ON ZS.ID = HR.ParentHeaderID
INNER JOIN DT.DocumentTypes DT ON DT.ID = ZS.DocumentTypesID AND DT.NamespaceEntry = ‘Comarch.B2.Sales.Documents.SalesOrderManager’)

Istnieje jednak również możliwość użycia w zapytaniu danych z innej tabeli – w takim przypadku, należy odwołać się do nazw dotyczących tejże tabeli, na przykład:

EXISTS (SELECT * FROM Dictionaries.Parameters WHERE InternalName = ‘DefaultLanguage’ AND Value = ‘1’)

Pole SQL może również zostać dodane poprzez menu kontekstowe, uruchamiane prawym przyciskiem myszy, za pomocą opcji [Wstaw wyrażenie SQL].

Budowanie nowego filtra przy użyciu warunkowego łączenia wyrażeń

Konstruktor filtra umożliwia łączenie warunków filtrowania za pomocą operatorów logicznych: LUB, ORAZ, NIE, znajdujących się w sekcji Wyrażenia.

Wyrażenie połączone operatorem LUB wyświetla wszystkie obiekty, które spełniają pierwszy lub drugi warunek wprowadzony w tym wyrażeniu. Dany obiekt zostanie wyświetlony po spełnieniu chociaż jednego warunku.

Wyrażenie połączone operatorem ORAZ wyświetla wszystkie obiekty, które spełniają pierwszy oraz drugi warunek wprowadzony w tym wyrażeniu. Dany obiekt nie będzie wyświetlony jeśli chociaż jeden warunek nie zostanie spełniony.

Wyrażenie objęte operatorem NIE wyświetla wszystkie obiekty, które nie spełniają warunku zawartego w wyrażeniu.

System pozwala na dowolne łączenie operatorów logicznych i ich zagnieżdżanie. Można to zrobić poprzez dodanie w pierwszej kolejności najbardziej zewnętrznych operatorów i umieszczenie między nimi operatorów wewnętrznych lub poprzez zagnieżdżenie gotowych wyrażeń w operatorze przy użyciu menu kontekstowego.

Przykład

Użytkownik potrzebuje filtra, który wyszuka na liście faktur sprzedaży dokumenty utworzone 14 lub 15 stycznia 2018 roku dla kontrahenta Studio K. W celu dodania takiego filtra, użytkownik wykonuje następujące czynności:

  • W oknie konstruktora filtra użytkownik dodaje nowy filtr dla listy faktur sprzedaży
  • Użytkownik dodaje najbardziej zewnętrzny operator – ORAZ, przeciągając go na pole filtra lub korzystając z opcji w menu kontekstowym

  • Użytkownik dodaje operator LUB w polu pierwszego wyrażenia, przeciągając go z sekcji Wyrażenia lub korzystając z opcji w menu kontekstowym

  • Użytkownik przeciąga lub wybiera z menu kontekstowego warunek Wartość pola dla obu pól oddzielonych operatorem LUB, wybiera opcję DocumentDate dla obu warunków i definiuje daty jako 14-Jan-2018 i 15-Jan-2018

  • Użytkownik przeciąga lub wybiera z menu kontekstowego warunek Wartość pola, wybiera opcję CustomerName i definiuje nazwę kontrahenta jako Studio K

Po wykonaniu tych czynności użytkownik przypina filtr do wybranych grup operatorów na zakładce Grupy operatorów, nadaje filtrowi nazwę i zapisuje gotowy filtr.

Budowanie nowego filtra z wykorzystaniem parametrów

W dolnej części okna konstruktora filtrów dostępne jest pole definiowania parametrów. W celu dodania nowego parametru, należy posłużyć się przyciskiem [Dodaj] znajdującym się w grupie przycisków Parametry. Po dodaniu nowego parametru istnieje możliwość wprowadzenia jego nazwy, typu oraz wartości domyślnej, która zostanie wykorzystana w przypadku braku wprowadzenia wartości przez operatora.

Definiowanie parametrów filtra

Po zdefiniowaniu parametru można go wykorzystać poprzez wybór opcji [Wstaw parametr], dostępnej w menu kontekstowym po wybraniu prawego przycisku myszy na polu zapytania SQL lub predefiniowanym polu. W polu zapytania SQL można również wykorzystać wyrażenie {param: nazwa_parametru}.

Wstawianie parametrów podczas budowania filtra
Przykład
Jeśli użytkownik utworzy filtr wyświetlający faktury sprzedaży wystawione w walucie określonej parametrem symbolu waluty i określi tę walutę jako PLN, filtr taki będzie wyszukiwał wszystkie faktury sprzedaży zdefiniowane w tej walucie.

Po zapisaniu filtra istnieje możliwość zmiany wartości parametru. Po zaznaczeniu filtra na liście obiektów, dla których został utworzony, po prawej stronie pojawi się przycisk (ikona) [P].

Zmiana wartości parametru filtrowania

Wybranie przycisku [P] spowoduje otworzenie okna pozwalającego na określenie wartości parametrów, które będą wykorzystywane podczas kolejnego filtrowania.

Okno definiowania nowych wartości parametrów

Schowek

Konstruktor filtrów zawiera schowek, który służy do tymczasowego przechowywania zdefiniowanych wyrażeń SQL lub predefiniowanych pól. Po zdefiniowaniu wyrażenia SQL lub predefiniowanego pola można je przenieść do obszaru Zapamiętane wyrażenia (schowek), przeciągając wyrażenie lewym przyciskiem myszy. Jeśli użytkownik chce ponownie wykorzystać wyrażenie przechowywane w schowku, przenosi je w analogiczny sposób ze schowka na pole definiowania filtra.

Schowek zdefiniowanych filtrów

Dołączanie grupy operatorów

Filtr będzie dostępny do wyboru pod listą obiektów jeśli zalogowany użytkownik należy do grupy operatorów, która została dołączona do filtra na zakładce Grupy operatorów.

Formularz definiowania filtra – zakładka Grupy operatorów

W celu dołączenia grupy operatorów do filtra, należy przejść na zakładkę Grupy operatorów, wybrać przycisk [Dodaj], wskazać grupę operatorów z listy dostępnych i nacisnąć przycisk [Wybierz].

Dodatkowo użytkownik ma możliwość zadecydować czy dla grupy operatorów dany filtr ma być:

  • Obowiązkowy – zaznaczenie parametru spowoduje, że dla użytkownika należącego do tej grupy operatorów lista obiektów zostanie automatycznie przefiltrowana. Użytkownik może wybrać inny dostępny filtr w celu przefiltrowania listy – filtr obowiązkowy oraz ten wybrany przez użytkownika łączą się operacją AND („i”)
  • Domyślny – zaznaczenie parametru spowoduje, że dla użytkownika należącego do tej grupy operatorów lista obiektów zostanie automatycznie przefiltrowana, a informacja o wybranym filtrze będzie widoczna dla operatora. Użytkownik może wybrać inny dostępny filtr w celu przefiltrowania listy. Tylko jeden filtr może być filtrem domyślnym dla danej grupy operatorów
Uwaga
Nie ma możliwości jednoczesnego zaznaczenia obu parametrów (Obowiązkowy i Domyślny) dla danej grupy operatorów.

Zakładka Filtry na formularzu grupy operatorów

Na formularzu grupy operatorów dostępna jest zakładka Filtry, na której znajdują się wszystkie filtry zdefiniowane dla danej grupy operatorów.

Formularz grupy operatorów – zakładka Filtry

Oprócz możliwości edycji filtra z poziomu tej zakładki, istnieje dodatkowo możliwość wyboru przycisku [Lista], który bezpośrednio przenosi operatora do listy filtrów. Z tego poziomu istnieje możliwość zdefiniowania nowego filtra i dołączenia go do grupy operatorów.

Czy ten artykuł był pomocny?