Zum Hauptinhalt springen

sol.common.ix.functions.Set

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

📖 Herstellerdokumentation


Parameter

ParameterTypPflichtBeschreibung
objIdstringGUID oder numerische ID des Dokuments
entriesarrayFelder die geschrieben werden sollen
entries[].typestringGRP, MAP, SORD, WF, WFMAP
entries[].keystringFeldname
entries[].valuestringFeldwert (unterstützt Handlebars-Templating)
entries[].useTemplatingbooleanHandlebars 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