Autor Thema: DocLink wird nicht mehr gesetzt und Attachments im V2 Style  (Gelesen 3152 mal)

Offline sz

  • Frischling
  • *
  • Beiträge: 4
Hallo zusammen,

habe zwar schon gesucht, aber nichts gefunden, was mein Problem beschreibt.

Ich habe eine Funktion, bei der ich per Schaltfläche im Backend ein Dokument erstelle, das nach der Verarbeitung in Script zuerst noch im Front-End geöffnet wird und dann vom anwender als Mail verschickt wird.
Ursprünglich wurde der Inhalt eines Textfeldes aus einer Konfiguration eingelesen. Dort sind Feldnamen angegeben, die durch # vorne und hinten gekennzeichnet sind. Der Text wird von vorne bis hinten durch gegangen und bei dem, was zwischen # steht, wird aus dem Ursprungsdokument der Wert des Feldes geholt und in den Text eingefügt. Dann wird der Text im neuen Dokument ins Richtextitem eingefügt. Am Ende kommt ein DocLink über AppendDocLink auf das Ursprungsdokument rein und danach dann noch das Wort "Anlagen:". Wenn das alles gemacht ist, werden verschiedene Dateien angehängt.
soweit so gut. Diese Funktion klappte prima. Der Doclink wurde gesetzt und die Attachments wurden "normal" angehängt.

Jetzt mußte ich die Funktion ändern, da die Anwender in der Konfiguration den Inhalt formatieren wollen.
Also habe ich in der Konfiguration ein Richtextfeld reingemacht in dem dann der Text drin steht. Zusätzlich noch ein Textfeld, in dem die Feldnamen als Platzhalter aufgelistet sind. Dadurch wird das handling ja anders. Die Funktion sieht jetzt folgendermaßen aus (nur der Teil, auf den es mir ankommt):

      'Erstellen von neuer Mail
      Set mailDoc = New NotesDocument(db)
      Call mailDoc.ReplaceItemValue(cdfForm, cForm)
      Call mailDoc.ReplaceItemValue("From", s.Username)
      Call mailDoc.ReplaceItemValue("DocType", strMailversandTyp)
      Call mailDoc.ReplaceItemValue("dfSpracheTX", currDoc.GetItemValue("dfSpracheTX")(0))      
      If strSprache = "DE" Or strSprache = "DEDE" Then
         strTempSprache = "DEDE"
      Else
         strTempSprache = "ENEN"
      End If

      'Setzen der Verteiler
      Call mailDoc.ReplaceItemValue("SendTo", verteilerArray)         
      Call mailDoc.ReplaceItemValue("CopyTo", kopieArray)         
      
      'Setzen und Bearbeiten von Subject
      strText = konfigDoc.GetItemValue("dfDefaultMailSubjectTX")(0)
      While Instr(1, strText, cWildCardTX) > 0
         Call sInsertFieldValueToDefaultMailText(currDoc, strText, strTempSprache)
      Wend
      Call mailDoc.ReplaceItemValue("Subject", strText)
      
      'Setzen und Bearbeiten von RichTextFeld
      Set konfigBody = konfigDoc.GetFirstItem("dfDefaultMailBodyTX")
      'Kopieren des RichTextFelds aus der Konfiguration in das neue Doc - Formatierung wird übernommen
      Call mailDoc.CopyItem(konfigBody, "Body")
      Set MailBodyItem = mailDoc.GetFirstItem("Body" )
      
      'Verarbeitung der Platzhalter, Daten werden aus dem Ursprungsdoc gelesen und im Text eingefügt
      Dim platzhalter As Variant
      platzhalter = konfigDoc.GetItemValue("dfDefaultMailWildCardsTX")
      Set rtRange = mailbodyItem.CreateRange
      
      Forall o In platzhalter
         strTausch1 = o
         strTausch2 = Left(Right(o, Len(o)-2), Len(o)-4)
         strTausch3 = currDoc.GetItemValue(strTausch2)(0)
         If Instr(strTausch3, "~~") > 0 Then
            strTausch3 = Strleft(Strright(strTausch3, strTempSprache + "~~"), "~~")
         End If         
         Call rtrange.Findandreplace(strTausch1, strTausch3, RT_REPL_ALL)
      End Forall
      
      'Einfügen des DocLinks
      Call MailBodyItem.AppendDocLink(currDoc, "")
      
      'Einfügen von Anlagen
      Call MailBodyItem.AddNewLine(2)
      If strSprache = "DE" Then
         Call MailBodyItem.AppendText("Anlagen: ")
      Else
         Call MailBodyItem.AppendText("Enclosures: ")
      End If
      
      'Verarbeiten der Attachments
      Call MailBodyItem.AddNewLine(1)
      Set rtItem = currDoc.GetFirstItem(konfigDoc.GetItemValue("dfDefaultAttachmentsTX")(0))
      If Not rtItem Is Nothing Then
         Call MailBodyItem.AddNewLine(1)
         If currDoc.HasEmbedded Then
            Set tmpItem = currDoc.GetFirstItem("dfAnlagenNameTX")
            varNamen = fBEBExplode(tmpItem.Text, ";")
            Forall o In varNamen
               Set embeddedObject = currDoc.GetAttachment(Trim(o))
               If Not embeddedObject Is Nothing Then
                  Call embeddedObject.ExtractFile(strTemp + embeddedObject.Name)
                  Call MailBodyItem.EmbedObject(EMBED_ATTACHMENT, "", strTemp + embeddedObject.Name)
                  Call MailBodyItem.AddNewLine(1)
                  Kill strTemp + embeddedObject.Name
               End If
            End Forall
         End If
      End If

         Set uiMemo = ws.Editdocument(True, mailDoc, False,,False)
         Call uiMemo.Refresh


