Key-Values auf User-Einträgen

Key-Values auf User-Einträgen

Standard

|

Expert

CLOUD ABO

|

ON-PREMISES

Leistung & CRM

Budget & Teilprojekt

Fremdkosten

Ressourcenplanung

Business Intelligence

Erzeugt: 11.04.2017
Aktualisiert: 17.08.2022 | Hinweis auf Custom Renderer ab Version 6.5.0.21 hinzugefügt.

Um lange Listen aufgrund verschiedener Kriterien performant filtern zu können, wurde mit der Vertec Version 6.1.0.10 die Möglichkeit geschaffen, kundenspezifische Werte auf User-Einträgen ablegen zu können, 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-Values Wertepaare eingetragen werden. Es werden folgende Datentypen unterstützt:

  • String
  • Boolean
  • Date, Datetime
  • Integer
  • Currency

Ab Vertec 6.5.0.21 gibt es via Custom Renderer 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. In früheren Versionen muss dies via Python manuell gemacht werden.

Setzen eines Key-Values

Die Key-Values 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-Value-Typ ist wie folgt:

DatentypEingabeBeispiel
StringString
argobject.setkeyvalue("Mykey", "Mein Text hier")
BooleanTrue, False
argobject.setkeyvalue("Erledigt", True)
DateISO Datestring ("2017-02-03")
argobject.setkeyvalue('datum', vtcapp.currentdate())
DatetimeISO Datetime ("2017-02-03T08:30")
argobject.setkeyvalue('datum', vtcapp.currentdatetime())
IntegerGanzzahl
argobject.setkeyvalue("Anzahl", 5)
CurrencyFliesskommazahl
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.

NoneLeerstring

argobject.setkeyvalue("Mykey", None) oder argobject.setkeyvalue("Mykey", "")

Die maximale Länge aller auf einem User-Eintrag gesetzten Key-Values Wertepaare ist gesamthaft 1000 Zeichen. Wird diese Länge überschritten, erscheint eine Fehlermeldung.

Abfragen eines Key-Values

Zum Abfragen eines Key-Values stehen sowohl Python-Methoden als auch OCL Operatoren zur Verfügung. Abgefragt wird jeweils typspezifisch.

Python

Methode Resultat
getkeystring("key")
liefert genau was im Key-Value drin steht
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 Key-Values, die im Objekt gesetzt sind

getkeyint("key") und getkeycurr("key") geben nummerische Werte des jeweils anderen Typs (integer vs. float) zurück, wenn kein Datenverlust stattfindet.

OCL

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 Key-Values, die im 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

Löschen eines Key-Values

Es gibt keine Methode zum Löschen von Key-Values. Das Entfernen eines solchen Wertepaars geschieht über das Setzen des entsprechenden Keys mit None bzw. Leerstring:

setkeyvalue('mykey', None) oder setkeyvalue('mykey', Leerstring)

Bitte wählen Sie Ihren Standort