Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: Alexis am 10.07.06 - 12:07:43

Titel: Fenster schließen im workspace
Beitrag von: Alexis am 10.07.06 - 12:07:43
Folgende Problematik:

Im PostOpen einer Maske analysiere ich einen DocLink, um aus dem verlinkten Dokument ein Attachment zu exportieren.
Das klappt so weit gut.

ABER: Beim "getDocumentByUNID" wird mir auch die Dokumentenmaske mit dem Attachment im Workspace geöffnet!

Genau dieses möchte ich vermeiden, weiss aber nicht wie.

Hat jemand einen Rat?

Alexis
Titel: Re: Fenster schließen im workspace
Beitrag von: ata am 10.07.06 - 12:10:16
... hast du einen Auszug aus deinem Code...

Toni
Titel: Re: Fenster schließen im workspace
Beitrag von: Thomas Schulte am 10.07.06 - 12:10:58
Zum öffnen musst du irgendwo noch ein wksp.editdocument drin haben. Sonst macht Script da nämlich gar nichts auf.
Titel: Re: Fenster schließen im workspace
Beitrag von: koehlerbv am 10.07.06 - 12:11:53
GetDocumentByUNID ist eine Methode der NotesDocument class, also Backend, ergo wird DADURCH auch nichts im FrontEnd passieren.

Ich schliesse mich daher Toni an.

Bernhard
Titel: Re: Fenster schließen im workspace
Beitrag von: Alexis am 10.07.06 - 12:18:41
Hallo,

