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 |
| Gleichberechtigung | Der Operator ist gleich dem Wert von |
|
| Ungleichheit | Der Operator ist nicht gleich dem Wert von |
|
| Weniger |
|
|
| Kleiner als oder gleich |
|
|
| Größere |
|
|
| Größer als oder gleich |
|
|
| Enthält | Der Datensatz enthält die Zeichenkette |
|
| Enthält unabhängig von den Kommata | Der Datensatz enthält die Zeichenkette unabhängig von den Kommas |
|
| Sie liegt im Bereich von |
|
|
| Beginnt bei |
|
|
| Beginnt mit was auch immer Kommas und Kommas |
|
|
| Endet in |
|
|
| Ist ein Aufzählungselement |
|
|
| Sie gehört zu einem Teilbaum | (siehe unten) |
|
| Boolescher Wertevergleich |
|
|
| Ist (nicht) gefüllt |
|
|
| Ist (nicht) leer | ist nicht gefüllt oder ist null/falsch/leerer String |
|
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üsselwortsimilar
.
Der Bediener | Name | Beschreibung | Beispiel |
| Logischer Operator und | Ermöglicht die Kombination von Bedingungen |
|
| Logischer Operator oder | Ermöglicht die Kombination von Bedingungen |
|
| Logischer Operator nicht | Negation einer Bedingung |
|
| Klammern |
|
|
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 |
| Aktuelles Datum und Uhrzeit | Ermöglicht die Anzeige von Datensätzen in Bezug auf das aktuelle Datum. |
|
| Laufendes Jahr | Ermöglicht die Anzeige von Datensätzen in Bezug auf das aktuelle Jahr. |
|
| Name des eingeloggten Benutzers | Ermöglicht die Anzeige von Datensätzen in Bezug auf den aktuell angemeldeten Benutzer. |
|
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')