Domino 9 und frühere Versionen > ND6: Entwicklung
Mailbenachrichtigung mit 5er geht, mit 6er nicht
mgeidl:
Hallo,
ich hab folgendes Problem: Ich hab eine Urlaubsdatenbank, in der der Mitarbeiter seinen Urlaub beantragt und dann über einen Hotspot das Dokument mit DokLink an den Abteilungsleiter zur Genehmigung per Mail sendet.
Damit der User nicht immer in die Datenbank rein muß, hab ich die Mail-Schablone dahingehend modifiziert, daß über eine Schaltfläche, die ein @Command([Compose];...... ausführt, das Dokument gleich aufgerufen wird.
Unter dem 5er Client hat alles reibungslos funktioniert. Mit dem 6er Client wird die Mail-Benachrichtigung nur dann geschickt, wenn ich das Dokument aus der Datenbank selbst heraus aufrufe. Sobald ich´s über die Schaltfläche mach, werden alle Aktionen ausgeführt, nur das Senden der Mail nicht.
Bitte um eure Hilfe. DANKE
Marietta
Tode:
tja, da wirst Du wohl Opfer der neuen Ausführungsreihenfolge von Befehlen in R6.
Genau das sind die Dinge, die man vor der Migration von R5 auf R6 hätte prüfen müssen, denn genau hier hat sich vieles geändert ...
Aber genug "kluggeschi..en"...
Poste mal Deinen Kompletten Code, dann können wir Dir auch sagen, wo es Dir die Reihenfolge verdreht...
Gruß
Tode
mgeidl:
Hallo,
neue Reihenfolge?? Hier die Befehle, die ausgeführt werden:
@Command([ViewRefreshFields]);
tmpdoppelt:=@DbLookup( "": "NoCache" ;"":"";"doppelt";doppelt;1);
@If(@IsError(tmpdoppelt);"";@Prompt([Ok];"Fehler";"Eine Abwesenheit für diese Personalnummer und Datum wurde bereits eingetragen!"));
@If(Abwesenheit="Sonderurlaub" & Begründung="";@SetField("Begründung";@Prompt([OkCancelEdit]; "Pflichtfeld"; "Geben Sie eine Begründung für Ihre Abwesenheit ein!";""));Abwesenheit="unbez. Urlaub zu Lasten DN" & Begründung="";@SetField("Begründung";@Prompt([OkCancelEdit]; "Pflichtfeld"; "Geben Sie eine Begründung für Ihre Abwesenheit ein!";""));
@If(@IsError(tmpdoppelt);@MailSend(GenehmigungDurch;"";"";"Urlaubsantrag/Abwesenheitsmeldung für "+Name;"";"";[IncludeDoclink]);""));
@If(@IsError(tmpdoppelt);@PostedCommand([FileSave]);"");
@If(@IsError(tmpdoppelt);@Command([FileCloseWindow]);"")
Tode:
und wo ist in diesem code das Compose ?
nur mal so als Tipp nebenbei: Du machst Dir die Sache in der Programmierung wesentlich einfacher, wenn Du mit @Return arbeitest:
Diese Zeile:
@If(@IsError(tmpdoppelt);"";@Prompt([Ok];"Fehler";"Eine Abwesenheit für diese Personalnummer und Datum wurde bereits eingetragen!"));
einfach so erweitern:
@If(@IsError(tmpdoppelt);"";@Return( @Prompt( [Ok];"Fehler";"Eine Abwesenheit für diese Personalnummer und Datum wurde bereits eingetragen!")));
dadurch sparst Du Dir in die Folge alle @Ifs die auf @IsError... abfragen, weil Der Code durch das @Return an der Stelle abbricht...
AUch wenn das Compose im Code- Segment fehlt, vermute ich einen falschen Formel- Kontext:
Die Maske wird zwar "composed", aber der Code greift noch auf die Daten aus der Mail- DB zurück (also z.B. das dort gerade markierte Dokument). Dort gibt es höchstwahrscheinlich kein Feld "GenehmigungDurch", weshalb der @Mailsend fehlschlägt. Probiers mal mit
@UpdateFormulaContext
Gruß
Tode
Untitled:
--- Code: ---@If(@IsError(tmpdoppelt);@PostedCommand([FileSave]);"");
@If(@IsError(tmpdoppelt);@Command([FileCloseWindow]);"")
--- Ende Code ---
Also was ich gerade auf den ersten Blick sehe ist hier, dass das Fenster zuerst geschlossen wird und dann gespeichert. @PostedCommand wird doch immer am Ende ausgeführt, egal wo es steht.
Oder irre ich mich da jetzt? ::)
Grüsse
Moritz
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln