в ф-ции вы открыли uidoc
Код:
If docProcessDef.ProcessAutoClaimDP(0) <> "" Then
Call workspace.EditDocument(True, docMain)
Else
Call workspace.EditDocument(False, docMain)
End If
но не возвратили его в осноной код, а пытаетесь достучаться до него через wks.CurrentDocument, что является уточённым извращением
, потому как этот контекст моет указывать на др. uidoc
а потому надо
Код:
If docProcessDef.ProcessAutoClaimDP(0) <> "" Then
Set DPWA_InitiateProcess=workspace.EditDocument(True, docMain)
Else
Set DPWA_InitiateProcess=workspace.EditDocument(False, docMain)
End If
предварительно сменив тип возврата Function DPWA_InitiateProcess(dbApplication As NotesDatabase, ProcessID As String, docContent As NotesDocument, SourceList As Variant, TargetList As Variant, ErrString As String) As Variant
либо жёстко затипизировав Function DPWA_InitiateProcess(dbApplication As NotesDatabase, ProcessID As String, docContent As NotesDocument, SourceList As Variant, TargetList As Variant, ErrString As String) As NotesUIDocument
и исправив по коду несоответствие
ИБО: возвращать 1 или -1 - это БСК, в данной ф-ции, никакого смысла в возврате целого нет (да и быть не может) надо при ошибке - Nothing, при нормальном завершении - д.б. NotesUIDocument
Добавлено: и далее по коду сделать вместо:
Код:
v = Evaluate({"Нов док":""})
Call DPWA_InitiateProcess(dbApplication, v(0), Nothing, "", "", ErrString)
Dim docN As NotesUIDocument
Set docN=workspace.CurrentDocument
Call docN.FieldSetText({Field1},docOld.Document.GetItemValue({Field2})(0))
надо:
Код:
v = Evaluate({"Нов док":""})
Dim docN As NotesUIDocument
Set docN=DPWA_InitiateProcess(dbApplication, v(0), Nothing, "", "", ErrString)
Call docN.FieldSetText({Field1},docOld.Document.GetItemValue({Field2})(0))
Добавлено: PPS: фокус с Evaluate я не понял
- зачем так получать массив, когда можно Split ({Text},{})