Queryrecalc по всем документам

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

Guest

Как можно пробижаться по всем документам с запуском процедуры Queryrecalc?
 
содержимое процедуры в библиотеку, библиотеку в Queryrecalc формы и в какой-то агент... и побежал :)
 
содержимое процедуры в библиотеку, библиотеку в Queryrecalc формы и в какой-то агент... и побежал :)

Содержимое какой процедуры в библиотеку? Прости че-то не догоняю. Для того что бы запустить Queryrecalc формы, надо создать агента. Вопрос что он должен делать что бы запустить Queryrecalc?
 
QueryCalc это событие формы. Вот код который повешан на это событие переносишь в отдельную функцию какой-нить библиотеки. И агентом вызываешь эту функцию для каждого документа из множества.
 
QueryCalc это событие формы. Вот код который повешан на это событие переносишь в отдельную функцию какой-нить библиотеки. И агентом вызываешь эту функцию для каждого документа из множества.

Могу ли я просто код QueryRecalc, вставить в агента:
Set Doc = Source.Document

Dim session As New NotesSession
Set session = New NotesSession
Set prodb = session.CurrentDatabase
Set proDoc = prodb.GetProfileDocument("SystemInformation")

PathToServer = proDoc.GetItemValue("PathToServerDbIS")(0)
PathToDB = proDoc.GetItemValue("PathToDbIS")(0)+proDoc.GetItemValue("NameOfDbIS")(0)

Set session = New NotesSession
If db Is Nothing Then Set db = session.GetDatabase(PathToServer, PathToDB)
If view Is Nothing Then Set view = db.GetView ("ContragentsForContracts" )

Dim Cworkspace As New NotesUIWorkspace

Set uidoc = Cworkspace.CurrentDocument
Set Cdoc = uidoc.Document
Set cLink = New NotesRichTextItem(Doc,"ContractPartiesLink")
Set OtherDoc = view.GetDocumentByKey(Doc.GetItemValue("ContractParties")(0), True)

If Not OtherDoc Is Nothing Then
Call Doc.ReplaceItemValue("ContractPartiesAccount", OtherDoc.GetItemValue("ContractPartyAccount")(0))
' Call CLink.AppendDocLink(doc,""+Doc.Subject(0),)
Call CLink.AppendText(" Уставные документы ")
Call CLink.AppendDocLink(OtherDoc,OtherDoc.Subject(0),)
End If

'Set the saveoptions so that the user is not prompted when the document closes.
cdoc.form = "Contract"
Cdoc.SaveOptions = "0"

Call Cdoc.Save (True, False,False)

DocUNID = Cdoc.UniversalID

'Close the document in the UI
Call uidoc.Close (True)

'Re-open the document in the UI
Set uidoc = CWorkspace.EditDocument(True, Cdoc)
Set CDocN= uidoc.Document

cdocN.saveOptions="1"
 
Ну естессно можешь, только текущий док получать не как Source.Document, а в цикле, и все остальные UI объекты выкинуть тоже.


Вопрос кстати характеризует глобальное непонимание что такое евенты, рекомендую покурить хелп поплотнее :)
 
Ну естессно можешь, только текущий док получать не как Source.Document, а в цикле, и все остальные UI объекты выкинуть тоже.


Вопрос кстати характеризует глобальное непонимание что такое евенты, рекомендую покурить хелп поплотнее :)

Thanks :)
 
я бы еще порекомендовал рассмотреть понятия процедурального написания программ, и не лепить во все места куски кода, а писать правильные процедуры, которые можно вызвать из нескольких мест!
что это дает? это позволит исправлять/изменять код только в одном месте программы, а не в N-местах...

Только вот врятли получится то, что надо
почему? я так понял что там только ссылка добавляется в РТ-поле
 
судя по задаче лучше вынести код в процедуру библиотеки, но не а агент
 
Мы в соцсетях:

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