Domino 6.5 - закрыть документ во фрейме - закрывает приложение - PullRequest
1 голос
/ 10 июня 2009

Я работаю над клиентским приложением Domino, которое открывает документы во фрейме.

Когда я нажимаю кнопку сохранения, он выполняет некоторую проверку скрипта лотоса, добавляет в поле истории и т. Д., А затем, наконец, сохраняет:

Дополнительный щелчок (кнопка «Источник») Dim validate1 As Validation Dim ws As New NotesUIworkspace Dim s As New NotesSession
Dim uidoc As NotesUIDocument Dim ApproverNames As String Dim workflow1 As Workflow
Dim name1 As String Dim names1 As String Dim item1 As NotesItem Dim history1 As History

Set uidoc = ws.CurrentDocument
Call uidoc.refresh  

'===============================================
'Validation
'===============================================
Set validate1 = New Validation()

Call validate1.checkCustomer(uidoc.FieldGetText("Customer"))
Call validate1.checkEndUser(uidoc.FieldGetText("EndUser"))
Call validate1.checkShortProjectDescription(uidoc.FieldGetText("ShortProjectDescription"))
Call validate1.checkProjectName(uidoc.FieldGetText("ProjectName"))
Call validate1.checkProjectLocation(uidoc.FieldGetText("ProjectLocation"))
Call validate1.checkOperationCenter(uidoc.FieldGetText("BusinessUnit"))
Call validate1.checkSalesCenter(uidoc.FieldGetText("SalesCenter"))
Call validate1.checkMarketSegment(uidoc.FieldGetText("MarketSegment"))  
Call validate1.checkSAPDate(uidoc.FieldGetText("SAPDate"))
Call validate1.checkRevision(uidoc.FieldGetText("Revision"))
Call validate1.checkValidityDate(uidoc.FieldGetText("ValidityDate"))
Call validate1.checkDateApproval(uidoc.FieldGetText("DateApproval"))
Call validate1.checkCurrencyUSD(uidoc.FieldGetText("CurrencyUSD"))
Call validate1.checkMargin(uidoc.FieldGetText("Margin"))

If validate1.displayErrorMessages() = 0 Then
'========================================================================
    Call uidoc.FieldSetText("WhoHasApproved","")
    Call uidoc.FieldSetText("ApproversNotified","")     

    Call uidoc.FieldSetText("SubmitDate",Cstr(Now))
    Call uidoc.FieldSetText("Status","In Process")

    'Add calls to workflow here....
    Set workflow1 = New workflow("SAPFCD")

    'Update History Field - Submitted for Processing by
    Set history1 = New History(uidoc.Document)
    Call history1.addTo("Submitted for Processing", uidoc.FieldGetText("CreatedBy"))    
    Set item1 = uidoc.Document.ReplaceItemValue("History" , history1.getDescription())

    'Set ApproverList
    names1 = workflow1.setApproverList(uidoc)
    Call uidoc.FieldSetText("ApproverList",names1)

    uidoc.Refresh

    name1 = workflow1.setNextApprover(uidoc)        
    Call uidoc.FieldSetText("NextApprover", name1)
'========================================================================   

    'Add calls to workflow here....
    Call uidoc.FieldSetText("Status","1st Peer")

    uidoc.Save
    uidoc.Close(True)
    uidoc.Close(True)
End If

End Sub

, а затем приступает к закрытию всей базы данных и возвращает пользователя в рабочую область.

Я хочу сохранить документ, а затем вернуть пользователя на указанную страницу в наборе кадров.

Я попытался добавить подобный код в событие QuerySave, но не работает:

Sub Queryclose (Источник как примечаниедокумент, продолжение как вариант) Dim ws As New NotesUIworkspace
ws.OpenFrameSet ( "MainFrame") ws.SetTargetFrame ( "Main")
ws.OpenPage ( "Saved") End Sub

Любые идеи о том, как сохранить / закрыть документ пользовательского интерфейса в наборе фреймов без закрытия всей базы данных.

Derek

Ответы [ 2 ]

1 голос
/ 11 июня 2009

Есть ли какая-то конкретная причина, по которой у вас открыт документ во фрейме?
Обычно у вас есть набор фреймов для контура и вида, а документы открываются на их собственной вкладке / в окне. Таким образом, когда ваш код запускается, он только закрывает документ.

** Обновление Сделал еще несколько тестов, и вы можете вставить это после uidoc.save и удалить uidoc.close

Call ws.SetTargetFrame("your frame name here") 
Call ws.ComposeDocument("","","your form name here",,,False)

Я забыл упомянуть, что при выходе из приложения вы должны установить целевой кадр на "", если у вас не возникнет ошибка, когда другие приложения попытаются открыть набор фреймов.

0 голосов
/ 11 июня 2009

Это должно работать нормально, если вы включаете только одно событие uidoc.close вместо двух, которые вы показываете.

Также убедитесь, что ни одно из событий Form PostSave / PostClose или QuerySave / QueryClose не вызывает событие close.

...