Filtrovanie záznamov

Ako filtrovať záznamy prostredníctvom rozhrania REST API

Petr Pech avatar
Written by Petr Pech
Updated over a week ago

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

= alebo == alebo eq

Rovnosť

Operátor sa rovná hodnote

a = 1

<?xml version="1.0"?> nie alebo neq

Nerovnosť

Operátor sa nerovná hodnote

a != 1

<?xml version="1.0"?> lt

Menej

a < 1

<?xml version="1.0"?> lte

Menej alebo rovná sa

a <= 1

> alebo gt

Väčší

a > 1

>= alebo gte

Väčšie alebo rovné

a >= 1

ako

Obsahuje

Záznam obsahuje reťazec

a ako 'inStr'

ako podobné

Obsahuje bez ohľadu na čiarky

Záznam obsahuje reťazec bez ohľadu na čiarky

a podobne ako 'inStr'

medzi

Je v rozsahu

vek medzi 18 a 100 rokmi

začína

Začína sa na

a začína "Win

začína podobne

Začína sa akýmikoľvek čiarkami a bodkami

a začína podobne ako "Win

končí

Končí v

a končí "Strom

na stránke

Je výčtový prvok

a v (1, 2, 3)

v podstrome

Patrí do podstromu

(pozri nižšie)

v podstrome 1

je pravda/nepravda

Porovnanie logických hodnôt

a je pravda

je [nie] nulový

Je (ne)naplnený

a je null

je [nie] prázdny

Je (nie) prázdny

nie je vyplnený alebo je nulový/nepravdivý/prázdny reťazec

a nie je prázdny

  1. 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 bez podobného kľúčového slova.

Prevádzkovateľ

Názov

Popis

Vzorka

a

Logický operátor a

Umožňuje kombinovať podmienky

a = 1 a b = 1

alebo

Logický operátor alebo

Umožňuje kombinovať podmienky

a = 1 alebo b = 1

nie

Logický operátor nie

Negácia podmienky

nie a = 1

( )

Parentheses

(a = 1 alebo b = 1) a (c = 2)

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

now()

Aktuálny dátum a čas

Umožňuje zobraziť záznamy vzhľadom na aktuálny dátum.

datSplat < now()

currentYear()

Bežný rok

Umožňuje zobraziť záznamy s ohľadom na aktuálny rok.

platiDo <= currentYear()

ja()

Meno prihláseného používateľa

Umožňuje zobraziť záznamy vzhľadom na aktuálne prihláseného používateľa.

user = me()

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'

/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')
Did this answer your question?