Список Папок Из Mailin Пользователя

DNT

Постоялец форума
Lotus team
12.10.2005
590
7
37
Украина, Одесса
#1
В общей Team MailIn базе необходимо создать действие "Скопировать к себе ...". При нажатии необходимо скопировать выделенные документы в личную почтовую БД пользователя в указанную папку. Папка выбирается пользователем.
Вопрос как показать диалог выбора существующих папок, но только не из текущей БД, а из пользовательской?
 

nvyush

Well-Known Member
Lotus team
22.04.2009
2 317
0
48
Подмосковье
#3
См. представления "($FolderAllInfo)", "($FolderInfo)" в почтовой БД, может наведёт на мысль

Добавлено
О, есть штатные средства :O_0:
 

DNT

Постоялец форума
Lotus team
12.10.2005
590
7
37
Украина, Одесса
#4
@PickList( [FOLDERS] : [SINGLE] ; @MailDbName ) ???

ок. спс. а как документы на собаках скопировать в другую БД? не могу найти ...

upd: или какой аналог на скрипте @PickList( [FOLDERS] : [SINGLE] ; @MailDbName ) ???
notesUIWorkspace.PickListStrings - тут нет параметра базы данных ...
 

nvyush

Well-Known Member
Lotus team
22.04.2009
2 317
0
48
Подмосковье
#5
Вызывать @PickList в дог-агенте, результат возвращать через профиль?

Добавлено
Проверил — не работает такая связка. Но можно попробовать notesUIWorkspace.PickListStrings с каким-нибудь из представлений http://codeby.net/ipb.html?s=&sh...st&p=215592 или создать в почтовом шаблоне своё по образу и подобию (только не забыть про $FormulaClass)

Добавлено
Или попробовать из дог-кода с @PickList вызывать LS-агента, копирующего документы в почтовую базу, выбранную папку передавать через профиль.
 

nvyush

Well-Known Member
Lotus team
22.04.2009
2 317
0
48
Подмосковье
#7
да ну? у меня отрабатывает на ура!
Если из действия формы — может быть... Я проверял, вызывая дог-агента из лс-агента, получал ошибку "Notes error: @Function is not valid in this context"

Добавлено
Попробовал вызвать дог-агента с @PickList(...) из лс-действия формы — та же ошибка. Клиент 8.0.1.
 

nvyush

Well-Known Member
Lotus team
22.04.2009
2 317
0
48
Подмосковье
#8
Попробовал получить папки с помощью ws.PickListStrings — недокументировано, но работает!!!
Код:
Sub Initialize
Dim v As Variant
Dim session As New NotesSession
Dim mdb As NotesDatabase
Set mdb = session.GetDatabase("", "", False)
Call mdb.OpenMail
Dim ws As New NotesUIWorkspace
v = ws.PickListStrings(4, False, mdb.Server, mdb.FilePath)
Msgbox v(0)
End Sub
 

DNT

Постоялец форума
Lotus team
12.10.2005
590
7
37
Украина, Одесса
#9
Согласен работает НО все-же не так красиво - отображаются и представления и папки... мне нужны только папки...
Все же останусь на старом варианте.

1. акшен на формулах - вызывает требуемый диалог, запоминает выбранную папку, вызывает агент "Copy in MailDB":

Код:
@SetProfileField( "MainProfile"; "FolderList"; @PickList( [Folders] : [Single]; @MailDbName ); @UserName );
@Command( [RunAgent]; "Copy in MailDB" )
2. агент на скрипте - читает имя папки из проф. документа и копирует выделенные документы в БД тек. юзера:

Код:
Sub Initialize
Dim session As New NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim stringAuthors As String
Dim stringStrings As String
Set db = session.CurrentDatabase
Set doc = db.GetProfileDocument("MainProfile", session.UserName)
profileFL = doc.FolderList
If profileFL(0) = "" Then
Messagebox "Ошибка: нет записи в проф. документ!", 0+48,"Звони админу!"
Exit Sub
End If
Dim dc As NotesDocumentCollection
Dim docCopy As NotesDocument
Dim reg As New NotesRegistration
reg.RegistrationServer = db.Server
Call reg.GetUserInfo(session.UserName, mailserver$, mailfile$)
Dim MailDb As New NotesDatabase( mailserver$, mailfile$ )
Set dc = db.UnprocessedDocuments
Set doc = dc.GetFirstDocument
While Not (doc Is Nothing)
Set docCopy = doc.CopyToDatabase( MailDb )
Call docCopy.PutInFolder (profileFL(0))
Set doc = dc.GetNextDocument(doc)
Wend	
End Sub
За недокументированную 4-ку в ws.PickListStrings - СПАСИБО! Пригодится.