Beispiel Feldzuordnung per Skript

Dieses Beispiel zeigt, wie Sie im Universal Sync (SDK) per C#-Skript einen neuen Wert dynamisch an das Zielsystem übertragen – auch bei Aktualisierungen (nicht nur bei Neuanlagen).

Kernaussage: Nicht direkt in Helper.SetObject schreiben.
Zielsysteme persistieren bei Updates in der Regel nur erkannte Änderungen.
Das Austauschobjekt Helper.SetObject besitzt keine Änderungserkennung – Änderungen würden bei Updates ignoriert.
Lösung: Wert in der Quelle bereitstellen und eine Feldzuordnung (Mapping) zur Laufzeit ergänzen.

  • Quelle erweitern: Neuer Wert wird in Helper.GetObject (JObject) hinzugefügt.
  • Mapping ergänzen: Per Helper.Mappings (JArray) eine neue Zuordnung von Quellpfad → Zielpfad definieren.
  • Pfadnotation: Punktnotation inkl. Objektname (z. B. Quelle.NeuesDatumZiel.LetzterSync).

Voraussetzungen

  • Sync-Typ: Universal Sync (SDK) mit Datensatzskript
  • Zugriff auf den SDK-Helper
  • Newtonsoft.Json wird bereitgestellt (z. B. JObject, JArray)

Minimalbeispiel

using System;
using System.Collections.Generic;
using SIS;
using SIS.Public;
using SIS.Public.Models;
using Newtonsoft.Json.Linq;

public class CSScript
{
    // SDK helper
    public SisHelper Helper { get; set; }

    // Your operation to return json data
    public string Execute()
    {
        //Neues Feld der Quelle hinzufügen
        Helper.GetObject.Add("NeuesDatum", DateTime.Now);

        //Neue Feldzuordnung hinzufügen
        JObject NewMapping = [];
        NewMapping.Add("SourcePath", "Quelle.NeuesDatum");
        NewMapping.Add("TargetPath", "Ziel.LetzterSync");
        Helper.Mappings.Add(NewMapping);

        return null;
    }
}

Ergebnis:
Der neue Wert steht in der Quelle bereit und wird über die dynamisch ergänzte Zuordnung zuverlässig ins Ziel geschrieben – auch bei Updates.


Kurzreferenz

  • Quelle lesen/anpassen: Helper.GetObject (JObject)
  • Ziel (Austauschobjekt): Helper.SetObject (JObject) – nicht für Änderungserkennung geeignet
  • Mappings lesen/ergänzen: Helper.Mappings (JArray mit Objekten: SourcePath, TargetPath, optional SourceColumn, TargetColumn)
  • Logging: Helper.InsertLog(message, level) (Level: 0=Message, 1=Error, 2=Warning, 3=Info, 4=Feedback, 5=Debug)