Autor Thema: Das Dokument wurde noch nicht gespeichert  (Gelesen 6259 mal)

Offline Klafu

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.944
  • Geschlecht: Männlich
  • Remember the Cookies!
Das Dokument wurde noch nicht gespeichert
« am: 25.08.11 - 10:16:51 »
Hallo zusammen,

ich hab gerade den folgenden Fall, dass ich in einer DB ein neues Dokument erstelle.
Ich befülle alle Pflichtfelder (Prüfung im Querysave) und will das Dokument - via @Commands im Button - speichern.

Das passt auch alles soweit. Nur Im Script steigt er am Ende aus
Zitat
ergebnis := @Prompt([YesNo];"Hinweis";"Wollen Sie speichern?");
@If(ergebnis = 1&@Command([FileSave]);@Do(
...
@SetField
...
@If(@Command([FileSave]);@Command([ToolsRunMacro];"aSubmitApplication");""));@Return(""))
Das ist das Ende vom Script.  Dann kommt die Warnmeldung, dass das Dokument noch nicht gespeichert wurde und dann ist Schluss.

Wenn ich das Dokument schließ, kommt die Notes-Eigene Speicherabfrage. Wenn ich auf Nein klicke ist das Dokument trotzdem gespeichert und das Set Field ist auch noch gesetzt worden. Das heißt für mich, das es vermutlich am Agentenaufruf liegt - der ist in LS geschrieben und der Debugger wird auch nicht geöffnet.
Ich hab es auch schon mit @Command([RunAgent])  und @DocMark([Update]) probiert. Dort kommt aber die selbe Meldung.

Wie kann ich mit Formel einen Agenten in einem - mit @Command([FileSave)] gespeicherten Dok. - aufrufen?

Gruß Chris
„Der einzige Mensch, der sich vernünftig benimmt, ist mein Schneider. Er nimmt jedesmal neu Maß, wenn er mich trifft, während alle anderen immer die alten Maßstäbe anlegen in der Meinung, sie paßten auch heute noch...“

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Das Dokument wurde noch nicht gespeichert
« Antwort #1 am: 25.08.11 - 13:48:29 »
Ich befülle alle Pflichtfelder (Prüfung im Querysave) und will das Dokument - via @Commands im Button - speichern.

Warum denn so umständlich?

Wenn du die Prüfung der Pflichtfelder im QuerySave ausführst warum rrufts du denn den Agenten auch nicht von dort aus? Mit Script bist du wesentlich flexibler und hast 1000 und eine Möglichkeit.

Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline Klafu

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.944
  • Geschlecht: Männlich
  • Remember the Cookies!
Re: Das Dokument wurde noch nicht gespeichert
« Antwort #2 am: 25.08.11 - 15:06:38 »
Hey Axel,

danke für die Antwort!
Geht das denn wenn der Agent das Dokument noch weiterverarbeiten und prüfen soll ?
Ab welcher stelle im QuerySave ist das Dokument denn gespeichert ?
Aber dem "END SUB"?  :)

Bekomm grad die Meldung
"Notes error: Unsupported trigger and search in the background or embedded agent"


Chris
„Der einzige Mensch, der sich vernünftig benimmt, ist mein Schneider. Er nimmt jedesmal neu Maß, wenn er mich trifft, während alle anderen immer die alten Maßstäbe anlegen in der Meinung, sie paßten auch heute noch...“

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Das Dokument wurde noch nicht gespeichert
« Antwort #3 am: 25.08.11 - 21:34:05 »
Chris, mach das Überprüfungsgeraffel nur im QuerySave (oder rufe eine entsprechende Funktion in einer ScriptLibrary daraus auf). Das QuerySave hat nicht umsonst den Parameter Continue - wenn Du den im Fehlerfall auf False setzt, dann wird aus QuerySave ein "DoNotSave".

Beispiele:
Im QuerySave only:
... Code ...
If Source.Document.MyItem (0) = "" Then
   Messagebox "Gemecker!"
   Continue = False
   Exit Sub   'Besser: Sprung zu definiertem Ausstiegspunkt!
End If
... Code ...

