• 🔥 Бесплатный курс от Академии Кодебай: «Анализ защищенности веб-приложений»

    🛡 Научитесь находить и использовать уязвимости веб-приложений.
    🧠 Изучите SQLi, XSS, CSRF, IDOR и другие типовые атаки на практике.
    🧪 Погрузитесь в реальные лаборатории и взломайте свой первый сайт!
    🚀 Подходит новичкам — никаких сложных предварительных знаний не требуется.

    Доступ открыт прямо сейчас Записаться бесплатно

Аналог @dblookup в Lotusscript

  • Автор темы Автор темы Guest
  • Дата начала Дата начала

Код:
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
 
Денис Кириченко
А в 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
 
Денис Кириченко
А в OnChange ты убрал код?
Кстати, в вместо uidoc используй Source.

Убрал в 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

Зашибись Omh, все работает, very, very Big ThAnKs :)
 
Денис Кириченко
Посмотри Input validation у поля "TaxPay"
 
Поле 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" )
условие - Is Nothing считает наоборот ?!?!? :(
 
При декларации переменная объекта равна Nothing.
 
А я проблемы не понял, если честно.
А в ответ так... "в лужу пёрднул"
 
Ну так, вот переменная view - пустая (сужу по отладчику smile.gif и когда проходит условие If view Is Nothing, то переменная view не сетится. Как я предпологаю if расценивает переменную view не пустой, хотя та пустая sad.gif
Метод db.GetView ("ContragentsForContracts" ) мог вернуть Nothing.
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab