NotesDocumentCollection.DeleteDocument

nayke

Well-known member
04.08.2010
310
0
#1
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 806
21
#3
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 дело говорит
 

Omh

Lotus team
04.07.2007
2 210
1
#5
Код:
doc.~$REF(0)
Мрачноватя конструкция
Не лучше ли Doc.GetItemValue("$REF")(0)?
 

hosm

* so what *
18.05.2009
2 442
6
#7
nayke Doc.ParentDocumentUNID - самое оно, родное для скрипта =)
:) Omh вчера я круче видела в коде: doc.~$~$HTMLHEAD=...
 

nvyush

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