• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

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

  • Автор темы DNT
  • Дата начала
D

DNT

В общей Team MailIn базе необходимо создать действие "Скопировать к себе ...". При нажатии необходимо скопировать выделенные документы в личную почтовую БД пользователя в указанную папку. Папка выбирается пользователем.
Вопрос как показать диалог выбора существующих папок, но только не из текущей БД, а из пользовательской?
 
N

nvyush

См. представления "($FolderAllInfo)", "($FolderInfo)" в почтовой БД, может наведёт на мысль

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

DNT

@PickList( [FOLDERS] : [SINGLE] ; @MailDbName ) ???


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

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

nvyush

Вызывать @PickList в дог-агенте, результат возвращать через профиль?

Добавлено
Проверил — не работает такая связка. Но можно попробовать notesUIWorkspace.PickListStrings с каким-нибудь из представлений link removed или создать в почтовом шаблоне своё по образу и подобию (только не забыть про $FormulaClass)

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

nvyush

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

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

nvyush

Попробовал получить папки с помощью 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
 
D

DNT


Согласен работает НО все-же не так красиво - отображаются и представления и папки... мне нужны только папки...
Все же останусь на старом варианте.

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 - СПАСИБО! Пригодится.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!