Autor Thema: DocLink aus Zwischenspeicher einfügen  (Gelesen 4380 mal)

Offline buzi

  • Aktives Mitglied
  • ***
  • Beiträge: 171
DocLink aus Zwischenspeicher einfügen
« am: 25.03.15 - 09:35:38 »
Hallo,

wie kann ich per Lotus Script auf den Zwischenspeicher zugreifen? Der User kopiert sich ein Dokument in den Zwischenspeicher und möchte es dann an anderer Stelle per Button in ein (Rich-)Textfeld einfügen lassen. Ich weiß es klingt umständlich aber sie wollen es so. Die Frage ist, wie ich auf das Dokument im Zwischenspeicher zugreifen kann ich denke den Rest krieg ich hin.

DANKE!!

Offline Keydins

  • Aktives Mitglied
  • ***
  • Beiträge: 163
  • Geschlecht: Männlich
Re: DocLink aus Zwischenspeicher einfügen
« Antwort #1 am: 25.03.15 - 10:35:59 »
Du möchtest in dem Zusammenhang mit

Call notesUIDocument.Paste

arbeiten.

Gruß
Dirk
Gruß Dirk

Aktuelle Notesumgebung
~800 BasicClients 9.0.1 FP9 SHF55
  10 FullClients 9.0.1 FP7 SHF143
    7 DominoServer 9.0.1 FP9 HF 139 / 64 Bit

Offline buzi

  • Aktives Mitglied
  • ***
  • Beiträge: 171
Re: DocLink aus Zwischenspeicher einfügen
« Antwort #2 am: 02.04.15 - 09:17:56 »
Danke für den Tip. Ich krieg die Fehlermeldung das Dokument sei nicht gespeichert, ein Save vorher bringt aber auch nichts....

Der Arbeitsablauf geht weiter. Ist der DocLink in das Richtext-Feld eingefügt (momentan manuell STRG+V), muss er mit dem heutigen Datum versehen in ein anderes Richtext-Feld kopiert werden. Muss ich dazu den Inhalt des RT-Felds auslesen, und den Link als Link ins andere RT-Feld kopieren oder geht das direkt, den ganzen Inhalt zu kopieren? Sorry - Der Umgang mit Richtext Feldern fällt mir schwer.
« Letzte Änderung: 02.04.15 - 09:31:23 von buzi »

Offline Keydins

  • Aktives Mitglied
  • ***
  • Beiträge: 163
  • Geschlecht: Männlich
Re: DocLink aus Zwischenspeicher einfügen
« Antwort #3 am: 02.04.15 - 09:34:59 »
Der Code ist quasi direkt aus der NotesHilfe (paar Zeilen rausgenommen und direkt das Zielfeld angegeben)

Code
Sub Click(Source As Button)
	
	Dim workspace As New NotesUIWorkspace
	Dim uidoc As NotesUIDocument
	Set uidoc = workspace.CurrentDocument
	Call uidoc.GotoField ("RTFeld")
	Call uidoc.Paste
	
End Sub

Funktioniert mit allen möglichen Inhalten in der Zwischenablage: Text,  NotesLinks, die ich mir über den Rechsklickdialog "Als Dokumentenlink kopieren" erstelle, Screenshots u.s.w.

Da hat sich mein Posting mit deinem Edit überschnitten :-)

Ebenfalls aus der Hilfe:
Zitat
Rich text items are an exception. Modifications made to rich-text items in the back-end document do not appear in the front-end until the document is closed and reopened.

Also Speichern, Schließen, Öffnen und dann weiter mit der nächsten Kopieraktion.


Alternativ kannst du das 2. Feld aber auch direkt befüllen, denn der Link ist ja noch in der Zwischenablage. Ausgeehnd von dem Beispiel einfach Call uidoc.FieldAppendText ("RTFeld", " - " & Today) am Ende anhängen und schon ist das Tagesdatum hinter dem Link.



Gruß
Dirk
« Letzte Änderung: 02.04.15 - 09:48:53 von Keydins »
Gruß Dirk

Aktuelle Notesumgebung
~800 BasicClients 9.0.1 FP9 SHF55
  10 FullClients 9.0.1 FP7 SHF143
    7 DominoServer 9.0.1 FP9 HF 139 / 64 Bit

Offline buzi

  • Aktives Mitglied
  • ***
  • Beiträge: 171
Re: DocLink aus Zwischenspeicher einfügen
« Antwort #4 am: 02.04.15 - 12:05:09 »
Es geht jetzt (fast) gut. In dem RichText Feld möchte ich mehrere solcher Einträge speichern können in der Form

DOCLINK - 01.01.2015
DOCLINK - 02.02.2015
...

Mein Code dafür fummelt im Frontend und im Backend herum weil ich den Paste()-Befehl im Frontend mache, das Einfügen der neuen Zeile aber im Backend. Und das nur, weil ich keine entsprechenden Funktionen fand. Derzeit sieht das Ergebnis so aus:

DOCLINK DOCLINK

Es werden also die Änderungen im Backend gar nicht übernommen. Was fehlt mir?

Sub InsertLink()
   
   Dim workspace As New NotesUIWorkspace
   Dim uidoc As NotesUIDocument
   Dim doc As NotesDocument
   Dim rti As NotesRichTextItem
   Dim nav As NotesRichTextNavigator
   Dim docLinkItem As NotesRichTextDocLink
   
   Set uidoc = workspace.CurrentDocument
   Set doc = uidoc.Document
   
   ' paste doc link to rich text field
   
   Call uidoc.GotoField ("rtField")
   Call uidoc.Paste   
   Call uidoc.Save()
   
   ' add date to link and new line on top to rich text field
   
   Set rti = doc.Getfirstitem("rtField")
   Set nav = rti.Createnavigator()
   Set docLinkItem = nav.GetFirstElement(5)
   
   Call rti.BeginInsert(docLinkItem, True) ' insert date after first doc link
   Call rti.Appendtext(" - " & Today)
   Call rti.EndInsert()
   
   Call rti.BeginInsert(docLinkItem, False) ' insert newline before first doc link
   Call rti.Addnewline(1)
   Call rti.EndInsert()
   
   Call doc.Save(True, False, False)
   Call uidoc.Close(True)
   
   Call workspace.EditDocument(True)
   
