Die Dokumente werden per Script erzeugt. Das klappt auch immer ohne Probleme. Anbei das Script, die weiteren Subroutinen und Klassen nab ich mir gespart.
Public Function fktNeuesDokument(nwuGUI As notesuiworkspace, ndbApp As notesdatabase, ndoSonderakt As notesdocument, Byval strForm As String, Byval strKarte As String, Byval strTenant As String, Byval strFIID As String, Byval strSubTyp As String, Byval strPraegezeile As String, Byval strSession As String, Byval strServer As String, Byval strDb As String, Byval intLogLevel As Integer, Byval intAnzZeilen As Integer) As Integer
'Funktion: Die Prozedur erzeugt ein neues Prozeßdokument für die übergebene Karte
'
'Argumente: nwuGUI; Objekt-Variable vom Typ 'notesuiworkspace', welche den Bezug auf den Workspace übergibt
' ndbApp; Objekt-Variable vom Typ ' notesdatabase', welche den Bezug auf die Anwendungsdatenbank übergibt
' ndbSonderakt; Objekt-Variable vom Typ ' notesdocument', welche den Bezug auf das Dokument der Sonderaktion
' übergibt
' strForm; String-Variable, welche den Namen der Maske übergibt
' strKarte; String-Variable, welche die Nummer der Karte übergibt
' strTenant; String-Variable, welche den Tenant der Karte übergibt
' strFIID; String-Variable, welche die System-FIID übergibt
' strSubTyp; String-Variable, welche den SubTyp der System-Fiid übergibt
' strPraegezeile; String-Variable, welche die Prägezeile der Karte übergibt
' strSession; String-Variable, welche den Namen der Session übergibt
' strServer; String-Variable, welche den Server auf dem die Datenbank mit den Transaktionsbeschreibungen
' liegt übergibt
' strDb; String-Variable, welche den Namen der Datenbank mit den Transaktionsbeschreibungen übergibt
' intLogLevel; Integer-Variable, welche die Ebene der Fehlerprotokollierung übergibt
' intAnzZeilen; Integer-variablen, welche die Anzahl der anzuzeigenden Service-Kommentare übergibt
'
'Rückgabe: Integer-Variable, welche angibt ob die Prozedur ohne Fehler abgelaufen ist (Wert = true)
' oder ob während des Ablaufs ein Fehler auftrat (Wert = false)
'
'Calls: fktSucheMetadaten [libAppTools]
' subLadeMetadaten [libAppTools]
' fktAusfuehrenZusatzAgenten
' subUebertragenInfos
' subSonderaktionsdatenLaden
'
'Variablendeklaration
'numerische Variablen
Dim intReturn As Integer
'Objekt-Variablen
Dim ndoMeta As notesdocument
Dim ndoDoc As notesdocument
Dim nduNew As notesuidocument
Dim objStammdaten As clsSemprisStammdaten
Dim objLog As clsLogWriter
'String-Variablen
Dim strMsgText As String
'Variant-Variablen
Dim vntValue As Variant
'Prozedur
intReturn = True
Set ndoMeta = fktSucheMetadaten(ndbApp, strFiid, strSubtyp)
If ndoMeta Is Nothing Then
strMsgText = "Es sind keine Metadaten für die FIID '"+strFIID+"' und den Subtyp '" + strSubtyp + "' im System vorhanden."
Messagebox strMsgText, mb_ok+ mb_iconstop, appname
intReturn = False
Else
nwuGUI.settargetframe ""
Set nduNew = nwuGUI.composedocument(ndbApp.server, ndbApp.FilePath, strForm)
Set ndoDoc = nduNew.document
ndoDoc.ComputeWithForm True, False
If Not ndoSonderakt Is Nothing Then
subSonderaktionsdatenLaden ndoDoc, ndoSonderakt
End If
subLadeMetadaten ndoDoc, ndoMeta
Set objLog = New clsLogWriter("Anwendungsfehler", False, True, True)
vntValue = ndoDoc.getitemValue("t_InfoZuordn")
subUebertragenInfos ndoDoc, ndbApp, strFIID, strSubTyp, vntValue, objLog, intLogLevel
ndoDoc.ReplaceItemValue "t_KartenNr", strKarte
ndoDoc.ReplaceItemValue "t_Tenant", strTenant
ndoDoc.ReplaceItemValue "t_Praegezeile", strPraegezeile
Set objStammdaten = New clsSemprisStammdaten(objLog, intLogLevel, strKarte, strTenant, ndoDoc, "t_TransaktStammd", "t_FeldZuordnung", strSession, strServer, strDb)
intReturn = objStammdaten.ReadData()
Set objStammdaten = Nothing
If intReturn = True Then
intReturn = fktAusfuehrenZusatzAgenten(ndbApp, ndoDoc, objLog)
If intReturn = True Then
vntValue = ndoDoc.getitemValue("t_MitteilAnzeigen")
If vntValue(0) = "1" Then
vntValue = ndoDoc.getitemvalue("t_Account")
intReturn = fktAnzeigenServComments(ndbApp, nwuGUI, objLog, intLogLevel, strSession, strServer, strDb, vntValue(0), intAnzZeilen)
End If
If intReturn = True Then
ndoDoc.computewithform True, False
nduNew.refresh True
nduNew.refreshhideformulas
vntValue = ndoDoc.getitemvalue("t_StartFeld")
If vntValue(0) <> "" Then
nduNew.gotofield(vntValue(0))
End If
ndoDoc.computewithform True, False
nduNew.refresh True
nduNew.refreshhideformulas
End If
End If
End If
Set objStammdaten = Nothing
objLog.FlushBufferToDoc
objLog.close True, True
Set objLog = Nothing
If intReturn = False Then
ndoDoc.Replaceitemvalue "SaveOptions", "0"
nduNew.Close
End If
End If
fktNeuesDokument = intReturn
End Function