• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

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

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

Guest

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

Akupaka

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

Guest

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

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

K-Fire

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

Guest

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

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


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

Guest

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


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

Thanks :)
 
A

Akupaka

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

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

Kee_Keekkenen

судя по задаче лучше вынести код в процедуру библиотеки, но не а агент
 
T

TIA

почему? я так понял что там только ссылка добавляется в РТ-поле
Просто предупреждение, т.к. мало того, что предложено. Начнётся с того, что документ обработается один, если вообще обработается.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!