End Sub


Also das Problem ist eigentlich die neue Zeile einzufügen. Kriege ich das auch ohne Backend hin?
« Letzte Änderung: 02.04.15 - 12:13:32 von buzi »

Offline Keydins

  • Aktives Mitglied
  • ***
  • Beiträge: 163
  • Geschlecht: Männlich
Re: DocLink aus Zwischenspeicher einfügen
« Antwort #5 am: 02.04.15 - 17:47:01 »
Wenn es nicht stört, dass neue Einträge immer oberhalb eingefügt werden, ginge das mit folgendem Code im Frontend:

Code
 ' paste doc link to rich text field
   
	Call uidoc.GotoField ("rtField")

	If uidoc.FieldGetText("rtField") = "" Then
		Call uidoc.Paste
		Call uidoc.InsertText (" - " & Today)
	Else
		Call uidoc.Paste
		Call uidoc.InsertText (" - " & Today)
		Call uidoc.InsertText (Chr(10))
	End If
   

Gruß Dirk

Aktuelle Notesumgebung
~800 BasicClients 9.0.1 FP9 SHF55
  10 FullClients 9.0.1 FP7 SHF143
    7 DominoServer 9.0.1 FP9 HF 139 / 64 Bit

Offline buzi

  • Aktives Mitglied
  • ***
  • Beiträge: 171
Re: DocLink aus Zwischenspeicher einfügen
« Antwort #6 am: 07.04.15 - 13:36:40 »
Danke Keydins!

Offline buzi

  • Aktives Mitglied
  • ***
  • Beiträge: 171
Re: DocLink aus Zwischenspeicher einfügen
« Antwort #7 am: 08.04.15 - 11:32:37 »

Sagt mal ist das ganze doch auch im Backend zu lösen? Das Problem ist nämlich, dass der Benutzer im Nachhinein das Feld in den der DocLink eingefügt wurde natürlich nicht bearbeiten können soll. In einem nicht bearbeitbaren Feld kann man aber nicht Paste() ausführen. Meine Idee, zunächst in ein unsichtbares Feld zu pasten und das ganze dann in ein sichtbares Feld zu kopieren geht auch nicht weil man auch nicht in unsichtbare Felder pasten darf.  ???

Offline Keydins

  • Aktives Mitglied
  • ***
  • Beiträge: 163
  • Geschlecht: Männlich
Re: DocLink aus Zwischenspeicher einfügen
« Antwort #8 am: 08.04.15 - 12:38:45 »
Das funktioniert vermutlich nur mit Hilfe eines temporären Dokuments.

- Temporäres Dokument erzeugen / öffnen und per Paste den Link in ein RT Feld einfügen
- tempDoc speichern & schließen
- gewünschte Backendverarbeitung (Übertragung Link in Produktivdokument und Ergänzung des Datums)
- geöffnetes Produktivdokument schließen und neu öffnen, um die Änderungen im RT Feld sichtbar zu machen

- TempDoc ggf. löschen (sofern der Benutzer das darf)

Man kann für die TempDocs auch mit einem Profildokumenten pro User arbeiten, falls mehrere Benutzer gleichzeitig in der Anwendung arbeiten und die User nicht löschen dürfen. In dem Fall leert man am Ende der Verarbeitung einfach das RT Feld in dem jeweiligen TempDoc.

Gruß
Dirk
Gruß Dirk

Aktuelle Notesumgebung
~800 BasicClients 9.0.1 FP9 SHF55
  10 FullClients 9.0.1 FP7 SHF143
    7 DominoServer 9.0.1 FP9 HF 139 / 64 Bit

Offline buzi

  • Aktives Mitglied
  • ***
  • Beiträge: 171
Re: DocLink aus Zwischenspeicher einfügen
« Antwort #9 am: 15.04.15 - 11:07:44 »
Ich habe jetzt eine Umgehung gefunden. Ich habe es in die Button-Logik per Lotus Script eingebaut. Das Problem ist jetzt der Schritt:

"geöffnetes Produktivdokument schließen und neu öffnen"

Denn meine Befehle

@Command([EditGotoField];"KontaktHidden");
@Command([EditPaste]);
@Command([FileSave]);
@Command([CloseWindow]);
@Command( [EditDocument])

Führen dazu, dass ins KontaktHidden Feld gepastet wird, das Doc geschlossen aber nicht wieder geöffnet mit folgender Meldung:

"Angegebener Befehl kann nicht ausgeführt werden".

Offline Keydins

  • Aktives Mitglied
  • ***
  • Beiträge: 163
  • Geschlecht: Männlich
Re: DocLink aus Zwischenspeicher einfügen
« Antwort #10 am: 20.04.15 - 09:39:40 »
Ich fürchte, dass musst du mit Hilfe von Script umsetzen. Dort kannst du dir das Dokument in einer Variablen merken, um es dann nach dem Schließen wieder öffnen zu können.

Gruß Dirk

Aktuelle Notesumgebung
~800 BasicClients 9.0.1 FP9 SHF55
  10 FullClients 9.0.1 FP7 SHF143
    7 DominoServer 9.0.1 FP9 HF 139 / 64 Bit

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz