Záznamy v systéme ABRA Flexi je možné filtrovať. Hodnoty vo filtroch môžu byť buď priamo - podporované typy premenných, identifikátory záznamov
alebo zástupné znaky (napr. now()
alebo me()
).
Zoznam podporovaných atribútov a ich hodnôt (podľa typu) možno získať pre každý záznam v zozname polí.
Podporované operátory:
Prevádzkovateľ | Názov | Popis | Vzorka |
| Rovnosť | Operátor sa rovná hodnote |
|
| Nerovnosť | Operátor sa nerovná hodnote |
|
| Menej |
| |
| Menej alebo rovná sa |
| |
| Väčší |
| |
| Väčšie alebo rovné |
| |
| Obsahuje | Záznam obsahuje reťazec |
|
| Obsahuje bez ohľadu na čiarky | Záznam obsahuje reťazec bez ohľadu na čiarky |
|
| Je v rozsahu |
| |
| Začína sa na |
| |
| Začína sa akýmikoľvek čiarkami a bodkami |
| |
| Končí v |
| |
| Je výčtový prvok |
| |
| Patrí do podstromu | (pozri nižšie) |
|
| Porovnanie logických hodnôt |
| |
| Je (ne)naplnený |
| |
| Je (nie) prázdny | nie je vyplnený alebo je nulový/nepravdivý/prázdny reťazec |
|
Operátory z
podobnej
skupiny pracujú správne len v ABRA Flexi s databázou PostgreSQL 9.0 alebo novšou. V starších verziách databázy tieto operátory rozlišovali medzi stredníkmi a čiarkami, alebo sa správali rovnako ako operátory bezpodobného
kľúčového slova.
Prevádzkovateľ | Názov | Popis | Vzorka |
| Logický operátor a | Umožňuje kombinovať podmienky |
|
| Logický operátor alebo | Umožňuje kombinovať podmienky |
|
| Logický operátor nie | Negácia podmienky |
|
| Parentheses |
|
Operátory majú obvyklú prioritu: najvyššiu prioritu majú základné operátory v prvej tabuľke, potom not
, and a
najnižšiu prioritu má operátor or
. Ak si nie ste istí, použite zátvorky.
Variabilné | Názov | Popis | Vzorka |
| Aktuálny dátum a čas | Umožňuje zobraziť záznamy vzhľadom na aktuálny dátum. |
|
| Bežný rok | Umožňuje zobraziť záznamy s ohľadom na aktuálny rok. |
|
| Meno prihláseného používateľa | Umožňuje zobraziť záznamy vzhľadom na aktuálne prihláseného používateľa. |
|
Filtre musia byť v adrese URL správne zakódované. Pri ručnom vytváraní filtra ho jednoducho zadajte nekódovane do prehliadača Firefox. Keď ho potom skopírujete do schránky, Firefox ho prekóduje.
Zápis hodnôt
Výrazy ako a = 1
môžu obsahovať čísla, textové reťazce, logické hodnoty, dátum a dátum+čas. Okrem toho je možné použiť funkcie uvedené v tabuľke vyššie.
Čísla môžu byť celé, -1
alebo 10
, a desatinné, 5,8
alebo -10,0
.
Textové reťazce môžu byť uzavreté v úvodzovkách "abc"
alebo v apostrofoch "abc"
.
Logické hodnoty sú len true
a false
.
Dátum sa zadáva v tvare RRRR-MM-DD
, napr. 2011-11-01
, a dátum a čas v tvare RRRR-MM-DD'T'HH:MM:SS[.sss]
, napr. 2011-11-01T12:30:00
. Nie všetky metódy zápisu podľa normy ISO 8601 sú povolené, iba dve (alebo tri) uvedené tu.
Ak je zadaná väzba na objekt, môže sa použiť akýkoľvek identifikátor. Interné identifikátory sa zapisujú ako čísla(spoločnosť = 1
), ostatné identifikátory ako reťazce(spoločnosť = "code:ABC"
).
Filtrovanie podľa vnorených hodnôt
Niektoré z atribútov, podľa ktorých sa filtruje, sú v skutočnosti obmedzenia. Napríklad vystavené faktúry možno filtrovať podľa zákazníka takto:
company = 'code:COMPANY'
V prípade týchto väzieb môžete tiež filtrovať podľa ich atribútov pomocou bodového zápisu; napríklad môžete filtrovať vydané faktúry podľa skupiny zákazníkov:
company.groupFir = 'code:CUSTOMER-STANDARD'
Hĺbka ponoru nie je obmedzená.
Poznámka: z technických dôvodov nie je možné používať záporné operátory (napr. <?xml version="1.0"?>
.
Filtrovanie podľa štítkov
Okrem atribútov môžete rovnakým spôsobom filtrovať aj podľa štítkov (ak sú štítky v zázname podporované). Ak chcete napríklad vyhľadať všetky položky cenníka s označením VIP, filter bude:
tagy='code:VIP'
a úplnú adresu URL potom
/c/company/pricing/(stitky='code:VIP').xml
Alebo ak chcete všetky s označením VIP alebo DULEZITE, použite:
stitky='code:VIP' alebo stitky='code:DULEZITE'
resp.
/c/company/pricing/(stitky='code:VIP' alebo stitky='code:DULEZITE').xml
Rovnakým spôsobom možno použiť operátor and
.
Filtrovanie podľa príslušnosti k podstromu
Položky cenníka sú zoradené do stromovej štruktúry (je možné, že v budúcnosti bude možné do stromovej štruktúry zoradiť aj ďalšie záznamy) a podľa tohto triedenia môžete aj filtrovať. Zvážte tento strom cenníka:
Cenník stromu
Pripojené položky (id = 2
)
Kategória 1
(id = 3
)Kategória 1.1
(id = 4
)Kategória 1.2
(id = 5
)Kategória 1.2.1
(id = 6
)Kategória 2
(id = 7
)Kategória 2.1
(id = 8
)Kategória 2.2
(id = 9
)
Nepripojené položky (virtuálny uzol, pod ktorým sa v aplikácii zobrazujú položky, ktoré nie sú zahrnuté v strome; nemožno v ňom filtrovať)
Takto sa strom zobrazuje v aplikácii, ale na účely kategorizácie položiek do stromu považujeme za koreň položky Connected Items. Uvedené ID slúžia len na ilustráciu; ak pracujete so stromom prostredníctvom rozhrania REST API, odporúča sa používať externé ID.
Nad cenník(/c/company/pricing)
možno napísať filter, ktorý načíta všetky položky z kategórie 1 a všetkých podkategórií (t. j. uzly kategórie 1, kategórie 1.1, kategórie 1.2 a kategórie 1.2.1) takto:
v podstrome 3
čo je vlastne skrátený zápis pre
id v podstrome 3
Úplná adresa URL by vyzerala takto:
/c/company/price/(v podstrome 3)
Ak je potrebné získať položky len z daného uzla a nie z celého podstromu, možno použiť nerekurzívny
modifikátor; napr. ak chceme získať položky len z kategórie 2, ale už nie z kategórie 2.1 a 2.2, môžeme napísať
v podstrome 7 nerekurzívne /c/company/price/(v podstrome 7 nerekurzívne)
Vyššie bolo uvedené, že záznam v podstrome 3
je skratkou pre id v podstrome 3
, čo je dôležité, keď je potrebné filtrovať ostatné záznamy podľa klasifikácie cien v podstrome. Napríklad je možné vyfiltrovať všetky skladové karty pre položky cenníka z určitého podstromu takto:
cenník v podstrome 3 /c/company/stock-card/(cenník v podstrome 3)
Filtrovanie pomocou relačných vlastností
Filter umožňuje ľubovoľnú hĺbku ponoru s výnimkou vlastností, ktoré nemajú jednoznačnú registráciu.
/event/(zakazka.mistUrc.city = 'Prague')