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

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

    Скидки до 10%

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

Свой поиск по базе с правами автора

seoman2

Green Team
17.02.2010
507
1
BIT
70
Делаю свой поиск по базе, у юзеров права автора.
1. В форме выбрал критерии поиска, например Form="Test".
2. Передал формулу серверному агенту, в котором к примеру вьюха.SelectionFormula = {Select Form="Test"}
3. У юзера Set view=db.GetView("вьюха")
Call workspace.ViewRebuild

Но workspace.ViewRebuild работает только с правами не ниже эдитора.
Приватные папки - тоже не рефрешатся.

Что делать?
 

Gandliar

Lotus Team
16.02.2004
558
26
BIT
69
Ну так серверным агентом и ребилдить, раз им формулу менять.
Только для каждого пользователя свой вид должен быть в базе.
Создавайте именной вид для каждого пользователя по шаблону тем же агентом.
 

seoman2

Green Team
17.02.2010
507
1
BIT
70
Что Вы имеете ввиду под именным видом?
Кстати.
Пользователь осуществляет поиск с вида оутлайна.
 
Последнее редактирование:

Gandliar

Lotus Team
16.02.2004
558
26
BIT
69
Например у вас есть вид "Поиск"
Вы можете сделать вид для пользователя типа "Поиск/CommonUserName" и открывать его через оутлайн
Или аналогичную папку и помещать результаты поиска в нее
 

seoman2

Green Team
17.02.2010
507
1
BIT
70
Использовать личные представления (Shared, desktop private on first use ) ?
сделать вид для пользователя типа "Поиск/CommonUserName" и открывать его через оутлайн - есть пример кода? Не знаю как делать.
 

Gandliar

Lotus Team
16.02.2004
558
26
BIT
69
С личными представлениями проблема будет обновлять их дизайн
Создать в базе вид - в хелпе есть для notesdatabase createView
открыть через оутлайн - просто формулу написать открыть "вид/"+@name([cn];@userName)

а вид создавать при открытии бд пользователем
 

seoman2

Green Team
17.02.2010
507
1
BIT
70
У меня есть форма поиска для юзера-автора, когда нажму мою кнопку "Найти документы", то не могу обновить вьюху.
workspace.ViewRebuild
createView сделаю серверным агентом.
И опять - как обновлю/перейду на неё?
 

seoman2

Green Team
17.02.2010
507
1
BIT
70
В серверном агенте

Код:
view.SelectionFormula=Field_formula
 Call view.Refresh
Dim myView As NotesView
 Set myView = db.CreateView( "newView",, view )

В оутлайн "newView"
 

Gandliar

Lotus Team
16.02.2004
558
26
BIT
69
Допустим есть некий оутлайн
В оутлайне есть оутлайнЕнтри
В Оутлайн ентри выбираем NamedElement, view, а дальше указываем не конкретный вид, а формулу типа "newView\\"+@name([cn];@UserName)
чтобы после клика на оутлайнЕнтри открылся вид с названием "newView\Ivan Ivanov" где Ivan Ivanov - коммон имя текущего пользователя

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

Set notesView = notesDatabase .CreateView( [ viewName$ ] , [ viewSelectionFormula$ ] , [ templateView ] , [ prohibitDesignRefreshModifications ] )

Например Ваш шаблон называется "newView"

Set notesView = notesDatabase .CreateView( "newView\\"+session.commonUserName , [ viewSelectionFormula$ ] , "newView" , false)
 

VladSh

начинающий
Lotus Team
11.12.2009
1 791
157
BIT
124
Я вообще не понимаю, зачем нужно использовать ViewRebuild; ни разу её не использовал.
 

alexas1

Green Team
10.04.2014
1 202
225
BIT
38
Я вообще не понимаю, зачем нужно использовать ViewRebuild; ни разу её не использовал.
Без ребилда, после изменения селекшина, изменений на экране не будет, против предыдущего селекшина.
Ващще, изменение селекшин формулы для динамического поиска доков, сомнительный ход, имхо.
 

Gandliar

Lotus Team
16.02.2004
558
26
BIT
69
Без ребилда, после изменения селекшина, изменений на экране не будет, против предыдущего селекшина.
Ващще, изменение селекшин формулы для динамического поиска доков, сомнительный ход, имхо.
А если переоткрыть вид?
 

alexas1

Green Team
10.04.2014
1 202
225
BIT
38
А если переоткрыть вид?
не, или ребилд в УИ или апдолл в беке, типа:
Dim dbName As String
dbName = db.FileName
Dim result As Integer
result = Shell("NUPDALL.exe "+dbName+" -r -t "+ "MyView")
. . . . .
эт если в клиента с приватныи видом, на сервере, навер, для этого, случая не стоит
тут, пока не сапдейтится, скрипт дальше не пойдёт, что и нужно, для логики

или, как ты написал, пересобирать вид с новым селекшином, удаляя старый и создавая новый, но не комильфо это, имхо
 
Последнее редактирование:

Gandliar

Lotus Team
16.02.2004
558
26
BIT
69
Вот на уровне идеи предлагаю

1. сделать вид, содержащий все документы в которых необходим поиск
2. сделать агент "select" в котором собрать формулу селекшена и записать ее в переменную в нотес ини "mySearch"
3. сделать формульный агент выбора документов "find" который берет формулу из нотес ини в агенте справа снизу в менюхе "Select documents in view"
SELECT @Environment("mySearch")
4. сделать кнопку поиск в виде

@Command([RunAgent];"select");
@Command([RunAgent];"find")
@Command([ViewShowOnlySelected])

расскажете, что получилось
 
  • Нравится
Реакции: seoman2

seoman2

Green Team
17.02.2010
507
1
BIT
70
В Оутлайн ентри выбираем NamedElement, view, а дальше указываем не конкретный вид, а формулу типа "newView\\"+@name([cn];@UserName)
Не работает, нет прав у автора. Не переходит юзер на созданый вид.
 
Последнее редактирование:

VladSh

начинающий
Lotus Team
11.12.2009
1 791
157
BIT
124
Без ребилда, после изменения селекшина, изменений на экране не будет, против предыдущего селекшина.
Формулу отбора в вид нет смысла менять. Если такое нужно, используем NotesDatabase.Search, - скорость та же самая.
 

alexas1

Green Team
10.04.2014
1 202
225
BIT
38
Формулу отбора в вид нет смысла менять. Если такое нужно, используем NotesDatabase.Search, - скорость та же самая.
Не в скорости дело, иногда требуется интерактивность в виде, при добавлении доков вообще, а не слепок search на момент времени.
 

seoman2

Green Team
17.02.2010
507
1
BIT
70
2. сделать агент "select" в котором собрать формулу селекшена и записать ее в переменную в нотес ини "mySearch"
Не подходит, юзерам нужно видеть, какие документы они читали, какие нет. Ставить и снимать селект - не вариант.
 
Мы в соцсетях:

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