In einer Function:
Function CheckMyValues (Source As NotesUIDocument) As Integer
... Code ...
If Source.Document.MyItem (0) = "" Then
   Messagebox "Gemecker!"
   CheckMyValues = False
   Exit Function   'Besser: Sprung zu definiertem Ausstiegspunkt!
End If
... Code ...

Der Aufrug der Function und der Bezug zu Continue sollte klar sein  :)

HTH,
Bernhard

Offline Klafu

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.944
  • Geschlecht: Männlich
  • Remember the Cookies!
Re: Das Dokument wurde noch nicht gespeichert
« Antwort #4 am: 25.08.11 - 22:17:19 »
Danke,  Bernhard!  :)
Das QuerySave hat ja bisher funktioniert und das Dokument wird auch gespeichert. Aber scheinbar nicht ganz.
Denn der Agent wird ja nicht aufgerufen, weil das Dokument angeblich nicht gespeichert ist.
Wenn ich dann aber das Script beende und das Dokument einfach nur schließe, dann passt das Dokument ja - Auch die wichtigen Felder sind gesetzt. Nur der Agent ist nicht geloffen.
Bisher hat ein einfach @Command([ToolsRunMacro];"AGENT")immer geklappt.
Ich hab nur bestimmt irgendwas übersehen  8)

Chris
„Der einzige Mensch, der sich vernünftig benimmt, ist mein Schneider. Er nimmt jedesmal neu Maß, wenn er mich trifft, während alle anderen immer die alten Maßstäbe anlegen in der Meinung, sie paßten auch heute noch...“

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Das Dokument wurde noch nicht gespeichert
« Antwort #5 am: 25.08.11 - 22:40:22 »
Warum verwendest Du denn da überhaupt einen Agent? Von dem kriegst Du doch gar keine Rückmeldung. Zumindest nicht so, wie Du im Code gepostet hast, und auch sonst halte ich das bei einer Verifizierung für "schräg".

Sag mal an, Chris. Dir wird geholfen (hab' ja noch Urlaub).

Benrhard

Offline Klafu

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.944
  • Geschlecht: Männlich
  • Remember the Cookies!
Re: Das Dokument wurde noch nicht gespeichert
« Antwort #6 am: 25.08.11 - 23:22:25 »
Okay Bernhard. ;D

Ich fasse mich aber trotzdem kurz ;)

Also, in jedem Dokument ist ein Feld alà "Kategorie".
Je nachdem welcher Wert in diesem Feld steht, soll beim speichern eine Mail an eben diese Gruppe geschickt werden.
Gruppe heißt in dem Fall, dass in der Datenbank ein Konfig Dokument(Profildok) ist, in dem knapp 10 Felder sind, wo man jeweils die Mitglieder der Gruppe eintragen kann.

Der Agent soll also den Wert dieses Feldes prüfen, die Mitglieder aus dem entsprechenden Feld auslesen und ihnen eine Mail schicken.
Ansich bekomm ich dann von dem Agent wirklich keine Rückmeldung.
Der Agent ist in LS geschrieben und sollte auch funktionieren.
Beim ausführen der Aktion im Debugger wird der Agent aber nicht aufgerufen.

Mir kommt es grad so vor als würde alles vor und nach diesem Agentenaufruf funktionieren.
Gibt es für ToolsRunMacro irgendwelche Vorraussetzungen?

Chris
„Der einzige Mensch, der sich vernünftig benimmt, ist mein Schneider. Er nimmt jedesmal neu Maß, wenn er mich trifft, während alle anderen immer die alten Maßstäbe anlegen in der Meinung, sie paßten auch heute noch...“

Offline Klafu

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.944
  • Geschlecht: Männlich
  • Remember the Cookies!
Re: Das Dokument wurde noch nicht gespeichert
« Antwort #7 am: 26.08.11 - 08:50:01 »
Live-Ticker:
26.08.2011 8:50 Uhr: Ungeklärter Fehler auf unerklärliche Weise verschwunden - Agent wird gestartet!



Vielleicht find ich dir Ursache noch >:(

Danke !!  :)
Chris
„Der einzige Mensch, der sich vernünftig benimmt, ist mein Schneider. Er nimmt jedesmal neu Maß, wenn er mich trifft, während alle anderen immer die alten Maßstäbe anlegen in der Meinung, sie paßten auch heute noch...“

