Hallo,
ich habe eine Maske, die entweder zum Bearbeiten oder zur Ansicht geöffnet ist. Es gibt dort einen Aktionsbutton "Erste Beurteilung erfolgt". Wenn die Maske zum bearbeiten geöffnet ist, soll sie erst gespeichert werden, anschließend wird ein Agent aufgerufen, der im Dokument ein paar Felder setzt.
Soweit klappt auch alles. Nach dem Klick auf die Aktion befinde ich mich im Vorschaumodus, allerdings werden mir die Felder, die der Agent gesetzt hat, nicht angezeigt. Wenn ich aus dem Dokument raus- und wieder reingehe, werden mir die geänderten Daten angezeigt.
Warum funktioniert der @Command([ReloadWindow]) hier nicht? Wer kann mir den genauen Unterschied zwischen @Command([ReloadWindow]) und @Command([RefreshWindow]) erklären?
@If(@IsDocBeingEdited;
@If( @Command([FileSave]);"";@Return(0) );
"");
@Command([EditDocument];"0");
@Command([ToolsRunMacro];"(Erste Beurteilung erfolgt)");
@Command([ReloadWindow])
Der Agent (Erste Beurteilung erfolgt):
FIELD SKBeurteilt1 := @Text(@Now) + " " + @UserName;
Aktion := "Erste Beurteilung";
FIELD Protokoll:=Protokoll + @NewLine + Aktion + " am " + @Text(@Now) + " von " + @UserName;
SELECT @All
Danke & Gruß,
Gregor
Irgendwo in der Hilfe steht, dass Agentenaufrufe immer am Ende der Formel ausgeführt werden, unabhängig davon, wo sie in der Formel stehen. Folglich wird ReloadWindow wohl vor dem Agentenlauf ausgeführt.
Das hatte ich auch vermutet, aber da auch ein wiederholtes klicken auf meinen Button nichts anzeigte, konnte ich dies als Grund eigentlich ausschließen.
Aber auch das Ändern des Agent-Aufrufes auf
@Command ([RunAgent];"(Erste Beurteilung erfolgt)");
bringt nichts. Auch das Aktualisieren mit F9 zeigt die Änderungen nicht an. Ich muss das Dokument verlassen und wieder reingehen, vorher klappt nichts.
Hmm?
Call doc.Save (True, True)
uidoc.EditMode = False
Das hebelt allerdings die Validierungsformeln aus. Falls Validierung notwendig ist, dann mit uidoc.Save arbeiten
Ich habe im Querysave ein Script, welches verschiedene Felder auf Plausibilität prüft.
Kann ich irgendwie feststellen, ob der uidoc.Save ausgeführt wurde? Im Gegensatz zum doc.Save gibt mir der uidoc.Save ja keinen Rückgabewert zurück. Ansonsten würde ich im QuerySave halt eine globale Variable setzen und die abfragen...
Dim session As New NotesSession
Dim username As New NotesName (session.Username)
Dim workspace As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Set uidoc = workspace.CurrentDocument
Dim doc As NotesDocument
Set doc = uidoc.Document
If uidoc.EditMode = False Then
Call uidoc.Save ' Wie prüfe ich, ob das erfolgreich war?
uidoc.EditMode = False
End If
doc.SKBeurteilt1 = Format (Now, "dd.mm.yyyy hh:nn:ss") & " " & username.Abbreviated
doc.Protokoll = doc.Protokoll (0) & Chr (13) & Chr (10) & "Erste Beurteilung am " & doc.SKBeurteilt1 (0)
Call doc.Save (True, False)
Call uidoc.Close
Call workspace.EditDocument(False, Doc, False)