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

Тема в разделе "Lotus - Программирование", создана пользователем DNT, 1 дек 2011.

  1. DNT

    DNT Постоялец форума
    Lotus team

    Регистрация:
    12 окт 2005
    Сообщения:
    592
    Симпатии:
    7
    В общей Team MailIn базе необходимо создать действие "Скопировать к себе ...". При нажатии необходимо скопировать выделенные документы в личную почтовую БД пользователя в указанную папку. Папка выбирается пользователем.
    Вопрос как показать диалог выбора существующих папок, но только не из текущей БД, а из пользовательской?
     
  2. morpheus

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

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    @PickList( [FOLDERS] : [SINGLE] ; @MailDbName ) ???
     
  3. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    См. представления "($FolderAllInfo)", "($FolderInfo)" в почтовой БД, может наведёт на мысль

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

    DNT Постоялец форума
    Lotus team

    Регистрация:
    12 окт 2005
    Сообщения:
    592
    Симпатии:
    7

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

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

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Вызывать @PickList в дог-агенте, результат возвращать через профиль?

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

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

    DNT Постоялец форума
    Lotus team

    Регистрация:
    12 окт 2005
    Сообщения:
    592
    Симпатии:
    7
    да ну? у меня отрабатывает на ура!
     
  7. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Если из действия формы — может быть... Я проверял, вызывая дог-агента из лс-агента, получал ошибку "Notes error: @Function is not valid in this context"

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

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Попробовал получить папки с помощью ws.PickListStrings — недокументировано, но работает!!!
    Код (LotusScript):
    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
     
  9. DNT

    DNT Постоялец форума
    Lotus team

    Регистрация:
    12 окт 2005
    Сообщения:
    592
    Симпатии:
    7
    Согласен работает НО все-же не так красиво - отображаются и представления и папки... мне нужны только папки...
    Все же останусь на старом варианте.

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

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

    Код (LotusScript):
    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 - СПАСИБО! Пригодится.
     
Загрузка...

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