Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: MadMetzger am 05.12.05 - 13:46:16

Titel: Dokument wird per Script nicht verändert
Beitrag von: MadMetzger am 05.12.05 - 13:46:16
Hallo,

in einem gerade geöffneten Dokument wird ein Agent gestartet, der ein Dokument verändern soll. Jedoch ist nach schließen das Dokument wieder im Ursprungszustand. Es werden über den Agenten verschiedene Felder im Backend gesetzt und dann auch im Backend gespeichert. Lasse ich mir im Agenten noch die betroffenen Felder nach und vor dem Speichern anzeigen, so ist alles in Ordnung...  :-: Ich verstehe das nicht. Den gleichen Effekt habe ich, wenn ich die selben Aktionen per Formelsprache ausführe...  ???
Titel: Re: Dokument wird per Script nicht verändert
Beitrag von: klaussal am 05.12.05 - 13:52:19
Könnte es sein, dass das Frontend-Doc das Backend-Doc wieder überschreibt ?
Titel: Re: Dokument wird per Script nicht verändert
Beitrag von: MadMetzger am 05.12.05 - 13:53:49
Woran kann ich das erkennen, hört sich zumindest plausibel an. Wie könnte ich das Ganze verhindern?
Titel: Re: Dokument wird per Script nicht verändert
Beitrag von: flaite am 05.12.05 - 14:15:22
Mit solchen Problemen hatte ich auch oft zu kämpfen.
So bin ich mit der Zeit zu einem fanatischen Anhänger der Trennung von Daten und Präsentation geworden.

Die einfachsten Möglichkeiten sind:
- Felder im UIDoc setzen (problematisch, wenn diese Felder bei der Berechnung andere Felder anziehen).
Falls nach der Aktion Dokument eh geschlossen wird:
- Flag setzen und die Agentenoperationen im QuerySave in Anghängigkeit des flags abfackeln. Flag als globale Variable der Maske.
Titel: Re: Dokument wird per Script nicht verändert
Beitrag von: MadMetzger am 05.12.05 - 14:54:05
Danke Axel, werde deinen Vorschlag mal beherzigen... mal schauen ob das was hilft. Die Anwendung in der das Prob auftaucht ist eh mal fällig für eine grundsätzliche Überprüfung. Aber leider dieses Jahr keine Zeit mehr dafür. Könnte was für meine Vordiplomsarbeit werden...
Titel: Re: Dokument wird per Script nicht verändert
Beitrag von: koehlerbv am 05.12.05 - 23:42:39
Ich befürchte, dass Du das Backend-Dokument änderst, während das FrontEnd-Dokument noch offen ist und damit geneigt, auch noch Änderungen aus dem FrontEnd entgegen zu nehmen. Da das FrontEnd-Dok nach wie vor "in-memory" ist, überschreibt es beim Speichern natürlich die gerade im Backend gemachte Änderung (so, wie es ja auch sein soll).

Workarounds (eine kleine Auswahl):
- Wenn die Änderung im Backend die entscheidende ist: Vorher Frontend-Doc schliessen ohne speichern oder erst Frontend speichern / schliessen und dann Backend-Änderung machen.
- Wenn im Frontend nach Backend-Änderung noch gedreht werden darf / soll: Nach Backend-Änderung zwingend Frontend reloaden / refreshen.

Ansonsten: Mehr Input, mehr Output  ;)

Bernhard

PS: Eine Lösung wird sich generell finden. Frage: Besonders "aggressiv" reagieren RT-Items - sind die bei Dir auch involviert ?
Titel: Re: Dokument wird per Script nicht verändert
Beitrag von: MadMetzger am 05.12.05 - 23:51:07
Also in der ursprünglichen Fassung war es so, dass im BackEnd geändert und gespeichert wurde, nachdem ich die gesamten Aktionen von Formel auf Skript umgestellt habe. Das Verhalten war vorher nahezu gleich... Zum Glück sind keine RT-Items involviert. Momentan habe ich einen Weg gefunden, dass es (zumindest hier bei mir) funktioniert. Meine Kollegen werden das morgen im Büro austesten, da ich eigentlich zu Hause sitze und Überstunden abfeiere...

Aber der Vorschlag, das FrontEndDokument sofort zu schließen, und dann erst die Änderungen durchzuführen, scheint mir etwas einfacher als die Variante von Axel.
Titel: Re: Dokument wird per Script nicht verändert
Beitrag von: koehlerbv am 05.12.05 - 23:57:38
Aber der Vorschlag, das FrontEndDokument sofort zu schließen, und dann erst die Änderungen durchzuführen, scheint mir etwas einfacher als die Variante von Axel.

Schliessen (aber das kann ja "gnadenlos" sein  ;D) oder eben eben ein Reload / Refresh nach der Backend-Änderung, Markus. Eigentlich geht das problemlos (vor allem, da keine RTIs involviert sind, da müsste man anders ggf. herangehen).

Viel Erfolg,
Bernhard
Titel: Re: Dokument wird per Script nicht verändert
Beitrag von: MadMetzger am 06.12.05 - 00:00:06
Ich schaue es mir morgen nochmal an, jetzt bin ich doch ein wenig zu müde, mich da noch einmal darauf zu konzentrieren, bzw. wird es mir dann zu spät heute... schreibe morgen hier mal mein Ergebnis rein... Als dann gute Nacht allen noch anwesenden...
Titel: Re: Dokument wird per Script nicht verändert
Beitrag von: koehlerbv am 06.12.05 - 00:05:26
Sag' an, wenn es noch klemmen sollte. Hier kann Dir wirklich geholfen werden. Ist so ein Standard-Problem. Ggf. bräuchten wir aber mehr Code / Infos ...

Auch eine gute Nacht wünscht
Bernhard
Titel: Re: Dokument wird per Script nicht verändert
Beitrag von: MadMetzger am 06.12.05 - 12:06:47
Großes Danke an alle Beteiligten...  ;D der Tipp von Bernhard hat letztendlich den Ausschlag gegeben. Es war tatsächlich so, dass das Backend-Dok durch diverse Aktionen im QueryClose wieder überschrieben wurde und somit die Änderungen wieder weg waren. Der Einfall hierzu kam mir noch gestern abend und jetzt sitze ich im Büro und habe meine Lösung implementiert!

Zu meiner Lösung:
=> Über das aktuelle UiDoc hole ich mir aus dem Backenddok due Unid
=> Danach schließe ich das UiDoc und verliere damit auch das Backenddok aus dem Zugriff
=> Über Session.CurrentDatabas.GetDocumentByUnid hole ich mir das Dokument zurück
=> Alle Aktionen können danach ohne Probleme mit Backend-Frontend-Geschichten im Backend ausgeführt werden