Агента нужно создавать в АК.
Раздел DocumentSelection оставить пустым.
Trigger: "Action menu selection", если запускать из меню или "Agent list selection", если иначе.
Target - "All selected document"
В Initialize пишем:
Код:
Dim session As New notesSession
Dim curdb As NotesDatabase
Dim maildb As NotesDatabase
Dim dc As NotesDocumentCollection
Dim doc As NotesDocument
Dim i As Long
Set curdb = session.CurrentDatabase
Set dc = db.UnprocessedDocuments
For i = 1 To dc.Count
Set doc = dc.GetNthDocument(i)
Set maildb = session.GetDatabase(doc.mailserver(0) , doc.mailfile(0))
Call maildb.Compact
Next
Вроде так.
Соответственно у пользователя должны быть необходимые права.
Если прав нет или нет желания давать, то надо чуть по-другому делать.
В представлении в АК сделать кнопку. Где вызывать агента методом notesAgent.RunOnServer с ID документа в параметре.
Код кнопки вот такой:
Код:
Dim ws As New NotesUIWorkspace
Dim session As New NotesSession
Dim db As NotesDatabase
Dim agent As notesAgent
Dim uiview AS notesUIView
Dim dc As NotesDocumentCollection
Dim doc As NotesDocument
Dim i As long
Set db = session.CurrentDatabase
Set agent = db.GetAgent("наш агент")
Set uiview = ws.CurrentView
Set dc = uiview.Documents
for i = 1 to dc.Count
Set doc = dc.GetNthDocument(i)
Call agent.RunOnServer(doc.NoteID)
Next i
В агенте Trigger ставим On Schedule.
Target: "All documents"
Trigger: "Action menu selection", если запускать из меню или "Agent list selection", если иначе.
Target - "All selected document"
В Initialize пишем:
Код:
Dim session As New notesSession
Dim curdb As NotesDatabase
Dim agent As NotesAgent
Dim maildb As NotesDatabase
Dim doc As NotesDocument
Set curdb = session.CurrentDatabase
Set agent = session.CurrentAgent
Set doc = curdb.GetDocumentByID(agent.ParameterDocID)
Set maildb = session.GetDatabase(doc.mailserver(0) , doc.mailfile(0))
Call maildb.Compact
Next
Подписываем админом и, если нигде не ошибся, то должно работать.
Во накатал-то.