Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе
Давай код.
Sub Queryrecalc(Source As Notesuidocument, Continue As Variant)
Dim session As NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim workspace As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim cDoc As NotesDocument
Dim view As NotesView
Set uidoc = workspace.CurrentDocument
Set cDoc= uidoc.Document
Set session = New NotesSession
Set db = session.GetDatabase("Elephant/ICTP","Work/Docs/performing.nsf")
Set view = db.GetView ("ContragentsForContracts" )
Set doc = view.GetDocumentByKey(uidoc.FieldGetText("ContractParties"))
Call uidoc.FieldSetText("TaxPay", doc.GetItemValue ("ContractPartyActive")(0))
' Call uidoc.Save
' Call cDoc.Save (True, False,False)
' Call uidoc.Refresh
End Sub
Sub Queryrecalc(Source As Notesuidocument, Continue As Variant)
On Error Goto Errh
Dim Doc as NotesDocument
Set Doc = Source.Document
if Doc is Nothing then Exit Sub
Dim session As new NotesSession
Static db As NotesDatabase
Static view As NotesView
if db is Nothing then Set db = session.GetDatabase("Elephant/ICTP","Work/Docs/performing.nsf")
if view is Nothing then Set view = db.GetView ("ContragentsForContracts" )
Dim OtherDoc as NotesDocument
Set OtherDoc = view.GetDocumentByKey(Doc.GetItemValue("ContractParties")(0), True)
if Not OtherDoc is Nothing then
Call Doc.ReplaceItemValue("TaxPay", OtherDoc.GetItemValue("ContractPartyActive")(0))
end if
Exit Sub
errh:
Msgbox Error & | in line | & Erl(), 64, |Lotus Notes (| & Lsi_info(2) & |)|
Exit Sub
End Sub
Денис Кириченко
А в OnChange ты убрал код?
Кстати, в вместо uidoc используй Source.
Денис Кириченко
Я бы сделал view statsic'ом
И сетил бы значение через background документ.
Примерно так:
Код:Sub Queryrecalc(Source As Notesuidocument, Continue As Variant) On Error Goto Errh Dim Doc as NotesDocument Set Doc = Source.Document if Doc is Nothing then Exit Sub Dim session As new NotesSession Static db As NotesDatabase Static view As NotesView if db is Nothing then Set db = session.GetDatabase("Elephant/ICTP","Work/Docs/performing.nsf") if view is Nothing then Set view = db.GetView ("ContragentsForContracts" ) Dim OtherDoc as NotesDocument Set OtherDoc = view.GetDocumentByKey(Doc.GetItemValue("ContractParties")(0), True) if Not OtherDoc is Nothing then Call Doc.ReplaceItemValue("TaxPay", OtherDoc.GetItemValue("ContractPartyActive")(0)) end if Exit Sub errh: Msgbox Error & | in line | & Erl(), 64, |Lotus Notes (| & Lsi_info(2) & |)| Exit Sub End Sub
Поле TaxPay какого типа? Вычисляемое? Если да, то какая формула?
Денис Кириченко
Ты в бэкграунд документ пробовал писать?
Я тебе об этом уже 2 дня говорю...
Переменная view пуста, а при этомИсправляйся.
Потом отпиши о результатах
Static view As NotesView
If db Is Nothing Then Set db = session.GetDatabase("Elephant/ICTP","Work/Docs/performing.nsf")
If view Is Nothing Then Set view = db.GetView ("ContragentsForContracts" )
ты хочешь сказать что if отрабатывает правильно, а отладчик врет или я не совсем догоняюПри декларации переменная объекта равна Nothing.
Sorry, сам виноват, View удалилА я проблемы не понял, если честно.
А в ответ так... "в лужу пёрднул"
Метод db.GetView ("ContragentsForContracts" ) мог вернуть Nothing.Ну так, вот переменная view - пустая (сужу по отладчику smile.gif и когда проходит условие If view Is Nothing, то переменная view не сетится. Как я предпологаю if расценивает переменную view не пустой, хотя та пустая sad.gif
Обучение наступательной кибербезопасности в игровой форме. Начать игру!