NotesDocumentCollection.DeleteDocument

Тема в разделе "Lotus - Программирование", создана пользователем nayke, 1 дек 2010.

  1. nayke

    nayke Well-Known Member

    Регистрация:
    4 авг 2010
    Сообщения:
    310
    Симпатии:
    0
    DeleteCol объявлена в Declare агента. пробовал объявлять в секции inicialize и передавать в процедуру

    Sub DeleteFromCol( Col As NotesDocumentCollection, ADoc As NotesDocument)

    Код (Text):
    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, т.е. в коллекции есть полюбому
     
  2. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Используй notesDocumentCollection.GetDocument.
     
  3. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    nayke
    Ну так правильно... ты берешь документ из одной коллекции, а удаляешь в другой :)
    Не правильно это
    В Sub DeleteFromCol(ADoc As NotesDocument) надо искать этот документ и удалять. Medevic дело говорит
     
  4. nayke

    nayke Well-Known Member

    Регистрация:
    4 авг 2010
    Сообщения:
    310
    Симпатии:
    0
    Действительно так и оказалось.. спасибо за помощь
     
  5. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Код (LotusScript):
    doc.~$REF(0)
    Мрачноватя конструкция
    Не лучше ли Doc.GetItemValue("$REF")(0)?
     
  6. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Или Doc.ParentDocumentUNID
     
  7. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    nayke Doc.ParentDocumentUNID - самое оно, родное для скрипта =)
    :) Omh вчера я круче видела в коде: doc.~$~$HTMLHEAD=...
     
  8. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    И, кстати, работает заметно быстрее. В тестовом агенте на 1000 итераций было затрачено для Doc.GetItemValue("$REF")(0) — 31 мс, для Doc.ParentDocumentUNID — 16 мс (по данным Profile Results).
     
  9. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    это всё последствия советов по юзанию $REF :)
    помните как советовали в собаках юзать (вместо штатного) :(
     
Загрузка...
Похожие Темы - NotesDocumentCollection DeleteDocument
  1. Akupaka
    Ответов:
    11
    Просмотров:
    4.300

Поделиться этой страницей