Offline Klafu

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.944
  • Geschlecht: Männlich
  • Remember the Cookies!
Re: Das Dokument wurde noch nicht gespeichert
« Antwort #8 am: 26.08.11 - 09:49:01 »
Live-Ticker:
26.08.2011 9:49 Uhr: Zu früh gefreut  :(


Edit: Hier der Betroffene Code - Das "Agent" bekomm ich noch angezeigt

ergebnis := @Prompt([YesNo];"Hinweis";"Wollen Sie das Dokument speichern?");
@If(ergebnis = 1;@Do(replicID := "svz.nsf";MyView := "($NamesFieldLookup2)";
auswahl := @PickList([Custom]:[Single];"SERVER":replicID;MyView;"Auswahl";"Wählen Sie den Vorgesetzten aus, wer diesen Antrag prüfen wird";1);
Vorname:= @DbLookup("":"NoCache";"SERVER":"svz.nsf";MyView;auswahl;"FirstName");
Nachname:= @DbLookup("":"NoCache";"SERVER":"svz.nsf";MyView;auswahl;"LastName");
Mail:= @DbLookup("":"NoCache";"SERVER":"svz.nsf";MyView;auswahl;"InternetAddress");
@SetField("Vorgesetzter"; "Das Dokument wurde an " +  Vorname + " " + Nachname + " zur Info weitergegeben");
@SetField("txtMailInfo";Mail);
@If(@Command([FileSave]);@Prompt([Ok];"test";"agent")&@Command([RunAgent];"aSubmitApplication");@Prompt([Ok];"test";"NICHT")));@Return(""))
« Letzte Änderung: 12.01.12 - 17:45:01 von Klafu »
„Der einzige Mensch, der sich vernünftig benimmt, ist mein Schneider. Er nimmt jedesmal neu Maß, wenn er mich trifft, während alle anderen immer die alten Maßstäbe anlegen in der Meinung, sie paßten auch heute noch...“

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Das Dokument wurde noch nicht gespeichert
« Antwort #9 am: 26.08.11 - 12:57:22 »
Code
@Prompt([Ok];"test";"agent")[color=red][u][b]&[/b][/u][/color]@Command([RunAgent]

Das geht natürlich gar nicht - Du versuchst, die Ergebnis von @Prompt und @Command mit AND zu verknüpfen.

Bernhard

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Das Dokument wurde noch nicht gespeichert
« Antwort #10 am: 26.08.11 - 17:06:04 »
@If(@Command([FileSave]);@Prompt([Ok];"test";"agent")&@Command([RunAgent];"aSubmitApplication");@Prompt([Ok];"test";"NICHT")));@Return(""))

Bernhard hast es ja schon geschrieben, dass geht so nicht.

Wenn du mehrere Formelanweisungen hintereinander, z.B. in einem IF-Zweig, ausführen willst, dann musst du das mit @Do(...) machen.

In deinem Fall müsste das so aussehen:

@If(@Command([FileSave]);@Do(@Prompt([Ok];"test";"agent"); @Command([RunAgent];"aSubmitApplication"));@Prompt([Ok];"test";"NICHT")));@Return(""))

Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Das Dokument wurde noch nicht gespeichert
« Antwort #11 am: 26.08.11 - 17:25:00 »
Friggelt der Agent eventuell auch noch am geöffneten Dokument im Backend herum? Das würde auch die Meldung "Wollen Sie speichern?" erklären.

Ich verstehe nach wie vor nicht, warum Du das nicht gleich alles in LotusScript machst. Die Lösung mit dem Buhtong halte ich auch für kritisch - zum Speichern / Beenden muss man ja nicht zwingend eben diesen benutzen.

Bernhard

Offline Klafu

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.944
  • Geschlecht: Männlich
  • Remember the Cookies!
Re: Das Dokument wurde noch nicht gespeichert
« Antwort #12 am: 29.08.11 - 08:22:23 »
Danke euch beiden.
Diese Nachricht hab ich nur Testweise eingebaut. Das heißt, dass auch ohne diese Prompts der Fehler kommt.
Genau so, wenn ich ein DO einbauen - selber Erfolg.

Der Agent jedoch, greift tatsächlich auf das Dokument zu. Und zwar über NotesDocument und NotesUIDocument.
Kann das daran liegen?
Sollte dann der Debugger aber nicht erst starten?

