Autor Thema: RichTextFeld RTF aus Backend in Frontend importieren  (Gelesen 4691 mal)

Offline Alexander 28

  • Aktives Mitglied
  • ***
  • Beiträge: 190
  • Geschlecht: Männlich
  • Meistens gibt es eine Lösung!
Ich meine hier in diesem Forum schon einmal irgendwann einen Thread gelesen zu haben, wo's genau um dieses Thema ging. Leider habe ich diesen nicht wieder gefunden.

Mein Problem ist, dass ich in einem Dokument stehe, in welches ich den Inhalt eines Rich Text Feldes aus einem Dokument importieren möchte, welches ich mir zuvor über eine Picklist aus dem Backend hole.  Aber soweit mir bekannt ist, kann ich solche Dinge im FrontendDokument nicht sofort sichtbar machen, sondern muss das Frontend Dokument temporär schließen und wieder öffnen um den importierten Rich Text sehen zu können. Dies erfordert allerdings das Speichern meines Frontend Dokumentes, was widerum nicht möglich ist, da zu dem Zeitpunkt des Importes noch verschiedene Feld-Validierungen nicht erfüllt sind. Insofern befinde ich mich irgendwie in einer Sackgasse.

Hat irgend einer eine Idee wie ich so etwas lösen könnte?
« Letzte Änderung: 11.10.12 - 12:17:56 von Alexander 28 »

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: RichTextFeld RTF aus Backend in Frontend importieren
« Antwort #1 am: 10.10.12 - 15:47:36 »
Ausgewähltes Dokument mit einer Maske im Lesemodus anzeigen lassen, die nur den relevanten Inhalt (also das Richtextfeld) enthält, alles markieren, in die Zwischenablage kopieren, Dokument wieder schließen, im uidoc ins Richtextfeld gehen und dort wieder einfügen.

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.885
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: RichTextFeld RTF aus Backend in Frontend importieren
« Antwort #2 am: 10.10.12 - 15:51:18 »
Das geht recht einfach, wenn Dein Dokument, in das Du einfügen willst, zum Bearbeiten geöffnet ist. Dann kannst Du ganz einfach über die (nicht dokumentierte) Funktion "NotesUIDocument.ImportItem" gehen (verwendet im InsertSignature- Code des Mailtemplater, man kann also davon ausgehen, dass das Funktioniert. Hier ein Auszug aus der CoreEmailClasses- ScriptLib:
Code
Call uiDoc.ImportItem(profileDoc, "Signature_Rich")
Musst nur schauen, dass Dein Cursor per uiDoc.GotoField() im Richtext- Feld steht...
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline pram

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.170
  • Geschlecht: Männlich
    • Foconis Object Framework
Re: RichTextFeld RTF aus Backend in Frontend importieren
« Antwort #3 am: 10.10.12 - 17:26:39 »
dritte Möglichkeit: du machst ein Reopen, dann kannst du in der Zeit in der das Doc zu ist, das RT-Feld verändern.

Gruß
Roland
Roland Praml

IBM Certified Application Developer - Lotus Notes and Domino 8
Ich verwende das Foconis Object Framework

Offline Alexander 28

  • Aktives Mitglied
  • ***
  • Beiträge: 190
  • Geschlecht: Männlich
  • Meistens gibt es eine Lösung!
Re: RichTextFeld RTF aus Backend in Frontend importieren
« Antwort #4 am: 11.10.12 - 09:09:10 »
Ausgewähltes Dokument mit einer Maske im Lesemodus anzeigen lassen, die nur den relevanten Inhalt (also das Richtextfeld) enthält, alles markieren, in die Zwischenablage kopieren, Dokument wieder schließen, im uidoc ins Richtextfeld gehen und dort wieder einfügen.

Hallo Peter, ja genau diesen Weg bin ich bisher gegangen, allerdings habe ich einen wesentlichen Unterschied bei meiner Lösung. Ich habe das RTF nicht in einer separaten Maske anzeigen lassen, sondern das Original BackendDokument im Bearbeiten Modus geöffnet und die Schritte wie beschrieben durchgeführt. Das erforderte aber immer einen Editor Zugriff auf das Backenddokument, was ich zukünftig vermeiden möchte. Insofern werde ich deine Lösung auf jeden Fall einmal probieren. Vielen Dank dafür.

Offline Alexander 28

  • Aktives Mitglied
  • ***
  • Beiträge: 190
  • Geschlecht: Männlich
  • Meistens gibt es eine Lösung!
Re: RichTextFeld RTF aus Backend in Frontend importieren
« Antwort #5 am: 11.10.12 - 09:10:34 »
Das geht recht einfach, wenn Dein Dokument, in das Du einfügen willst, zum Bearbeiten geöffnet ist. Dann kannst Du ganz einfach über die (nicht dokumentierte) Funktion "NotesUIDocument.ImportItem" gehen (verwendet im InsertSignature- Code des Mailtemplater, man kann also davon ausgehen, dass das Funktioniert. Hier ein Auszug aus der CoreEmailClasses- ScriptLib:
Code
Call uiDoc.ImportItem(profileDoc, "Signature_Rich")
Musst nur schauen, dass Dein Cursor per uiDoc.GotoField() im Richtext- Feld steht...

Hi Tode, herzlichen Dank für diesen Hinweis. Davon habe ich ja überhaupt noch nie etwas gehört!? Werde ich heute auf jeden Fall einmal ausprobieren und ein kurzes Feedback geben. Vielen Dank dafür.

Offline Alexander 28

  • Aktives Mitglied
  • ***
  • Beiträge: 190
  • Geschlecht: Männlich
  • Meistens gibt es eine Lösung!
Re: RichTextFeld RTF aus Backend in Frontend importieren
« Antwort #6 am: 11.10.12 - 09:11:27 »
dritte Möglichkeit: du machst ein Reopen, dann kannst du in der Zeit in der das Doc zu ist, das RT-Feld verändern.

Gruß
Roland

Hi Roland, das habe ich nicht wirklich verstanden!? Reopen  ohne vorher zu speichern?!  Keine Ahnung wie du das meinst ...

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.885
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: RichTextFeld RTF aus Backend in Frontend importieren
« Antwort #7 am: 11.10.12 - 09:16:17 »
Reopen geht nur mit speichern... und wegen "ImportItem": Davon haben nur diejenigen was gehört, die zufälligerweise mal am Signatur- Code von IBM was machen mussten, oder eben einen Blog- Eintrag zu dem Thema gelesen haben... Leider verschweigt uns IBM diese einigermassen geniale Funktion beharrlich (wie auch einige andere, die man nur durch Zufall im Mail- Template- Code findet)
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline pram

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.170
  • Geschlecht: Männlich
    • Foconis Object Framework
Re: RichTextFeld RTF aus Backend in Frontend importieren
« Antwort #8 am: 11.10.12 - 09:54:48 »
Thorsten, hier irrst du, Reopen geht auch ohne speichern, in dem man zuerst das Dokument neu öffnet und dann das alte schließt.
Ich skizziere mal die Vorgehensweise:

Code
' Globale Variablen
Set myUiDoc = .... ' Dies ist das gerade geöffnete UI-Document und muss z.B. im PostOpen der Maske gesetzt werden, evtl geht auch ws.currentDocument
Set myBackendDoc = myUiDoc.Document  ' das zugehörige BackendDoc

function reopen()
  Call myUIDoc.Refresh(True)	' Update richtext aus UI ins backend
  ' An dieser Stelle kann myBackendDoc verändert werden (auch Richtext)
  Set oldUiDoc = myUiDoc
  Set myUiDoc = ws.editDocument(true, myBackendDoc) ' wir öffnen das aktuelle Backend-Doc nochmals
  set myBackendDoc = myUiDoc.document ' und holen uns das BackendDoc vom UIDoc (dies ist zwar das gleiche Dokument aber ein neues Objekt. s.u.!)
  ' Altes UIDoc schließen:
  oldUiDoc.document.SaveOptions = "0" ' Wichtig oldUIDoc.document != myBackendDocument (auch wenn es die gleiche UNID hat)
  call oldUiDoc.close(true)
end function

@Alexander: Wichtig für dich ist vielleicht noch, dass die Methode ImportItem erst ab Notes 8.5 (evtl schon ab 8.0) zur Verfügung steht.

Gruß
Roland
Roland Praml

IBM Certified Application Developer - Lotus Notes and Domino 8
Ich verwende das Foconis Object Framework

Offline Alexander 28

  • Aktives Mitglied
  • ***
  • Beiträge: 190
  • Geschlecht: Männlich
  • Meistens gibt es eine Lösung!
Re: RichTextFeld RTF aus Backend in Frontend importieren
« Antwort #9 am: 11.10.12 - 12:17:31 »
Hab uiDoc.ImportItem ausprobiert und bin begeistert. Warum nur ist diese Funktion nicht dokumentiert. Hab's schon so oft vermisst!!!!

Tausend Dank, Tode (und an alle anderen für die Hilfe  ;) )

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz