• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Полнотекстовый Поиск В Коллекции

imendan

Green Team
22.09.2010
159
4
BIT
0
Век живи - век учись!
При обращении к коллекции из представления (например, PickListCollection) существует возможность производить поиск по первым символам. Необходимо организовать функционал, который позволит осуществлять поиск полнотекстовый.
Например, нажимаем кнопку выбрать товар, выходит список товаров. Нам нужно выбрать товары, где в слове присутствуют "ка": "шКАла", "КАрандаш", "стерКА" и т.д.
Я так понял через стандартные функции LotusScript'а это невозможно. Подскажите, пож-та, как это сделать? Я даже не имею представления! Какие средства использовать, что гуглить? Может у кого-то есть готовый пример!
Спасибо заранее!

Лотус ФОРЭВЭ :)
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
217
если требуется лайфсерч - такого нет
можно в java (аплет или окно) или JS (здесь ограничения движка в нотусне м.б., в веб невапрос)

dijit.form.ComboBox здесь оно вродить как стандартно
для java пример
но мона пошукать аналогично запросу по js
на LS есть попытки сделать через таймер - но очень угрёбищный вариант :)
 
S

susinmn

Например, нажимаем кнопку выбрать товар, выходит список товаров.

А если открывать в диалоге форму с внедренной личной папкой, полем для ввода текста, в поле ловим нажатие Enter или кнопицу рисуем (FTSearch, результат в папку, обновление папки). А уже при выборе документа из личной папки, запоминаем UNID....
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
217
susinmn т.е. лепить костыли :) ?
 

Gandliar

Lotus Team
16.02.2004
556
26
BIT
40
Иногда проще сделать так

диалогбокс с тремя полями, см картинку

конпка меняется на искать когда курсор в поле поиска и работает кнопка ввод
 

Вложения

  • choice.jpg
    choice.jpg
    22,3 КБ · Просмотры: 648

Gandliar

Lotus Team
16.02.2004
556
26
BIT
40
Даже не представляю как это организовать! Исходники есть?

код вызова такой, разбирайтесь :)
сделать работающий готовый пример - это не сегодня

Код:
Sub setProjectByFind
On Error GoTo errHandler
Dim workspace As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim session As New NotesSession	
Dim db As NotesDatabase	
Dim collection As NotesDocumentCollection
Dim view As NotesView
Dim doc As NotesDocument
Dim docSearch As NotesDocument
Dim docResult As NotesDocument	
Dim docProject As NotesDocument	
Dim Query As String
Dim key As String
Dim item As NotesItem
Dim i As Long

Set uidoc = workspace.CurrentDocument
Set doc = uidoc.Document	
Set db = session.CurrentDatabase
Set docSearch = db.CreateDocument	
start:	
If Not workspace.DialogBox("dlgSearch", True, True, True, False, False,False, "Выбор проекта", docSearch, False, True, False) Then Exit Sub
If docSearch.Flag(0)="1" And Not docSearch.ViewResult(0)="Результаты поиска" And Not docSearch.ViewResult(0)="По Вашему запросу ничего не найдено" Then
Set view = db.GetView("project~unid")
Call view.Refresh
key = docSearch.ViewResult(0)
Set docProject = view.GetDocumentByKey(key, True)

Dim p As New cProject
Call p.getInfo(docProject)
Call p.setInfo(doc)
Call uidoc.Refresh()

Call uidoc.RefreshHideFormulas
Exit Sub
End If
Query = "([form]=project OR [form]=subProject) AND NOT [d]=1"
ForAll KeyString In docSearch.KeyString
Query = Query+" AND [title]=*"	+KeyString+"*"
End ForAll
Set collection = db.FTSearch(Query, 300)		
If collection.Count = 0 Then
docSearch.Result = "По Вашему запросу ничего не найдено"
Else
i = 0		
Set docResult = collection.GetFirstDocument
While Not docResult Is Nothing
If i = 0 Then
docSearch.Result = docResult.title(0)+"|"+docResult.UNID(0)
Else
Set item = docSearch.GetFirstItem("Result")
item.AppendToTextList(docResult.title(0)+"|"+docResult.UNID(0))
End If
i=i+1
Set docResult = collection.GetNextDocument(docResult)
Wend
docSearch.Flag ="1"
docSearch.ViewResult = StrRight(docSearch.Result(0),"|")
End If
GoTo start	
finally:
If eh.isError Then MessageBox eh.errorMessage		
Exit Sub
errHandler:
Call eh.getError()
Resume finally
End Sub
 

imendan

Green Team
22.09.2010
159
4
BIT
0
код вызова такой, разбирайтесь :)
сделать работающий готовый пример - это не сегодня

Код:
Sub setProjectByFind
On Error GoTo errHandlerраф
...................
End Sub

Народ, я так и не смог разобраться! Еще раз уточню, что это нужно сделать на толстом клиенте. Вообще подобных задач много!
Народ, подскажите, что надо учить, чтобы графически и функционально улучшить функции Лотус Ноутс! Какие элементы Явы надо
рассматривать! И вообще, есть еще идеи как реализовать данную задачу по полнотекстному поиску в коллекции на подобии
PickListCollection?
 

VladSh

начинающий
Lotus Team
11.12.2009
1 786
157
BIT
81
IMENDAN
Есть другая идея. Создавать док из того "справочника", для которого нужен полнотекстовый поиск. Т.е. во вьюхе ищем нужный док по обычному полнотекстовому поиску, становимся на нужный док и по кнопке во вьюхе создаём док с уже подтянутыми полями из выделенного документа.
А вообще XPages сейчас решает.
 
M

motogarri

Категоризация по типу товара не спасет положение? Чаще всего помогает.
 
M

motogarri

Вот простой пример поиска с папкой. Там одна общая папка внедренная в диалог. Если такой вариант подойдет, смотри в сторону spofu папок наверное. На этом форуме кучу раз обсуждалось во всех вариантах.

p.s. Кстати, я там в поиске беру доки перебором по вьюшке. Возможно FTSearch лучше подойдет, не знаю не пользовал.
 

Вложения

  • FolderSearch.7z
    36 КБ · Просмотры: 133
Мы в соцсетях:

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