• 🔥 Бесплатный курс от Академии Кодебай: «Анализ защищенности веб-приложений»

    🛡 Научитесь находить и использовать уязвимости веб-приложений.
    🧠 Изучите SQLi, XSS, CSRF, IDOR и другие типовые атаки на практике.
    🧪 Погрузитесь в реальные лаборатории и взломайте свой первый сайт!
    🚀 Подходит новичкам — никаких сложных предварительных знаний не требуется.

    Доступ открыт прямо сейчас Записаться бесплатно

Import и Attache

  • Автор темы Автор темы Hedg
  • Дата начала Дата начала
хм, а что не проходит

Код:
ForAll file in filename
.....
End ForAll
 
Что задать в file, ведь имена файлов я незасуну в код, они от фонаря называются???
 
я написал


Код:
Sub Click(Source As Button)
Dim ws As New NotesUIWorkspace
Dim filename As Variant

filename = ws.OpenFileDialog( True, "Выберите файл(ы)")

Forall f In filename
Print f
End Forall
End Sub

Выбрал в диалоге ндцать файлов и увидал их все в строке статуса, в чем проблема?

Та даже в хелпе аналогичный пример есть....
 
Для: Ogion7
Большое спасибо, просто не понял сразу как этот forall работает.

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

Код:
Dim workspace As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Set uidoc = workspace.CurrentDocument
Call uidoc.GotoField("Scan")
Call uidoc.Import

Работало на ура, потому как система каждый раз при нажатии на кнопарь возвращала в ту же папку, откуда был импортирован последний документ


А теперь стало вот так
Код:
	Dim ws As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim rtitem As NotesRichTextItem
Dim object As NotesEmbeddedObject
Dim doc As NotesDocument
Dim filename As Variant

Set uidoc = ws.CurrentDocument
filename = ws.OpenFileDialog( True, "Выберите файл(ы)")
If folename = "" Then
Exit Sub		
End If
Call uidoc.GotoField("Scan")

Forall i In filename
Call uidoc.Import("JPEG Image", i)
End Forall		
Set doc = uidoc.Document
Set rtitem = New NotesRichTextItem( doc, "Atach" )
Forall j In filename
Set object = rtitem.EmbedObject( EMBED_ATTACHMENT, "", j, Бекап)
End Forall

И при открытие диалога выбора файлов открывает каждый раз папку лотуса.
 
Из хелпа

OpenFileDialog method
.....
Syntax
stringArray = notesUIWorkspace.OpenFileDialog( multipleSelection , [title$] , [filters$] , [initialDirectory$] , [initialFile$] )
.......
initialDirectory$
String. Optional. The directory to which the dialog box is opened. Otherwise, determined by the system.

должно помочь
 
initialDirectory$ - помогло бы, если бы папка была постоянной, но юзвери файлы дробят на несколько папок, закинут из одной несколько, потом переходят в другую.
 
если я правильно понял, сделай так -- закатай начальную директорию в скрытое поле, предай диалогу. После выбора файла выдери путь из строки, которую вернет диалог и запиши в поле и тд
 
тоже не пройдёт, потому как файлы не запихиваются в один документ, а документов создаётся несколько, и импортируются файлы по признаку. Т.е. если в папке 14 файлов, то может быть 14 документов.
 
так делай все с одного документа(типа диалог)! а доки пусть себе создаются
 
Подумываю хранить путь в профильном документе и записывать адрес последнего внесённого документа
Только вот пока не разобрался с ним, это обычный док , где он храниться и т.д. кто разъяснит???
 
сам до конца не понимаю, шо есть профильный документ, но использовал для схожих целей. Просто док, как с ним работать см хелп
 
Профильный документ не есть простым документом, на это наталкивает IsProfile property. Не понят но по какой форме создаётся этот док и как его потом отобразить во вьюхе.
 
во вьюхе его вряд ли надо отображать, форма какую сделаеш :()), юзают же его(шо ты и собираешся делать) для хранения всяких настроек(тех же путей к другим базам). Сделай диалог просто, где профильный документ будет как форма диалога
 
и так вот что получилось в конечном итоге.
Код:
	Dim ws As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim rtitem As NotesRichTextItem
Dim object As NotesEmbeddedObject
Dim doc As NotesDocument
Dim filename As Variant
Dim session As New NotesSession
Dim c As Variant
Dim docprofile As NotesDocument

Set db = session.CurrentDatabase

Set docprofile = db.GetProfileDocument("path", session.UserName)
If docprofile.IsNewNote Then
c(0) = "Y:\Scan\Archive\"
Else
c = docprofile.GetItemValue("path")
End If		

filename = ws.OpenFileDialog( True, "Выберите файл(ы)",, Cstr(c(0)))

Set uidoc = ws.CurrentDocument
Call uidoc.GotoField("Scan")

Forall i In filename
Call uidoc.Import("JPEG Image", i)
End Forall		
Set doc = uidoc.Document
Set rtitem = New NotesRichTextItem( doc, "Atach" )
Forall j In filename
Set object = rtitem.EmbedObject( EMBED_ATTACHMENT, "", j, Бекап)
End Forall

If docprofile.isnewnote Then
Set rtitem = docprofile.CreateRichTextItem( "path" )
Call docprofile.ReplaceItemValue("path", Strleftback(Cstr(filename(0)), Right(Cstr(filename(0)),26)))
Call docprofile.Save(True,False)
Else
Call docprofile.ReplaceItemValue("path", Strleftback(Cstr(filename(0)), Right(Cstr(filename(0)),26)))
Call docprofile.Save(True,False)
End If
 
Профильный документ не есть простым документом, на это наталкивает IsProfile property. Не понят но по какой форме создаётся этот док и как его потом отобразить во вьюхе.
Формы может и не иметь, во вьюхе его не отобразишь (и это правильно!). В 4-ке профиля вообще были элементами дизайна.
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

Похожие темы