Hallo zusammen,
vielleicht hat jemand einen Tipp zu folgender Problemstellung oder etwas in der Art bereits in der Vergangenheit gelöst.
Sachverhalt
Beim schrankübergreifenden Verschieben von Dokumenten in enaio werden im Standard lediglich die Feldwerte in Feldern mit identischem internen Namen übernommen. Wir haben den Fall, dass Feldwerte übernommen werden müssen, die internen Feldnamen aber nicht matchen. D.h. es müsste eine Art Mapping der Quell- und Zielfelder erfolgen. Es soll dabei möglichst keine externe Anwendung im Rich-Client eingesetzt werden sondern über den Standardweg Drag&Drop erfolgen.
Problem
OnMoveExtern kennt nur die Quelle (also dort, von wo man drag-n-drop startet). Man hat meinen Tests nach in dem Event keinen Zugriff auf die Felder des Ziels.
OnShow kennt zwar das Ziel, weiß jedoch nichts davon, dass es verschoben worden ist (in Event-Übergabe-Datei kann ich keine Infos zur Quelle finden).
Lösungsansatz
Beim Verschieben bleibt ja die Id des Dokuments gleich.
Man könnte beim OnMoveExtern die bei der „Quelle“ genutzten Metadaten ins OsTmpVerz. schreiben (mit Dateinamen, in dem die Id enthalten ist), um die Metadaten so zwischenspeichern zu können. (ggfs. nur dann, wenn das Ziel der unterstützte Schrank ist.)
Dann beim OnShow vom Dok im Ziel-Schrank nachschauen, ob es zu der Dok.-Id eine Datei mit der Id im Dateinamen gibt und, falls es sie gibt, davon ausgehen, dass es sich um Verschieben gehandelt hat, die Daten auslesen und nutzen. Im OnShow würde die Zwischen-Speicher-Datei wieder gelöscht werden.
Wenn man in der Zwischen-Speicher-Datei noch einen Datum+Uhrzeit mitgibt, könnte man in OnShow noch ergänzen, dass die Daten der Datei nur genutzt werden, wenn sie nur ein paar Sekunden alt sind.
Gibt es weitere (elegantere) Ansätze?
Vielen Dank vorab für euer Feedback!