Datensätze filtern

So filtern Sie Datensätze über die REST-API

Petr Pech avatar
Verfasst von Petr Pech
Vor über einer Woche aktualisiert

Die Datensätze in ABRA Flexi können gefiltert werden. Werte in Filtern können entweder direkt sein - unterstützte Variablentypen, Datensatzbezeichner

oder Wildcards (z. B. now() oder me()).

Die Liste der unterstützten Attribute und ihrer Werte (nach Typ) kann für jeden Datensatz in der Liste der Felder abgerufen werden.

Unterstützte Operatoren:

Bediener

Name

Beschreibung

Beispiel

= oder == oder eq

Gleichberechtigung

Der Operator ist gleich dem Wert von

a = 1

<> oder != oder ne oder neq

Ungleichheit

Der Operator ist nicht gleich dem Wert von

a != 1

< oder lt

Weniger

a < 1

<= nebo lte

Kleiner als oder gleich

a <= 1

> nebo gt

Größere

a > 1

>= nebo gte

Größer als oder gleich

a >= 1

like

Enthält

Der Datensatz enthält die Zeichenkette

a like 'inStr'

like similar

Enthält unabhängig von den Kommata

Der Datensatz enthält die Zeichenkette unabhängig von den Kommas

a like similar 'inStr''

between

Sie liegt im Bereich von

vek between 18 100

begins

Beginnt bei

a begins 'Win'

begins similar

Beginnt mit was auch immer Kommas und Kommas

a begins similar 'Win'

ends

Endet in

a ends 'Strom'

in

Ist ein Aufzählungselement

a in (1, 2, 3)

in subtree

Sie gehört zu einem Teilbaum

(siehe unten)

in subtree 1

is true/false

Boolescher Wertevergleich

a is true

is [not] null

Ist (nicht) gefüllt

a is null

is [not] empty

Ist (nicht) leer

ist nicht gefüllt oder ist null/falsch/leerer String

a is not empty

  1. Operatoren aus der ähnlichen Gruppe arbeiten nur auf ABRA Flexi mit PostgreSQL 9.0 oder höherer Datenbank korrekt. Bei älteren Versionen der Datenbank unterscheiden diese Operatoren zwischen Semikolon und Komma bzw. verhalten sich wie Operatoren ohne das Schlüsselwort similar.

Der Bediener

Name

Beschreibung

Beispiel

and

Logischer Operator und

Ermöglicht die Kombination von Bedingungen

a = 1 and b = 1

or

Logischer Operator oder

Ermöglicht die Kombination von Bedingungen

a = 1 or b = 1

not

Logischer Operator nicht

Negation einer Bedingung

not a = 1

( )

Klammern

(a = 1 or b = 1) and (c = 2)

Die Operatoren haben den üblichen Vorrang: Die Grundoperatoren in der ersten Tabelle haben den höchsten Vorrang, dann folgen not, and , und der oder-Operator hat den niedrigsten Vorrang. Wenn Sie sich nicht sicher sind, verwenden Sie Klammern.

Variabel

Name

Beschreibung

Beispiel

now()

Aktuelles Datum und Uhrzeit

Ermöglicht die Anzeige von Datensätzen in Bezug auf das aktuelle Datum.

datSplat < now()

currentYear()

Laufendes Jahr

Ermöglicht die Anzeige von Datensätzen in Bezug auf das aktuelle Jahr.

platiDo <= currentYear()

me()

Name des eingeloggten Benutzers

Ermöglicht die Anzeige von Datensätzen in Bezug auf den aktuell angemeldeten Benutzer.

benutzer = me()

Filter müssen in der URL korrekt kodiert sein. Wenn Sie einen Filter manuell erstellen, geben Sie ihn einfach unverschlüsselt in Firefox ein. Wenn Sie ihn dann in die Zwischenablage kopieren, wird er von Firefox transkodiert.

Werte schreiben

Ausdrücke wie a = 1 können Zahlen, Textstrings, boolesche Werte, Datum und Datum+Zeit enthalten. Zusätzlich können die in der obigen Tabelle aufgeführten Funktionen verwendet werden.

Zahlen können ganzzahlig sein, -1 oder 10, und dezimal, 5,8 oder -10,0.

Textstrings können in Anführungszeichen, 'abc', oder Apostrophe, 'abc', eingeschlossen werden.

Boolesche Werte sind nur true und false.

Das Datum wird in der Form JJJJ-MM-TT eingegeben, z. B. 2011-11-01, und das Datum und die Uhrzeit in der Form JJJJ-MM-T'T'HH:MM:SS[.sss], z. B. 2011-11-01T12:30:00. Es sind nicht alle ISO 8601-Notationsmethoden erlaubt, sondern nur die zwei (oder drei), die hier aufgeführt sind.

