Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: emadowo am 10.01.11 - 15:02:52

Titel: Info bei Änderung eines Dokuments
Beitrag von: emadowo am 10.01.11 - 15:02:52
Hallo Notes-Gemeinde,

in unserer "ToDo"-Datenbank stellen mehrere Kollegen verschiedene "Aufträge" ein, wer im Team was bis wann zu tun hat. Nun möchte der Mitarbeiter über Änderungen in manchen seiner Aufträge informiert werden, wenn einer an seinem Auftrag etwas ändert.  (Datenschutz, Persönlichkeitsrechte usw. sind geklärt). Dazu habe ich in der Maske ein Feld "bitte bei Änderung informieren > ja" ein- und eine Ansicht aufgebaut:
Spalte1: Zeitstempel letzte Änderung
Spalte2: wer ist für den Auftrag zuständig
Spalte3: wer hat zuletzt dran geändert (über @Subset($UpdatedBy; -1)
Spalte4: Feld"bitte bei Änderung informieren = ja"

Nun soll ein täglicher Agent über die Ansicht laufen: "wenn ein Eintrag in der Ansicht drin & "bitte bei Änderung informieren"=ja, dann sende Mail an Auftragsinhaber mit DocLink. Der Code:

Code
zuständig := @DbColumn("":"";"":"";"(ÄnderungsInfo)";2);
letzter := @DbColumn("":"";"":"";"(ÄnderungsInfo)";3);
Info :=@DbColumn("":"";"":"";"(ÄnderungsInfo)";4);

sende_an := @MailSend(Auftrag_zuständig;"";"";"Änderung deines Auftrags";"Der Auftrag: "+Auftrag_kurz+" wurde von "+letzter + " bearbeitet:";[IncludeDoclink]);

@If( 
zuständig != letzter & Info!="";sende_an;
"")

>>> Der Agent verursachte mehrere hundert von falschen MailSends, obwohl nur eine hätte kommen dürfen!? <<<

Was mach ich falsch, wo liegt der Denkfehler? Vielen Dank für Eure Hilfe!
Titel: Re: Info bei Änderung eines Dokuments
Beitrag von: klaussal am 10.01.11 - 15:11:19
Ich würde die Abfrage auf das Feld mit "ja" beschränken.
Nach dem Senden der Mail wieder zurück auf "nein" oder "" ändern.

Was sagt denn der Debugger zu dem Problem ?

PS: Bevor ich so etwas aktiviere, teste ich das mit dem Debugger.
Ist nämlich etwas peinlich, wenn da so viele falsche Mails rausgehen....
Titel: Re: Info bei Änderung eines Dokuments
Beitrag von: emadowo am 10.01.11 - 15:34:19
Danke für die prompte Antwort!
Nun habe ich die Ansicht auf "Änderungsinfo = Ja" beschränkt, somit habe ich in der Ansicht nur diejenigen Einträge, die auch tatsächlich eine Änderungsinfo-Mail bekommen sollen.

Dann habe ich das MailSend mal zum Test rausgenommen und durch nen Prompt ersetzt:
Code
zuständig := @DbColumn("":"";"":"";"(ÄnderungsInfo)";2);
letzter := @DbColumn("":"";"":"";"(ÄnderungsInfo)";3);
Info :=@DbColumn("":"";"":"";"(ÄnderungsInfo)";4);
InfoAn :=  @DbColumn("":"";"":"";"(ÄnderungsInfo)";5);
@Prompt([Ok];"Werte" ; zuständig + " / " +  letzter + " / " + Info + " / " + InfoAn);
Der Prompt zeigt NICHT die Namen an, die ich in der Ansicht sehe, sondern andere Namen? Mysteriös, das...

Titel: Re: Info bei Änderung eines Dokuments
Beitrag von: koehlerbv am 10.01.11 - 15:36:59
Der Agent ist völlig falsch. Es braucht auch keine Ansicht dafür.

Diese Zeile
sende_an := @MailSend(Auftrag_zuständig;"";"";"Änderung deines Auftrags";"Der Auftrag: "+Auftrag_kurz+" wurde von "+letzter + " bearbeitet:";[IncludeDoclink]);
sendet jedes Dokument an "Auftrag_zuständig".

Du brauchst eine Bedingung, wann @MailSend erfolgen soll:
@If (DeineBedingungen; @MailSend; "")

Bernhard
Titel: Re: Info bei Änderung eines Dokuments
Beitrag von: emadowo am 10.01.11 - 15:43:53
So kanns gehen, wenn man im Thread nur unvollständig postet....

Das war mein ursprünglicher Code:
Code
zuständig := @DbColumn("":"";"":"";"(ÄnderungsInfo)";2);
letzter := @DbColumn("":"";"":"";"(ÄnderungsInfo)";3);
Info :=@DbColumn("":"";"":"";"(ÄnderungsInfo)";4);
InfoAn :=  @DbColumn("":"";"":"";"(ÄnderungsInfo)";5);
sende_an := @MailSend(ÄnderungsInfoAn;"";"";"Änderung deines Auftrags";"Der Auftrag: "+Auftrag_kurz+" wurde von "+letzter + " bearbeitet:";[IncludeDoclink]);
@If( 
zuständig != letzter & Info!="";sende_an; 
"");
Die Ansicht brauche ich dafür, daß man täglich informiert wird, wer an "meinem" Auftrag rumschreibt.
"Deine Bedingungen" wären nämlich dann:
"Wenn das Dokument heute geändert, und zwar nicht von mir, sondern jemand anders, dann sende Mail", darum:
@If( zuständig != letzter & Info!="";sende_an; ...  über die Ansicht, weil dann der Agent nicht auf 8.935 Einträgen, sondern auf 20 läuft...


Titel: Re: Info bei Änderung eines Dokuments
Beitrag von: Tode am 10.01.11 - 15:54:14
Sorry, aber das ist leider Quatsch.

Deine Zeile
sende_an :=

wird IMMER durchgeführt. Das ist nicht wie in Python, wo man Funktionen einer Variablen zuweisen kann, und dann die Variable anstelle der Funktion aufruft.

Diese Zeile sendet IMMER eine Mail. Und wenn Mailsend ein Ergebnis zurückliefern würde, dann hättest Du dieses danach in der Variablen "sende_an".

Dein @Mailsend muss ins @If rein...

Gruss
Tode
Titel: Re: Info bei Änderung eines Dokuments
Beitrag von: koehlerbv am 10.01.11 - 16:12:31
Und das @dbColumn holt *alle* Spalteninhalte in eine Liste und nicht die eigentlich gewünschte.

Bernhard
Titel: Re: Info bei Änderung eines Dokuments
Beitrag von: emadowo am 10.01.11 - 16:57:53
"...völlig falsch ...."  ,  "...Quatsch..."   - ihr habt ja Recht!? Ihr müßt mich ja für den NPVG (=Notesprogrammierervolltrottel) halten....  :)

Somit verzichte ich auf die Ansicht, setze den Agent auf "alle neuen und geänderten Dokumente" und fülle den Agent mit diesem Code:
Code
Heute := @Today;
Zugriff := @Accessed;
zuständig := Auftrag_zuständig;
letzter := @Name([CN];@Subset($UpdatedBy; -1));
@If(
Heute=Zugriff & zuständig != letzter & ÄnderungsInfoAn!="";
@MailSend(ÄnderungsInfoAn;"";"";"Änderung des Auftrags";"Der Auftrag:  < "+Auftrag_kurz+" > wurde von "+letzter + " bearbeitet:";[IncludeDoclink]);
"");

Besser so?
Titel: Re: Info bei Änderung eines Dokuments
Beitrag von: Peter Klett am 10.01.11 - 17:26:11
Sieht doch ganz gut aus, funktioniert das auch?

Übrigens wird hier niemand für ein NPVG (sollte das nicht NPVT heißen) oder was sonst auch immer gehalten. Dass es unterschiedliche Wissensstände gibt, ist doch völlig normal, sonst bräuchte es dieses Forum nicht.

Noch ein Tipp: Ich würde keine Umlaute in Variablennamen verwenden. Das mag ja funktionieren, aber vertrauen darauf würde ich nicht.
Titel: Re: Info bei Änderung eines Dokuments
Beitrag von: emadowo am 11.01.11 - 14:00:20
jep, es funzt!   :D

Vielen Dank an euch alle - wie immer habt ihr kompetent und schnell geantwortet!