Autor Thema: Senden Verhindern, wenn im Body ein Route-Zeichen vorhanden ist.  (Gelesen 3271 mal)

Offline Lancelot

  • Senior Mitglied
  • ****
  • Beiträge: 357
  • Geschlecht: Männlich
  • Tu was Du willst, aber schade keinem!
Guten Morgen Experten,

wir haben für gewissen Vorgänge mit den Kunden von uns einen eigene Emailvorlage entwickelt
Diese Vorlage sollen die Sachbearbeiter in den entsprechenden Fällen benutzen und keinen frei
Verfassten Emails an den Kunden schicken.

Die Texte kommen als Textblöcke aus einer anderen DB die nur verschiedene Textblöcke enthält und werden
zuvor übe reine Dialogbox vom MA ausgewählt in dann in das Body Feld kopiert.
In dem Text sind aber Routen "####.## €" angegeben um den MA zu sagen, hier bitte den Betrag eingeben, da es nicht
möglich ist, leere Felder in den Body einzufügen.

Nun zum Problem.
Es soll abgefragt werden ob im Body noch ein Route Zeichen enthalten ist und dann wenn ja darf die Email nicht gesendet werden.
Das kriege ich aber nicht hin.
Folgendes habe ich schon versucht:
mit @Abstract im Button "Senden"
mit GetFormatedtext in einem Agenten im  Button "Senden"
im Object "QuerySave" und QuerySend steht mir der Text vom Body nicht zur Verfügung
im Object "PostSave" steht mir der Body zwar zur Verfügung, aber wenn ich das Script hier abbreche, wurde das Email shcon verschickt.

Hat vielleicht jemand so ein Problem schon mal gelöst und weiß jemand einen Rat für mich, wie ich das Senden verhindern kann, wenn im Text vom Body noch eine Route vorhande ist.

Bin verzweifelt und für jeden noch so kleinen Tipp dankbar.
Gruß Gerry (Lancelot)

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Versuch mal

NotesUIDocument.FieldGetText ("Body")

Offline Lancelot

  • Senior Mitglied
  • ****
  • Beiträge: 357
  • Geschlecht: Männlich
  • Tu was Du willst, aber schade keinem!
Hallo Peter

und erst mal danke für den Tipp.
Habe den Tipp im Agent untergebracht und über den Sende Button laufen lassen.
Die Anfrage nach der Route läuft nun sauber, aber die Email wird immer verschickt, egal ob eine Route drin ist oder nicht.

Habe ich eine Möglichkeit dieses Senden im Agenten oder im Senden Button zu verhindern?
Oder wäre der Agent wo anders sinnvoller untergebracht um das senden ggf. zu verhindern?
Gruß Gerry (Lancelot)

Glombi

  • Gast
Im Fehlerfall, d.h. es ist eine Raute drin, müsste das Systemfeld MailOptions auf den Wert 0 gesetzt werden. Damit wird das Senden unterbunden.
Im positiven Fall sollte die 0 entfernt werden, sofern vorhanden.

Andreas

Offline Lancelot

  • Senior Mitglied
  • ****
  • Beiträge: 357
  • Geschlecht: Männlich
  • Tu was Du willst, aber schade keinem!
Ok dann denke ich wahrscheinlich generell falsch, denn auch jetzt wird das Email verschickt, obwohl das Feld MailOptions mit dem Wert "0" vorhanden ist.

Ich glaube ich muss den Agent wo anders aufrufen, denn im Button ist eh wohl zu spät oder falsch?

Der Aufruf des Agenten erfolgt in Knopf Senden.

Code im Button:
@Command([ToolsRunMacro];"Find Raute in Body");
MEMO_SEND:="1024";
FIELD ActionInProgress:=MEMO_SEND;
@If(@Command([FileSave]);@Command([FileCloseWindow]);@Return(""))

Code im Agenten (ohne Fehlerbehandlung etc.)
Sub Initialize
   Dim ws As New NotesUIWorkspace
   Dim uidoc As NotesUIDocument
   Dim strrtvar As String
   Dim findstring As String
   
   Set uidoc = ws.Currentdocument
   strrtvar = uidoc.fieldgetText("Body")
   findstring = InStr(strrtvar, "#")
   
   If findstring = "0" Then
      Call uidoc.Fieldsettext("geprueft",findstring)
      Call uidoc.Fieldsettext("MailOptions", "")
   Else
      Call uidoc.Fieldsettext("geprueft",findstring)
      MsgBox "Die Rauten müssen entfernt werden!"
      Call uidoc.Fieldsettext("MailOptions", "0")
   End If
   
End Sub
Gruß Gerry (Lancelot)

Glombi

  • Gast
Ich würde MailOptions im Backend setzen und als Zahlwert mit dem Wert 0, nicht als String.

uidoc.Document.MailOptions = 0

Offline thkn777

  • Aktives Mitglied
  • ***
  • Beiträge: 176
Hallo Lancelot,
so, wie ich Dich verstanden habe, editieren die Nutzer die Inhalte des Body-Feldes der Mail. Wir sind also im UI. Wie wäre es mit dem QuerySend Event? Ich habe eine Maske erstellt mit einem RichText Feld "body", dann einen Action-Button dazu erstellt "Senden" und im QuerySend der Maske folgendes eingefügt:

Code
Sub Querysend(Source As Notesuidocument, Continue As Variant)
	Dim s As String
        Dim res as Long
	
	s = Source.FieldGetText("body")
	res =  Instr(s, "#") > 0	
	If res Then
		Continue = False
		Print Str$(Now()) & " # gefunden - kein Versand"
	Else
		Print Str$(Now()) & " keine # gefunden."
	End If
End Sub

Der Button "Senden" sieht so aus:

Code
Sub Click(Source As Button)
	Dim ws As New NotesUIWorkspace
	Dim uidoc As NotesUiDocument
	
	Set uidoc = ws.CurrentDocument
	Call uidoc.Send
End Sub

Ergebnis: ist im Body-Feld eine Raute ("#"), wird die Mail nicht versendet. Vielleicht hilft Dir das ja weiter.

Viel Erfolg.
« Letzte Änderung: 31.01.14 - 15:27:41 von thkn777 »

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Aus der Hilfe zu ToolsRunMacro

This command executes after all @functions. Use @Command([RunAgent]) to execute immediately

Offline Lancelot

  • Senior Mitglied
  • ****
  • Beiträge: 357
  • Geschlecht: Männlich
  • Tu was Du willst, aber schade keinem!
Danke Euch ihr seit alle klasse.

Jetzt kann ich mir die Lösung so zu sagen aussuchen.  ;)
Ihr habe mit wieder mal sehr viel Nerven und Verzweiflung erspart.

Also nochmals vielen Dank ihr seit einmalig. ;)
Gruß Gerry (Lancelot)

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz