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

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

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

Отображение результата поиска во View

  • Автор темы Автор темы engao
  • Дата начала Дата начала
E

engao

Доброго времени суток!

Есть задача, не знаю можно ли ее решить средствами LoNo.

В общем суть такова, что нужно каким-то удобным для пользователя образом отобразить коллекцию документов, полученную LotusScript-ом (например через db.Search()), т.е. получил коллекцию документов, добавил во view или отфильтровал view, оставив только полученные документы, и отдал пользователю.

Спасибо!
 
Вот так ....
Код:
Dim session As New NotesSession
Dim db As NotesDatabase
Dim view As NotesView
Dim doc As NotesDocument
Dim j As Long
Set db = session.CurrentDatabase
Set view = db.GetView("All Documents")
j = view.FTSearch( "server AND protocol", 0 )
Set doc = view.GetFirstDocument()
While Not(doc Is Nothing)
Call doc.PutInFolder( "For Review", True )
Set doc = view.GetNextDocument(doc)
Wend
Call view.Clear
 
Вот так ....
Код:
Dim session As New NotesSession
Dim db As NotesDatabase
Dim view As NotesView
Dim doc As NotesDocument
Dim j As Long
Set db = session.CurrentDatabase
Set view = db.GetView("All Documents")
j = view.FTSearch( "server AND protocol", 0 )
Set doc = view.GetFirstDocument()
While Not(doc Is Nothing)
Call doc.PutInFolder( "For Review", True )
Set doc = view.GetNextDocument(doc)
Wend
Call view.Clear


Спасибо!
Вариант интересный, очень даже работает, но немного муторный, т.к. нужно постоянно очищать Folder перед новым запуском процедуры.
 
Попробуй использовать класс NotesNewsletter

Код:
Dim session As New NotesSession
Dim db As NotesDatabase
Dim collection As NotesDocumentCollection
Dim newsletter As NotesNewsletter
Dim doc As NotesDocument
Set db = session.CurrentDatabase
Set collection = db.FTSearch( "arachnid", 15 )
If ( collection.Count > 0 ) Then
Set newsletter = New NotesNewsletter( collection )
Set doc = newsletter.FormatMsgWithDoclinks( db )
doc.Form = "Memo"
doc.Subject = "The Arachnid Report"
Call doc.Send( False, "Sharron Karasic" )
End If
 
Спасибо!
Вариант интересный, очень даже работает, но немного муторный, т.к. нужно постоянно очищать Folder перед новым запуском процедуры.
Ни разу не муторно. Folder чистится одной строчкой:
Код:
Call notesView.AllEntries.RemoveAllFromFolder( foldername$ )
где notesView — очищаемая папка, а foldername$ — её имя.
 
allex
Важно, чтобы фолдер был приватным. Иначе будут отображаться результаты поиска других людей.

Ещё можно на HTML страничку с таблицей отрисовать.
Или РТ-поле заполнить с линками на найденные документы, как NewsLetter, только сам внешний вид контролируешь.
 
Ну я только идейно подсказал человеку направление мыслей
 
Код:
Dim session As New NotesSession
Dim db As NotesDatabase
Dim view As NotesView
Dim doc As NotesDocument
Dim j As Long
Set db = session.CurrentDatabase
Set view = db.GetView("Result private view")
view.SelectionFormula = str 'formula dlia DBSearch (sorry za translit)
Call view.refresh
 
Вот у меня следующая проблема.
Есть вид архива отработанных документов AllIshodDocumentiInWorkZdrav
Я хочу прямо в нем отображать результаты поиска по архиву.
Или возможно программно создать папку и открыть её с результатами поиска поверх текущего вида AllIshodDocumentiInWorkZdrav, а после поиска закрыть его.
Или лучше сделать форму посика со встроенной папкой для результатов поиска?
А можно ли изменять встроенный поиск?

Sub Click(Source As Button)
Dim session As New NotesSession
Dim db As NotesDatabase
Dim collection As NotesDocumentCollection
Dim view As NotesView
Dim doc As NotesDocument

Set db = session.CurrentDatabase
Set view = db.GetView("AllIshodDocumentiInWorkZdrav")
searchFormula$ = {РЕГИСТРАЦИОННЫЙ_НОМЕР = "01-26/12-463"}
Set collection = db.Search( searchFormula$,Nothing,0)

If ( collection.Count > 0 ) Then
Messagebox "есть доки"
Set doc = view.GetFirstDocument()
While Not(doc Is Nothing)
Call doc.PutInFolder( "AllIshodDocumentiInWorkZdrav", True )
Set doc = view.GetNextDocument(doc)
Wend
'call view.
End If

Но в вид нельзя ставить коллекцию документов. А переделывать на папку, тоже нельзя.
Остается только создавать приватную папку и отдельный пункт меню для поиска?
 
Но в вид нельзя ставить коллекцию документов. А переделывать на папку, тоже нельзя.
Остается только создавать приватную папку и отдельный пункт меню для поиска?
Для вашего поиска можно использовать @SetViewInfo.
Либо можно еще как в описанном примере выще менять SelectionFormula, однако при этом необходимо сделаать представление личным при открытии, а на закрытие сбрасывать на формулу по умолчанию.
 
Мы в соцсетях:

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