• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

NotesDocumentCollection.DeleteDocument

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

nayke

DeleteCol объявлена в Declare агента. пробовал объявлять в секции inicialize и передавать в процедуру

Sub DeleteFromCol( Col As NotesDocumentCollection, ADoc As NotesDocument)

Код:
Set DeleteCol=CurrentDB.Search({((Form="A")|(Form="B"))},Nothing,0
Set NoDeleteCol=CurrentDB.Search(Filter,Nothing,0)
'Filter - запрос возвращающий документы формы С(ответа на А) либо формы В

While NoDeleteCol.Count>0
Set doc=NoDeleteCol.GetFirstDocument
Call NoDeleteCol.DeleteDocument(doc)
If doc.form(0) = "C" Then Set doc=CurrentDB.GetDocumentByUNID(doc.~$REF(0))
Call DeleteFromCol(doc)
Wend

Sub DeleteFromCol(ADoc As NotesDocument)
On Error Goto lbExit
Call DeleteCol.DeleteDocument(ADoc)
Exit Sub
lbExit:
Exit Sub
End Sub

в итоге не один документ из коллекции не удаляется все с ошибкой - документ не является документом из данной коллекции. Как обойти идеи есть просто не хочется нагромождать может так кто что подскажет..
p.s. doc, передаваемый в DeleteFromCol имеет форму A или B и находится в CurrentDB, т.е. в коллекции есть полюбому
 

NickProstoNick

Статус как статус :)
Lotus Team
22.08.2008
1 851
27
BIT
0
nayke
Ну так правильно... ты берешь документ из одной коллекции, а удаляешь в другой :)
Не правильно это
Usage
The specified document must have originated in this collection. If the document does not exist in the collection, or if it was removed from the database by a RemoveAll operation, an error will be raised.
В Sub DeleteFromCol(ADoc As NotesDocument) надо искать этот документ и удалять. Medevic дело говорит
 
O

Omh

Код:
doc.~$REF(0)
Мрачноватя конструкция
Не лучше ли Doc.GetItemValue("$REF")(0)?
 
H

hosm

nayke Doc.ParentDocumentUNID - самое оно, родное для скрипта =)
:) Omh вчера я круче видела в коде: doc.~$~$HTMLHEAD=...
 
N

nvyush

nayke Doc.ParentDocumentUNID - самое оно, родное для скрипта =)
И, кстати, работает заметно быстрее. В тестовом агенте на 1000 итераций было затрачено для Doc.GetItemValue("$REF")(0) — 31 мс, для Doc.ParentDocumentUNID — 16 мс (по данным Profile Results).
 
Мы в соцсетях:

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