Um lange Listen aufgrund verschiedener Kriterien performant filtern zu können, können kundenspezifische Werte auf User-Einträgen in sogenannten Keys abgelegt werden, welche via OCL abgefragt werden können.
Dafür gibt es ein Feld Keys auf UserEintrag (UserEinträge sind alle Objekte in Vertec, welche in Ordnern abgelegt werden können, wie Adressen, Projekte, Bearbeiter, Leistungen, etc.), in welches (via Python) die Key Wertepaare eingetragen werden. Es werden folgende Datentypen unterstützt:
- String
- Boolean
- Date, Datetime
- Integer
- Currency
Via Custom Renderer gibt es die Möglichkeit, Keys direkt in ein Feld oder in der Liste einzugeben. Ein Beispiel dafür finden Sie im Abschnitt Anwendungsfälle - Einen Key setzen.
Die Keys werden mit der COM Methode oder der Python Methode setkeyvalue(key, value) gesetzt, z.B.
argobject.setkeyvalue('datum', argobject.eval("creationdatetime.firstOfMonth"))
Als value werden die oben genannten Datentypen akzeptiert. Die Umwandlung in den entsprechenden Key-Typ ist wie folgt:
Datentyp | Eingabe | Beispiel |
---|
String | String | argobject.setkeyvalue("Mykey", "Mein Text hier") |
Boolean | True, False | argobject.setkeyvalue("Erledigt", True) |
Date | ISO Datestring ("2017-02-03") | argobject.setkeyvalue('datum', vtcapp.currentdate()) |
Datetime | ISO Datetime ("2017-02-03T08:30") | argobject.setkeyvalue('datum', vtcapp.currentdatetime()) |
Integer | Ganzzahl | argobject.setkeyvalue("Anzahl", 5) |
Currency | Fliesskommazahl | argobject.setkeyvalue("Betrag", 10573.65) setkeyvalue() schreibt nummerische Typen mit so wenig Dezimalstellen wie möglich und maximal 4 Dezimalstellen. Es wird auf die 4. Dezimalstelle gerundet. |
None | Leerstring | argobject.setkeyvalue("Mykey", None) oder argobject.setkeyvalue("Mykey", "") |
Die maximale Länge aller auf einem User-Eintrag gesetzten Keys (Wertepaare) ist gesamthaft 1000 Zeichen. Wird diese Länge überschritten, erscheint eine Fehlermeldung.
Zum Abfragen eines Keys stehen sowohl Python-Methoden als auch OCL Operatoren zur Verfügung. Abgefragt wird jeweils typspezifisch.
Methode |
Resultat |
getkeystring("key")
|
liefert den Inhalt des Keys als String |
getkeybool("key")
|
liefert False für Leerstring, "False" (case insensitive) oder numerische 0-Werte, sonst true |
getkeycurr("key")
|
liefert einen Float oder 0 als float |
getkeyint("key")
|
liefert einen Integer oder 0 als integer |
getkeydate("key")
|
liefert ein Datum mit Zeitteil oder None |
keys
|
liefert einen String mit allen Keys, die auf dem Objekt gesetzt sind |
getkeyint("key") und getkeycurr("key") geben nummerische Werte des jeweils anderen Typs (integer vs. float) zurück, wenn kein Datenverlust stattfindet.
Operator |
Resultat |
keystring('key')
|
alles -> string, sonst "" |
keybool('key')
|
"", "False", "0", "0.0" -> False, sonst True |
keydate('key')
|
iso-date (mit oder ohne time) -> datetime, sonst empty |
keyint('key')
|
integer string -> integer, sonst 0 |
keycurr('key')
|
currency string -> currency, sonst 0.00 |
keys
|
liefert einen String mit allen Keys die auf dem Objekt gesetzt sind |
Leere oder ungültige Werte führen zu einem Default-Wert des entsprechenden Typs. Defaultwerte sind:
- String: ""
- Boolean: ""
- Date: None (bzw. empty)
- Integer: 0
- Currency: 0.00
Ein Key wird gelöscht, indem das Wertepaar mit None bzw. Leerstring gesetzt wird:
setkeyvalue('mykey', None)
oder setkeyvalue('mykey', '')
.