Nachdem ich die Konfiguration auf Richtext umgestellt habe und sich die Verarbeitung des Textes geändert hat, wird der DocLink und das Wort "Anlagen" nicht mehr eingefügt und die Attachments hängen im V2 Style unter der Linie im Dokument. Das mit den Attachments wäre ja so tragisch nicht, da sie ja trotzdem angehängt sind, aber der DocLink muß da mit rein.

Teilweise ist der DocLink da, wenn ich das ganze debugge, aber auch nicht immer. Was mach ich denn falsch? Kann mir jemand helfen?

Gruß
SZ



Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: DocLink wird nicht mehr gesetzt und Attachments im V2 Style
« Antwort #1 am: 19.04.07 - 16:26:32 »
Exakt die gleiche Anfrage findet sich auch im Dominoforum. Und zwei Foren gleichzeitig mag niemand beobachten ...

Offline sz

  • Frischling
  • *
  • Beiträge: 4
Re: DocLink wird nicht mehr gesetzt und Attachments im V2 Style
« Antwort #2 am: 23.04.07 - 14:37:21 »
ja sorry, nachdem ich hier keine Antwort bekam, hab ichs halt auch in nem anderen Forum versucht (zwei Stunden später). Letztendlich hab ich in beiden keine Antwort bekommen, aber macht nix, inzwischen haben wir es rausbekommen.

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: DocLink wird nicht mehr gesetzt und Attachments im V2 Style
« Antwort #3 am: 23.04.07 - 15:08:29 »
...aber macht nix, inzwischen haben wir es rausbekommen.

... und wie sieht eure Problemlösung aus? Du könntest "nachfolgenden Generationen" mit dem gleichen Problem das Leben etwas erleichtern.


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

Offline sz

  • Frischling
  • *
  • Beiträge: 4
Re: DocLink wird nicht mehr gesetzt und Attachments im V2 Style
« Antwort #4 am: 26.04.07 - 12:50:24 »
ok, wir haben es dann über die NotesRichTextNavigator-Klasse hinbekommen. Verstehen tu ich es zwar nicht ganz, weil es ja ursprünglich mal funktioniert hat - ein dreiviertel Jahr lang - aber ich sag ja immer, ich muß nicht alles verstehen.....

Zuerst haben wir festgestellt, daß es, wenn man das Dokument per Script speichert, auch funktioniert, aber das war nicht Sinn und Zweck, da der Anwender die Möglichkeit haben muß, seine Aktion abzubrechen.

Jetzt sieht das Script ab dem Zeitpunkt, wo der DocLink eingefügt wird, so aus:

      Dim rtnav As NotesRichTextNavigator
      Set rtnav = MailBodyItem.CreateNavigator
      
      If rtnav.FindLastElement(RTELEM_TYPE_DOCLINK) Then
         
         Call MailBodyItem.BeginInsert( rtnav.GetElement(), 0)
         
         Call MailBodyItem.EndInsert()
         
      End If
      
      If rtnav.FindLastElement(RTELEM_TYPE_FILEATTACHMENT) Then
         
         Call MailBodyItem.BeginInsert( rtnav.GetElement(), 0)
         
      End If

-> Hier kommt dann das Einfügen von Anlagen und Anhängen der Attachments wie im obigen Script auch

      Call MailBodyItem.EndInsert()


Und so funktioniert es wieder einwandfrei mit Doclink und sauberen Attachments

Grüße

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz