sol.common.ix.functions.Set
Schreibt Indexfelder (GRP), Mapfelder (MAP) oder Sord-Felder (SORD) auf ein ELO-Dokument.
Parameter
| Parameter | Typ | Pflicht | Beschreibung |
|---|---|---|---|
objId | string | ✅ | GUID oder numerische ID des Dokuments |
entries | array | ✅ | Felder die geschrieben werden sollen |
entries[].type | string | ✅ | GRP, MAP, SORD, WF, WFMAP |
entries[].key | string | ✅ | Feldname |
entries[].value | string | ✅ | Feldwert (unterstützt Handlebars-Templating) |
entries[].useTemplating | boolean | ❌ | Handlebars aktivieren – Standard: false |
Beispiele
Datum setzen
Aktuelles Datum (Format YYYYMMDD)
{
"entries": [
{
"type": "GRP",
"key": "ERP_BOOKING_DATE",
"value": "{{formatDate 'YYYYMMDD' inputDate}}",
"useTemplating": true
}
]
}
Aktuelles Datum mit Uhrzeit (Format DD.MM.YYYY HH:mm)
{
"entries": [
{
"type": "MAP",
"key": "REVFACH_STATUS",
"value": "{{formatDate 'DD.MM.YYYY HH:mm' inputDate}} - OK",
"useTemplating": true
}
]
}
Datum aus Feld um X Tage verschieben
{
"entries": [
{
"type": "MAP",
"key": "MY_TEST2",
"value": "{{dateTimeShift dateTime=sord.mapKeys.MY_TEST pattern='YYYYMMDD' days=1}}",
"useTemplating": true
}
]
}
Dokumentdatum setzen – mit Fallback auf Importdatum
{
"entries": [
{
"type": "SORD",
"key": "XDateIso",
"value": "{{#if sord.XDateIso}}{{sord.XDateIso}}{{else}}{{substring sord.IDateIso 0 8}}{{/if}}",
"useTemplating": true
}
]
}
Benutzer setzen
Aktuellen Anwender in MAP-Feld schreiben
{
"entries": [
{
"type": "MAP",
"key": "REVFACHUSER",
"value": "{{currentUser}}",
"useTemplating": true
}
]
}
Bedingte Werte (if/else)
Feld nur setzen wenn es leer ist
{
"entries": [
{
"type": "GRP",
"key": "POHEADER_DOC_DATE",
"value": "{{#if sord.objKeys.POHEADER_DOC_DATE}}{{sord.objKeys.POHEADER_DOC_DATE}}{{else}}{{/if}}",
"useTemplating": true
}
]
}
Tipp: Dieses Muster ist nützlich um bestehende Werte nicht zu überschreiben – der leere
{{else}}-Zweig schreibt einen Leerstring wenn das Feld noch keinen Wert hat.
Zwei Felder vergleichen (ifCond)
{
"entries": [
{
"type": "MAP",
"key": "IBAN_OK",
"value": "{{#ifCond sord.objKeys.VENDOR_IBAN '==' sord.objKeys.INV_IBAN}}1{{/ifCond}}",
"useTemplating": true
}
]
}
Schreibt
1wennVENDOR_IBANundINV_IBANübereinstimmen, sonst Leerstring.
Mehrere Felder gleichzeitig
{
"entries": [
{
"type": "MAP",
"key": "REVFACH_STATUS",
"value": "{{formatDate 'DD.MM.YYYY HH:mm' inputDate}} - OK",
"useTemplating": true
},
{
"type": "MAP",
"key": "REVFACHUSER",
"value": "{{currentUser}}",
"useTemplating": true
}
]
}
Templating-Referenz
Häufig genutzte Handlebars-Helfer in diesem Kontext:
| Ausdruck | Beschreibung |
|---|---|
{{currentUser}} | Angemeldeter Benutzer |
{{formatDate 'FORMAT' inputDate}} | Aktuelles Datum formatieren |
{{dateTimeShift dateTime=WERT pattern='FORMAT' days=N}} | Datum um N Tage verschieben |
{{formatDate 'FORMAT' sord.mapKeys.FELD}} | Datum aus MAP-Feld lesen und formatieren |
{{substring text start end}} | Teilstring extrahieren |
{{#if sord.objKeys.FELD}}...{{else}}...{{/if}} | Bedingter Wert |
{{#ifCond A '==' B}}...{{/ifCond}} | Zwei Werte vergleichen (==, !=, >, <) |
sord.objKeys.FELD | GRP-Feld lesen |
sord.mapKeys.FELD | MAP-Feld lesen |
sord.IDateIso | Importdatum (ISO) |
sord.XDateIso | Dokumentdatum (ISO) |
Hinweise
- Wird typischerweise aus
onExitNodeeines Workflow-Nodes aufgerufen – dann istobjIdnicht nötig - Für komplexe dynamische Werte per Script → siehe kit.common.ix.setDyn
- Bestehende Feldwerte werden überschrieben – nicht zusammengeführt
useTemplating: truemuss explizit gesetzt werden, sonst wird der Wert literal geschrieben