Autor Thema: Attachment im Frontend hinzufügen  (Gelesen 2973 mal)

Offline Troubleshooter

  • Junior Mitglied
  • **
  • Beiträge: 69
  • Geschlecht: Männlich
Attachment im Frontend hinzufügen
« am: 13.02.14 - 14:50:46 »
Liebe Community,

parallel zu so manch anderen Problemen versuche ich, ein Attachment im Frontend einem RT-Feld hinzuzufügen. Problem hierbei ist allerdings, dass das Dokument letztendlich nicht gespeichert sein soll.

Das Szenario sieht wie folgt aus:

Über ein .Net-Programm wird eine NotesSession instanziert:
Code
Session = Activator.CreateInstance(Type.GetTypeFromProgID("Notes.NotesSession"))

Dann wird über eine Schaltfläche im Programm ein neues Dokument erstellt:

Code
Database = Session.GetDatabase(ServerName, DatabaseName)

Dim Document As Object ' NotesDocument
Document = Database.CreateDocument
Document.ReplaceItemValue("Form", "MainForm")
Document.Save(True, False)

Nachdem das Dokument erstellt wurde, wird ein Agent ausgeführt, der Berechnungen im Dokument durchführt und dieses letztendlich auch im Bearbeitungsmodus öffnet:

Code
Dim Agent As Object ' NotesAgent
Agent = Database.GetAgent("(ProcessDocument)")
Agent.Run(Document.NoteId)

-- Agent --
Code
Sub Initialize
	Dim Session As NotesSession
	Dim CurrentDatabase As NotesDatabase
	Dim Document As NotesDocument
	Dim UIDocument As NotesUIDocument
	Dim UIWorkspace As NotesUIWorkspace
	Dim Agent As NotesAgent
 
	Set Session = New NotesSession
	Set UIWorkspace = New NotesUIWorkspace
	Set CurrentDatabase = Session.CurrentDatabase
	Set Agent = Session.CurrentAgent
	
	Set Document = CurrentDatabase.GetDocumentById(Agent.ParameterDocID)
	
	If Not Document Is Nothing Then
		Set UIDocument = UIWorkspace.EditDocument(True, Document)
		
		' UIDocument.FieldSetText "", ""
		' ...
		
		Document.Removepermanently True
	End If
End Sub

Wie man sieht, wird das Backend-Dokument zum Schluss gelöscht. Hat den Sinn, dass, wenn der Frontend-User das UI-Doc ohne zu speichern schließt, keine Überbleibsel davon mehr zu sehen sind.
Soweit sogut. Nun müssen jedoch noch Anhänge eingefügt werden.

Wenn ich die Anhänge im Backend-Dokument speichere, sind sie natürlich nach dem Löschen des Backend-Dokuments nicht mehr verfügbar.
Nur die Attachments programmatisch direkt ins Frontend zu laden, schaffe ich nicht.
Ich habs in meiner Naivität mit Evaluate und @Command probiert, danach mit einem eigenen Formel-Agent:

Code
REM { @Command([EditDocument]; 1); };
@Command([EditGotoField]; "Anhaenge_RT");
@Command([EditInsertFileAttachment]; "C:\Test.txt") 

Es will und will nicht  :(
Domino: Notes 9.0.1

Driri

  • Gast
Re: Attachment im Frontend hinzufügen
« Antwort #1 am: 13.02.14 - 16:02:06 »
Hast Du es schon mit NotesUIDocument.Import versucht ? Der Cursor muß dafür allerdings vorher in das Richtextfeld gesetzt werden.

Offline Troubleshooter

  • Junior Mitglied
  • **
  • Beiträge: 69
  • Geschlecht: Männlich
Re: Attachment im Frontend hinzufügen
« Antwort #2 am: 13.02.14 - 16:24:11 »
Nein, noch nicht, danke für den Tipp!

Der Code sieht nun im Agent so aus:

UIDocument.Gotofield "Anhaenge_RT"
UIDocument.Import "Microsoft Word", "C:\Test.docx"

Jedoch passiert nichts (Cursor wird aber korrekterweise ins Feld gesetzt). Bzw. sehe ich nun ein Whitespace-Zeichen in besagtem Feld.
Wenn ich das richtig verstanden habe, müsste ich bei dieses Methode dann aber jede Dateiendung abfragen und den Filter entsprechend setzen (und bei PDF natürlich vorher noch einen neuen Eintrag in der notes.ini erstellen)?

Update 17.02.2014 16:20 Uhr:
Ich habs nun so gelöst, wie in diesem Beitrag beschrieben: http://atnotes.de/index.php/topic,54333.msg350715.html
Dh. temporäres Doc erstellen, dort speichern, öffnen, kopieren, temp. Doc wieder schließen und löschen.
Ist wieder mal gepfuscht, aber was anderes lässt Notes ja nicht zu >:(

Import war doch der falsche Weg, da ja tatsächlich versucht wurde, die Datei einzubetten, was nicht gewünscht war bzw. einfach die falsche Funktion für diese Aufgabe
« Letzte Änderung: 17.02.14 - 16:21:06 von Troubleshooter »
Domino: Notes 9.0.1

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz