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

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

Guest

#1
Как можно пробижаться по всем документам с запуском процедуры Queryrecalc?
 

Akupaka

А че я?.. О.о
04.10.2007
3 360
1
#2
содержимое процедуры в библиотеку, библиотеку в Queryrecalc формы и в какой-то агент... и побежал :)
 
G

Guest

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

K-Fire

#4
QueryCalc это событие формы. Вот код который повешан на это событие переносишь в отдельную функцию какой-нить библиотеки. И агентом вызываешь эту функцию для каждого документа из множества.
 
G

Guest

#5
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"
 
K

K-Fire

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


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

Guest

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


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

Akupaka

А че я?.. О.о
04.10.2007
3 360
1
#9
я бы еще порекомендовал рассмотреть понятия процедурального написания программ, и не лепить во все места куски кода, а писать правильные процедуры, которые можно вызвать из нескольких мест!
что это дает? это позволит исправлять/изменять код только в одном месте программы, а не в N-местах...

Только вот врятли получится то, что надо
почему? я так понял что там только ссылка добавляется в РТ-поле
 

Kee_Keekkenen

Well-known member
05.09.2006
639
4
#10
судя по задаче лучше вынести код в процедуру библиотеки, но не а агент