Wenn eine Objektbindung angegeben wird, kann ein beliebiger Bezeichner verwendet werden. Interne Kennungen werden als Zahlen geschrieben(firma = 1), andere Kennungen als Zeichenketten (firma = 'code:ABC').

Filtern nach verschachtelten Werten

Einige der Attribute, nach denen gefiltert wird, sind eigentlich Beschränkungen. Ausgestellte Rechnungen können zum Beispiel wie folgt nach Kunden gefiltert werden:

firma = 'code:FIRMA'

Bei diesen Bindungen können Sie auch nach ihren Attributen in Punktschreibweise filtern, z. B. können Sie ausgestellte Rechnungen nach der Kundengruppe filtern:

firma.skupFir = 'code:CUSTOMER-STANDARD'

Die Eintauchtiefe ist nicht begrenzt.

Hinweis: Aus technischen Gründen können negative Operatoren (z. B. <>). In diesem Fall erhalten Sie eine Fehlermeldung OR logical subselect filter not supported.

Filtern nach Etiketten

Zusätzlich zu den Attributen können Sie auf die gleiche Weise auch nach Bezeichnungen filtern (wenn Bezeichnungen im Datensatz unterstützt werden). Wenn Sie z. B. nach allen Preislistenartikeln mit der Bezeichnung VIP suchen möchten, wird der Filter:

stitky='code:VIP'

und die vollständige URL dann

/c/firma/cenik/(stitky='code:VIP').xml

Oder wenn Sie alle mit VIP- oder DULEZITE-Tags wollen, verwenden Sie:

stitky='code:VIP' oder stitky='code:DULEZITE'

beziehungsweise.

/c/firma/cenik/(stitky='code:VIP' or stitky='code:DULEZITE').xml

Der Operator und kann auf die gleiche Weise verwendet werden.

Filtern nach Teilbaumzugehörigkeit

Die Preislistenartikel werden in einer Baumstruktur sortiert (möglicherweise können in Zukunft auch andere Datensätze in die Baumstruktur einsortiert werden) und Sie können auch nach dieser Klassifizierung filtern. Betrachten Sie diesen Preislistenbaum:

Preislistenbaum

Angehängte Artikel (id = 2)

  • Kategorie 1 (id = 3)

  • Kategorie 1.1 (id = 4)

  • Kategorie 1.2 (id = 5)

  • Kategorie 1.2.1 (id = 6)

  • Kategorie 2 (id = 7)

  • Kategorie 2.1 (id = 8)

  • Kategorie 2.2 (id = 9)

Nicht zugeordnete Elemente (virtueller Knoten, unter dem Elemente, die nicht im Baum enthalten sind, in der Anwendung angezeigt werden; Sie können darin nicht filtern)

So erscheint der Baum in der Anwendung, aber für die Zwecke der Baumkategorisierung von Elementen betrachten wir die Wurzel als die Verbundenen Elemente. Die aufgeführten IDs dienen nur zur Veranschaulichung; wenn Sie mit dem Baum über die REST-API arbeiten, wird empfohlen, externe IDs zu verwenden.

Ein Filter kann über die Preisliste(/c/firma/cenik) geschrieben werden, um alle Artikel aus Kategorie 1 und allen Unterkategorien (d. h. Kategorie 1, Kategorie 1.1, Kategorie 1.2 und Kategorie 1.2.1-Knoten) wie folgt abzurufen:

in subtree 3

was eigentlich eine Kurzschreibweise ist für

id in subtree 3

Die vollständige URL würde wie folgt aussehen:

/c/firma/cenik/(in subtree 3)

Wenn es erforderlich ist, Elemente nur aus einem bestimmten Knoten und nicht aus dem gesamten Teilbaum abzurufen, kann der nonrecursive Modifikator verwendet werden; um z. B. Elemente nur aus Kategorie 2, aber nicht mehr aus Kategorie 2.1 und Kategorie 2.2 abzurufen, kann man schreiben

in subtree 7 nonrecursive /c/firma/cenik/(in subtree 7 nonrecursive)

Es wurde oben erwähnt, dass der Eintrag in subtree 3 eine Abkürzung für id in subtree 3 ist, was wichtig ist, wenn andere Datensätze nach der Klassifizierung der Preisgestaltung im Teilbaum gefiltert werden müssen. Zum Beispiel kann man alle Bestandskarten für Preislistenartikel aus einem bestimmten Teilbaum wie folgt filtern:

cenik in subtree 3 /c/firma/skladova-karta/(cenik in subtree 3)

Filtern über relationale Eigenschaften

Der Filter erlaubt eine beliebige Eintauchtiefe, außer bei Eigenschaften, die keine eindeutige Registrierung haben.

/udalost/(zakazka.mistUrc.mesto = 'Praha')
Hat dies Ihre Frage beantwortet?