исключить документ из коллекции

Тема в разделе "Lotus - Программирование", создана пользователем Kizarek86, 19 сен 2007.

  1. Kizarek86

    Kizarek86 Lotus team
    Lotus team

    Регистрация:
    20 июл 2007
    Сообщения:
    857
    Симпатии:
    5
    С такой проблемкой столкнулся.Как исключить из коллекции документов текущий(документ с которым работают на данный момент)?
     
  2. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    DeleteDocument method
    Call notesDocumentCollection.DeleteDocument( document )

    не забудте перед этим это текущего дока ( который будет удаляться ) взять следующий
     
  3. Kizarek86

    Kizarek86 Lotus team
    Lotus team

    Регистрация:
    20 июл 2007
    Сообщения:
    857
    Симпатии:
    5
    <!--QuoteBegin-Morpheus+19:09:2007, 11:37 -->
    <span class="vbquote">(Morpheus @ 19:09:2007, 11:37 )</span><!--QuoteEBegin-->Call notesDocumentCollection.DeleteDocument( document )
    [snapback]78777" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    Не понимаю как реализовать.
    Создается некоторая коллекция документов:collection
    Текущий документ:
    Код (Text):
        Dim workspaceST As New NotesUIWorkspace
    Set uidocST = workspaceST.CurrentDocument
    Set docST = uidocST.Document
    collection.DeleteDocumen(docST) - ошибочка)

    <!--QuoteBegin-Morpheus+19:09:2007, 11:37 -->
    <span class="vbquote">(Morpheus @ 19:09:2007, 11:37 )</span><!--QuoteEBegin-->не забудте перед этим это текущего дока ( который будет удаляться ) взять следующий
    [snapback]78777" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    А вот эту фразу софсем не понял
     
  4. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Для: kizarek
    Ну, документ который ты взял чеоез ws не будет из коллекции, даже если он там присутсвует.
    Если у тебя есть коллекция и тебе надо исключить документ, который открыт в ws, то решается перебором и сравниванием UNID'ов.

    Насчёт второго пункта: имелось в виду следующее

    Код (Text):
    Dim TmpDoc as NotesDocument

    Set Doc = Dc.GetFirstDocument
    While Not Doc Is Nothing
    Set TmpDoc = Dc.GetNextDocument(Doc)
    if Flag then Call Dc.DeleteDocument(Doc)
    Set Doc = TmpDoc
    Wend
    P.S. Я эту конструкцию использую не особо часто, так что может присутсвовать косячок.
    Откомпилив в голове, получил результат без ошибок.
     
  5. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Для: kizarek
    Попробуй так:
    Код (Text):
    Dim doc As NotesDocument
    ...
    Set doc = collection.GetDocument(docST)
    If Not (doc is Nothing) then Call collection.DeleteDocument(doc)
     
  6. Kizarek86

    Kizarek86 Lotus team
    Lotus team

    Регистрация:
    20 июл 2007
    Сообщения:
    857
    Симпатии:
    5
    Morpheus,Omh, спасибо. сделал немного проще, при обходе коллекции дополнительное условие, на проверку соответствия UNID'а текущему документу.
     
  7. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    Для: kizarek
    НУ и зачем ?
    У NotesDocument есть свойство IsUIDocOpen property
    Read-only. Indicates whether a NotesDocument object (back-end document) is accessed through a NotesUIDocument object (front-end document).

    Просто проверяете на True и все ( ведь любой документ из коллекции могут открыть и другие пользователи!
     
  8. Kizarek86

    Kizarek86 Lotus team
    Lotus team

    Регистрация:
    20 июл 2007
    Сообщения:
    857
    Симпатии:
    5
    Morpheus ну кто же знал что так можно, реализуем так как знаем) Спасибо, шас так и сделаю)
     
Загрузка...

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