hier mein Code:
Code
Sub Postopen(Source As Notesuidocument)
	Dim session As New NotesSession
	Dim rti As NotesRichTextItem
	Dim rtnav As NotesRichTextNavigator
	Dim rtlink As NotesRichTextDocLink
	Dim db As NotesDatabase
	Dim collection As NotesDocumentCollection
	Dim doc As NotesDocument
	
	Set doc = source.Document
	If doc.IsNewNote Or source.EditMode Then Exit Sub
	
	Set rti = doc.GetFirstItem("Link")
	Set rtnav = rti.CreateNavigator
	
	If Not rtnav.FindFirstElement(RTELEM_TYPE_DOCLINK) Then
		Messagebox "No doclinks in Link item",, "No doclinks"
	Else
		Set rtlink = rtnav.GetElement
	End If
	
	Call doc.Save(False,False)
	Dim doc2 As NotesDocument
	Dim db2 As New NotesDatabase( "", "" )
	If Not db2.OpenByReplicaID( "ServerName", rtlink.DbReplicaID ) Then Messagebox "Unable to open database" 
	
	Set doc2 = db2.getDocumentByUNID(rtlink.DocUNID)
	Set rtitem = doc2.GetFirstItem( "Body_1" )
	If rtitem Is Nothing Then 
		Messagebox "No attachment available"
	Else 
		Dim file As String
		Forall all In rtitem.EmbeddedObjects
			If ( all.Type = EMBED_ATTACHMENT ) Then
				file = Join(Split("c:\" & all.Name, " "), "")
				Call all.ExtractFile (File)		 		 		 		 
				taskid = Shell("cmd.exe /c start " + file , 0)
			End If		 
		End Forall
	End If
	
End Sub

Alexis
Titel: Re: Fenster schließen im workspace
Beitrag von: Thomas Schulte am 10.07.06 - 12:43:27
Das was du schilderst und der Code den du da hast passen nicht zusammen. Bist du das Teil mal mit dem Debugger durchgegangen?
Titel: Re: Fenster schließen im workspace
Beitrag von: Mandalor am 10.07.06 - 13:07:58
hat die Maske die Eigenschaft "1. Doclink öffnen"?
Titel: Re: Fenster schließen im workspace
Beitrag von: ata am 10.07.06 - 13:08:42
... am Anfang hast du die Verzweigung, ob es sich um ein neues Dokument handelt, oder man bereits im Edit-Modus ist - kann es sein, daß du dich bereits im Edit-Mode befindest? Ich schliße mich Thomas an - was sagt der Debugger - ausserdem wäre eventuell das QueryOpen der bessere Platz...

Toni
Titel: Re: Fenster schließen im workspace
Beitrag von: Alexis am 10.07.06 - 13:35:10
Hallo,

mag sein, dass ich mich nicht präzise genug ausgedrückt habe, aber die Beschreibung und der Code gehören schon zusammen. Meine Aussage bezüglich "getDocumentByUNID" ist jedoch falsch.

Vielleicht ausführlicher, denn das Problem möchte ich schon gelöst haben:

Dokument 1 enthält ein RT-Feld mit einem Link zu einem Dokument einer 2. Datenbank. Dieses Dokument 2 enthält ein Attachment, dass ich direkt öffnen möchte, so als wenn ich in Dokument 1 im RT-Feld ein Attachment per "Launch First Attachment" öffne.

Dokument 1 wird geöffnet mit "First Document Link" (bewirkt das Öffnen der Maske des Zieldokuments 2, was ich eigentlich gar nicht will  >:D).

Im PostOpen der Maske 1 wird der vorstehende Code ausgeführt, was ja auch klappt.

Bleibt die Frage, wie kann das Fenster mit der Maske 2 schließen, denn ein Eintrag Auto Launch = None öffnet ja leider die Maske von Dokument 1 ???

Alexis
Titel: Re: Fenster schließen im workspace
Beitrag von: Thomas Schulte am 10.07.06 - 13:45:41
Dann nimm doch den Autostart einfach raus. Damit solltest du kein zweites Fenster mehr aufbekommen und das Thema ist vom Tisch, weil dann nur noch das erste Dokument geöffnet wird..

Entweder stehst du jetzt auf dem Schlauch oder ich.
Titel: Re: Fenster schließen im workspace
Beitrag von: Alexis am 10.07.06 - 13:57:58
Hallo Thomas,

Schlauch hin, Schlauch her.

Der Eintrag Auto Launch = None bewirkt doch das Öffnen der Maske von Dokument 1, was ich natürlich auch nicht will. Ich möchte doch nur dass das Attachment 2 gestartet wird, Dokument 1 ist nur die Brücke zweck Adressierung.

Zitat
Dann nimm doch den Autostart einfach raus

Wie denn, wenn nicht über den zitierten Maskeneintrag  :-:.

Alexis Schlauch
Titel: Re: Fenster schließen im workspace
Beitrag von: Thomas Schulte am 10.07.06 - 15:03:43
Verzeihung aber irgendwie raff ich das konzeptionell nicht.

Du bist hier doch ohnehin schon im ersten bereits offenen Dokument:
Code
Sub Postopen(Source As Notesuidocument)
und du frägst hier
Code
	Set doc = source.Document
	If doc.IsNewNote Or source.EditMode Then Exit Sub
doch genau dieses Dokument das du nach deiner letzten Aussage eigentlich gar nicht öffnen willst ab.

Auto Launch = None bewirkt nur das nichts was in dem Dokument das du gerade öffnest steht automatisch irgendwas anderes (Maske Nr.2) öffnet. Du öffnest deine Maske Nr. 1 aber gerade also muss die auch angezeigt werden.
Was du jetzt tun kannst ist, am Ende des PostOpen ein source.close(true) einzubauen damit geht das Dokument halt sofort wieder zu. Ich frage mich allerdings was da für ein Konzeption dahinter steht und ob man das nicht vielleicht auch anders lösen könnte.
Titel: Re: Fenster schließen im workspace
Beitrag von: Alexis am 10.07.06 - 15:53:22
Hallo Thomas, hallo Forum

Danke für Dein/Euer Bemühen, vielleicht ist tatsächlich ein anderer Ansatz zu suchen.

Leider komme ich erst morgen dazu, die Zielsetzung deutlich zu machen.

Alexis
Titel: Re: Fenster schließen im workspace
Beitrag von: LN4ever am 10.07.06 - 22:10:05
Was oben schon gesagt wurde:

POSTOPEN ist der falsche Platz für deinen Code.
Mach ihn in QUERYOPEN, häng unten ein Continue=FALSE dran und laß das doc.Save weg (das macht doch keinen Sinn). Dann wird auch nix geöffnet - außer deinem Anhang.
Titel: Re: Fenster schließen im workspace
Beitrag von: Alexis am 11.07.06 - 08:09:28
Bingo,

so einfach kann's sein.

Vielen Dank LN4ever

Alexis