Zum Hauptinhalt springen

sol.common.ix.functions.Set

Schreibt Indexfelder (GRP), Mapfelder (MAP) oder Sord-Felder (SORD) auf ein ELO-Dokument.

📖 Herstellerdokumentation


Parameter​

ParameterTypPflichtBeschreibung
objIdstring✅GUID oder numerische ID des Dokuments
entriesarray✅Felder die geschrieben werden sollen
entries[].typestring✅GRP, MAP, SORD, WF, WFMAP
entries[].keystring✅Feldname
entries[].valuestring✅Feldwert (unterstützt Handlebars-Templating)
entries[].useTemplatingboolean❌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 1 wenn VENDOR_IBAN und INV_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:

AusdruckBeschreibung
{{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.FELDGRP-Feld lesen
sord.mapKeys.FELDMAP-Feld lesen
sord.IDateIsoImportdatum (ISO)
sord.XDateIsoDokumentdatum (ISO)

Hinweise​

  • Wird typischerweise aus onExitNode eines Workflow-Nodes aufgerufen – dann ist objId nicht nötig
  • Für komplexe dynamische Werte per Script → siehe kit.common.ix.setDyn
  • Bestehende Feldwerte werden überschrieben – nicht zusammengeführt
  • useTemplating: true muss explizit gesetzt werden, sonst wird der Wert literal geschrieben