Záznamy ve FlexiBee je možné filtrovat. Hodnoty ve filtrech mohou být buď přímo – podporované typy proměnných, identifikátory záznamů nebo zástupné (např. now() či me()).
Seznam podporovaných atributů a jejich hodnoty (dle typu) lze získat u každé evidence v seznamu políček.
Podporované operátory:| Operátor | Název | Popis | Ukázka |
|---|---|---|---|
= nebo == |
Rovnost | Operátor se rovná hodnotě | a = 1 |
<> nebo != |
Nerovnost | Operátor se nerovná hodnotě | a != 1 |
< |
Menší | a < 1 |
|
<= |
Menší nebo rovno | a <= 1 |
|
> |
Větší | a > 1 |
|
>= |
Větší nebo rovno | a >= 1 |
|
like |
Obsahuje | Záznam obsahuje řetězec | a like 'inStr' |
between |
Je v rozsahu | vek between 18 100 |
|
begins |
Začíná na | a begins 'Win' |
|
ends |
Končí na | a ends 'Strom' |
|
in |
Je prvkem výčtu | a in (1, 2, 3) |
|
in subtree |
Patří do podstromu | (viz níže) | in subtree 1 |
is true/false |
Porovnání logických hodnot | a is true |
|
is [not] null |
Je (není) vyplněno | a is null |
|
is [not] empty |
Je (není) prázdné | není vyplněno nebo je nula/false/prázdný řetězec | a is not empty |
| Operátor | Název | Popis | Ukázka |
|---|---|---|---|
and |
Logický operátor and | Umožňuje kombinovat podmínky | a = 1 and b = 1 |
or |
Logický operátor or | Umožňuje kombinovat podmínky | a = 1 or b = 1 |
not |
Logický operátor not | Negace podmínky | not a = 1 |
( ) |
Závorky | (a = 1 or b = 1) and (c = 2) |
Operátory mají obvyklou prioritu: základní operátory v první tabulce nejvyšší, pak not, and
a nejnižší prioritu má operátor or. Pokud si nejste jistí, použijte závorky.
| Proměnná | Název | Popis | Ukázka |
|---|---|---|---|
now() |
Aktuální datum a čas | Umožňuje zobrazovat záznamy s ohledem na aktuální datum<#-- a čas-->. | datSplat < now() |
me() |
Jméno přihlášeného uživatele | Umožňuje zobrazovat záznamy s ohledem na aktuálně přihlášeného uživatele. | uzivatel = me() |
Filtry musí být v URL správně zakódovány. Při ruční tvorbě filtru jej stačí napsat nezakódovaný v prohlížeči Firefox. Když jej pak zkopírujete do schránky, Firefox jej překóduje.
Ve výrazech jako a = 1 lze zadat čísla, textové řetězce, logické hodnoty, datum a datum+čas.
Kromě toho lze použít funkce uvedené v tabulce výše.
Čísla mohou být celá, -1 nebo 10, a desetinná, 5.8 nebo -10.0.
Textové řetězce mohou být uvedeny v uvozovkách, "abc", nebo apostrofech, 'abc'.
Logické hodnoty jsou pouze true a false.
Datum se zadává ve tvaru YYYY-MM-DD, např. 2011-11-01, datum a čas ve tvaru
YYYY-MM-DD'T'HH:MM:SS[.sss], např. 2011-11-01T12:30:00. Nejsou povoleny všechny způsoby zápisu
podle ISO 8601, pouze tyto dva (resp. tři) zde uvedené.
Když se uvádí vazba na objekt, lze použít libovolný identifikátor. Interní ID se zapisují
jako čísla (firma = 1), ostatní identifikátory jako řetězce (firma = 'code:ABC').
Některé atributy, podle kterých se filtruje, jsou ve skutečnosti vazby. Např. vydané faktury lze filtrovat podle odběratele takto:
firma = 'code:FIRMA'
V případě těchto vazeb lze tečkovou notací filtrovat i podle jejich atributů; např. lze filtrovat vydané faktury podle skupiny odběratele:
firma.skupFir = 'code:ODBĚRATEL-STANDARD'
Hloubka zanoření není omezena.
Pozor: z technických důvodů prozatím nelze používat negativní operátory (např. <>).
V takovém případě dostanete chybové hlášení OR logical subselect filter not supported.
Kromě atributů lze stejným způsobem filtrovat i podle štítků (pokud jsou štítky v dané evidenci podporovány). Např. pokud chcete vyhledat všechny ceníkové položky se štítkem VIP, bude filtr
stitky='code:VIP'a celé URL pak
/c/firma/cenik/(stitky='code:VIP').xmlNebo pokud chcete všechny se štítky VIP nebo DULEZITE, použijete
stitky='code:VIP' or stitky='code:DULEZITE'resp.
/c/firma/cenik/(stitky='code:VIP' or stitky='code:DULEZITE').xmlStejně lze použít i operátor
and.
Položky ceníku jsou řazeny do stromové struktury (je možné, že v budoucnu půjde do stromové struktury řadit i v jiných evidencích) a podle tohoto zařazení lze také filtrovat. Uvažujme tento strom ceníku:
(id = 2)
(id = 3)
(id = 4)(id = 5)
(id = 6)(id = 7)
(id = 8)(id = 9)Takto se strom zobrazuje v aplikaci, ovšem pro účely stromové kategorizace položek považujeme za kořen až Připojené položky. Uvedená ID jsou jen ilustrační; pokud pracujete se stromem přes REST API, je doporučeno použít externí identifikátory.
Nad ceníkem (/c/firma/cenik) lze zapsat filtr pro získání všech položek z Kategorie 1 a všech
podkategorií (tedy z uzlů Kategorie 1, Kategorie 1.1, Kategorie 1.2
a Kategorie 1.2.1) takto:
in subtree 3
což je vlastně zkrácený zápis pro
id in subtree 3
Celé URL by vypadalo takto:
/c/firma/cenik/(in subtree 3)
Pokud je potřeba získat položky jen z daného uzlu a ne z celého podstromu, lze použít modifikátor
nonrecursive; např. pro získání položek jen z Kategorie 2, ale ne už z Kategorie 2.1
a Kategorie 2.2, lze psát
in subtree 7 nonrecursive /c/firma/cenik/(in subtree 7 nonrecursive)
Výše bylo uvedeno, že zápis in subtree 3 je zkratkou pro id in subtree 3, což je důležité
ve chvíli, kdy je potřeba podle zařazení ceníku do podstromu filtrovat jiné evidence. Lze např. vyfiltrovat všechny
skladové karty pro ceníkové položky z určitého podstromu, takto:
cenik in subtree 3 /c/firma/skladova-karta/(cenik in subtree 3)