Das Notes Forum

Domino 9 und frühere Versionen => ND9: Entwicklung => Thema gestartet von: chock am 22.07.15 - 13:42:46

Titel: Neues Dokument über Button erstellen
Beitrag von: chock am 22.07.15 - 13:42:46
Hallo Forum,

wir haben die ganze Zeit ein neues Dokument über die Formel @Command([Compose]; "Maske") erstellt. In dieser Maske werden bestimmte Postopen Events ausgeführt. Funktioniert auch alles ohne Probleme.
Nun soll zusätzlich ein Word-Dokument wärend des erstellens eines neuen Dokumentes in Maske eingebunden werden.
Eine entsprechende Formel habe ich in den Button eingefügt, die auch die gewünschte Funktion erfüllt.
Das Problem ist nun, das neu erstellte Dokument führt die PostopenEvents nicht mehr aus. Woran könnte das liegen?
Danke.

Formel Butten für neues Dokument.

Sub Click(Source As Button)
   Dim s As New NotesSession
   Dim ws As New NotesUIWorkspace
   Dim db As NotesDatabase
   Dim uidoc As NotesUIDocument
   Dim doc As NotesDocument
   Set db = s.CurrentDatabase
   Set doc = New NotesDocument(db)
   doc.Form = "Maske"
   Set uidoc = ws.CurrentDocument
   Set rtitem = New NotesRichTextItem( doc, "RT_Feld" )
   Set object = rtitem.EmbedObject( EMBED_ATTACHMENT, "", "c:\test.dotx")
   Set uidoc = ws.EditDocument(True, doc)   \\K
   Call uidoc.GotoField( "Description" )
   'Call uidoc.Refresh
End Sub
Titel: Re: Neues Dokument über Button erstellen
Beitrag von: Klafu am 22.07.15 - 14:17:29
Hast du mal geguckt, was der Debugger dazu sagt?

Chris
Titel: Re: Neues Dokument über Button erstellen
Beitrag von: chock am 22.07.15 - 14:33:35
Hast du mal geguckt, was der Debugger dazu sagt?

Chris

Hallo,

der Debugger sagt nichts, man sieht nur das Script von dem Button. Dannach ist sofort die Maske da.
Titel: Re: Neues Dokument über Button erstellen
Beitrag von: Peter Klett am 22.07.15 - 14:41:05
Sub Click(Source As Button)
   Dim s As New NotesSession
   Dim ws As New NotesUIWorkspace
   Dim db As NotesDatabase
   Dim uidoc As NotesUIDocument
   Dim doc As NotesDocument
   Set db = s.CurrentDatabase
   Set doc = New NotesDocument(db)
   doc.Form = "Maske"
   Set uidoc = ws.CurrentDocument
   Set rtitem = New NotesRichTextItem( doc, "RT_Feld" )
   Set object = rtitem.EmbedObject( EMBED_ATTACHMENT, "", "c:\test.dotx")
   Set uidoc = ws.EditDocument(True, doc)   \\K
   Call uidoc.GotoField( "Description" )
   'Call uidoc.Refresh
End Sub

Wie sehen die PostOpen-Scripte aus, werden dort die Aktionen nur durchgeführt, wenn das Dokument neu ist?

Ein Compose erstellt ein neues Dokument, ein ws.EditDocument öffnet ein bereits bestehendes, das für Notes nicht mehr als neues Dokument erkannt wird (auch, wenn es einen Bruchteil einer Sekunde vorher erzeugt wurde)
Titel: Re: Neues Dokument über Button erstellen
Beitrag von: chock am 22.07.15 - 15:01:27
Sub Click(Source As Button)
   Dim s As New NotesSession
   Dim ws As New NotesUIWorkspace
   Dim db As NotesDatabase
   Dim uidoc As NotesUIDocument
   Dim doc As NotesDocument
   Set db = s.CurrentDatabase
   Set doc = New NotesDocument(db)
   doc.Form = "Maske"
   Set uidoc = ws.CurrentDocument
   Set rtitem = New NotesRichTextItem( doc, "RT_Feld" )
   Set object = rtitem.EmbedObject( EMBED_ATTACHMENT, "", "c:\test.dotx")
   Set uidoc = ws.EditDocument(True, doc)   \\K
   Call uidoc.GotoField( "Description" )
   'Call uidoc.Refresh
End Sub

Wie sehen die PostOpen-Scripte aus, werden dort die Aktionen nur durchgeführt, wenn das Dokument neu ist?

Ein Compose erstellt ein neues Dokument, ein ws.EditDocument öffnet ein bereits bestehendes, das für Notes nicht mehr als neues Dokument erkannt wird (auch, wenn es einen Bruchteil einer Sekunde vorher erzeugt wurde)

Hallo,

ja, es sind viele Aktionen die nur bei einem neuen Dokument ausgeführt werden.
Dann ist genau dort das Problem, gibt es eine alternative zu ws.EditDocument?

Gruß

Titel: Re: Neues Dokument über Button erstellen
Beitrag von: Peter Klett am 22.07.15 - 15:23:18
Eine saubere Alternative gibt es m.E. nicht. Du könntest mit Compose das Dokument erstellen, musst dann aber den Dateianhang in das geöffnete Dokument anhängen, was immer hampelig ist. Besser ist da auf jeden Fall die von Dir gewählte Methode.

Ich würde ein Feld in die Maske aufnehmen, das z.B. "IstNeuesDokument" heißt, berechnet beim Anlegen, Wert "1". Im QuerySave setzt Du den Wert auf "" oder "0".

Im PostOpen fragst Du dann nicht die Original-Notes-Eigenschaft ab, sondern stattdessen das neue Feld.

If doc.IstNeuesDokument (0) = "1" Then

Wenn Du das so umsetzt, darfst Du nicht vergessen, in sämtliche bestehende Dokumente den Wert für ein altes Dokument zu setzen (also "" oder "0").
Titel: Re: Neues Dokument über Button erstellen
Beitrag von: chock am 23.07.15 - 14:51:32
Eine saubere Alternative gibt es m.E. nicht. Du könntest mit Compose das Dokument erstellen, musst dann aber den Dateianhang in das geöffnete Dokument anhängen, was immer hampelig ist. Besser ist da auf jeden Fall die von Dir gewählte Methode.

Ich würde ein Feld in die Maske aufnehmen, das z.B. "IstNeuesDokument" heißt, berechnet beim Anlegen, Wert "1". Im QuerySave setzt Du den Wert auf "" oder "0".

Im PostOpen fragst Du dann nicht die Original-Notes-Eigenschaft ab, sondern stattdessen das neue Feld.

If doc.IstNeuesDokument (0) = "1" Then

Wenn Du das so umsetzt, darfst Du nicht vergessen, in sämtliche bestehende Dokumente den Wert für ein altes Dokument zu setzen (also "" oder "0").

Hallo,

danke für den Tipp, ich habe die Maske entsprechend umgebaut und die vorhandenen Dokumente angepasst.

Gruß
Chris