Как определить, что документ находится в папке "Входящие" / "Черновик" и отправлен в Lotus Notes с помощью Notes API?

DocumentCollection documents = db.getAllDocuments(); Document doc = collection.getFirstDocument();

Какой метод используется для определения местоположения документа. Будь то в папке "Входящие" или "Отправлено" или "Черновики".

4 ответа

Решение

Самый безопасный способ - получить дескриптор каждой папки с помощью db.GetView(), а затем посмотреть, находится ли документ в этой папке. Для этого вы можете использовать метод db.AllEntries(), чтобы получить NotesViewEntryCollection, а затем вызвать метод GetEntry, чтобы проверить, находится ли документ в этой коллекции.

Если у вас включены ссылки на папки для базы данных, вы можете использовать свойство folderreferences документа Notes, чтобы упростить задачу.

Входящие это папка. Отправлено и Черновики являются представлениями. Вот подход, который будет работать одинаково для представлений и папок:

  • Используйте View myView = Database.getView, чтобы получить представление ($Inbox), ($Sent) или ($Drafts).
  • Создайте пустой объект NoteCollection
  • Используйте NoteCollection.add(doc), чтобы поместить ваш документ в коллекцию
  • Затем используйте NoteCollection.intersect(myView).
  • Если NotesCollection.Count!=0, ваш документ все еще находится в коллекции NoteCollection, поэтому он находился в представлении или папке, которую вы тестируете.

Эта проблема включает в себя 2 аспекта. Папки и просмотры. Вы можете выполнить в двух частях. Во-первых, вы можете проверить это техническое замечание IBM, в котором рассматривается ваш вопрос относительно папок (т. Е. Папка "Входящие" - это папка).

Элементы проекта "Черновик" и "Отправленные" являются видами, поэтому их необходимо искать по-разному. Вы можете сделать это, используя метод " contains" объекта NotesViewEntryCollection следующим образом:

Function FindDocument(view As notesView, doc As notesDocument) As Boolean
    On Error Goto errHandle
    Dim vec As NotesViewEntryCollection
    Dim bFound As Boolean

    bFound = False
    Set vec = view.AllEntries
    If vec.Contains(doc) Then
        bFound = True
    End If
    FindDocument = bFound
    Exit Function
errHandle:
    Print Lsi_info(2) + ":" + Str(Err) + " - " + Error(Err) + _
    ", at line " + Str(Erl)
    Exit Function
End Function

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

Откройте почтовую базу данных в Domino Designer и посмотрите на представления и папки. Если это представление, то есть оператор Select, посмотрите, какие документы выбраны. Если это папка, вы должны знать, как документы прикреплены к папке.

($ Sent) является представлением, но ($Drafts) и ($Inbox) являются папками. Для последних двух вам действительно нужно использовать FolderReferences.

Другие вопросы по тегам