Как определить, что документ находится в папке "Входящие" / "Черновик" и отправлен в 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.