Warum ich es so mache ist, weil es den Button schon gab und ich die Funktion durch den Agenten gerne erweitern würde.
Und da davon nicht nur diese Maske betroffen ist, dachte ich mir, ich regel das Zentral über einen Agentenaufruf.

Chris
„Der einzige Mensch, der sich vernünftig benimmt, ist mein Schneider. Er nimmt jedesmal neu Maß, wenn er mich trifft, während alle anderen immer die alten Maßstäbe anlegen in der Meinung, sie paßten auch heute noch...“

Offline Klafu

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.944
  • Geschlecht: Männlich
  • Remember the Cookies!
Re: Das Dokument wurde noch nicht gespeichert
« Antwort #13 am: 29.08.11 - 16:47:12 »
Also, ich hab es nun geschluckt und hab das ganze in LS umgesetzt. Warum das nicht tut, hab ich dennoch nicht verstanden.
Den Button gibts aber auch noch. Nur eben kürzer :)

ergebnis := @Prompt([YesNo];"Hinweis";"Wollen Sie den Dokument speicher?");
@If(ergebnis = 1;@Do(@Command([FileSave]);@Command([ToolsRunMacro];"aSubmitApplication2"));@Return(""))

Nun läuft es auf jeden Fall ... fast, denn sobald im Agenten einmal ein Call Uidoc.Save kommt, wird der Agent kommentarlos beendet.
Kommt er damit nicht klar, dass er im QuerySave Felder prüfen muss?

Chris
„Der einzige Mensch, der sich vernünftig benimmt, ist mein Schneider. Er nimmt jedesmal neu Maß, wenn er mich trifft, während alle anderen immer die alten Maßstäbe anlegen in der Meinung, sie paßten auch heute noch...“

Offline ata

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re: Das Dokument wurde noch nicht gespeichert
« Antwort #14 am: 30.08.11 - 07:24:21 »
... wenn du im QuerySave - also vor der eigentlichen Speicherung über einen Agenten einen Save absetzt, dann kann das nicht gehen - Nested event...

Du hast ein Problem mit den Events - du musst dir klar machen wann die laufen und was sie ausführen. Bernhard und Axel hatten dir ja die Tipps für die Architektur bereits gegeben... ;) - deine Idee den Button mittels eines Agenten zu erweitern, damit der Agent auch weiterverwendet werden kann ist zunächst ja richtig - aber umständlich und in deinem Fall mit den Events eben falsch.

Nimm alles in eine LS-Library und ruf die entsprechenden Funktionen von dort aus auf...

Toni
Grüßle Toni :)

Offline Klafu

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.944
  • Geschlecht: Männlich
  • Remember the Cookies!
Re: Das Dokument wurde noch nicht gespeichert
« Antwort #15 am: 30.08.11 - 10:56:18 »
Danke für die Antwort Toni.

Bei Script Libraries bewege ich mich auf dünnem Eis - das hab ich nämlich noch nie gemacht.
Ist der grobe Workflow so richtig?

- Ich übernehme den Code com Agenten in eine neue Script Lirary YYY
- Ich erstelle in der SL eine neues Sub XXX()
- ich geh in die entsprechende Maske und lad im Option-Event der Aktion "Use YYY" die SL
- Ich ruf über Call XXX() die Funktion auf
Aktuell bekomm ich so die Meldung Wrong Number of Arguments for: XXX
Ich konnte gerade leider keine Anleitungen oder Beispiele dazu finden.

Chris


EDIT: Es Funktioniert !! ;D
Die Frage ist nur, wie lange noch  :-P

Danke euch allen  ;)

Chris
« Letzte Änderung: 30.08.11 - 11:47:41 von Klafu »
„Der einzige Mensch, der sich vernünftig benimmt, ist mein Schneider. Er nimmt jedesmal neu Maß, wenn er mich trifft, während alle anderen immer die alten Maßstäbe anlegen in der Meinung, sie paßten auch heute noch...“

Offline ata

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re: Das Dokument wurde noch nicht gespeichert
« Antwort #16 am: 30.08.11 - 11:55:03 »
... freut mich zu hören - aller Anfang ist schwer  ;) ;) ;)

Toni
Grüßle Toni :)

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz