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

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

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

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

Динамическое изменение View

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

Extraterrestrial

Меня интересует, как можно дать возможность пользователю динамически менять вид...
Во-первых, использовать Shared, private on first use, чтобы изменения у каждого были свои. Правда, насколько я помню, если нет прав дизайнера, то выскакивает ошибка при попытке, например, изменить формулу отбора. Но можно делать изменения агентом через RunOnServer, который подписан дизайнером?
Второй момент, это то, что нужно после изменения формулы отбора или колонки выйти из вида и зайти в него снова, чтобы эти изменения увидеть. Видимо можно используя notesUIView.Close и notesUIDatabase.OpenView? Правда, пока что не вышло...
 
A

Akupaka

вот посмотри тут как перегрузка вида делается на лету
_https://codeby.net/threads/29582.html?view=findpost&p=135109

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

Extraterrestrial

вот посмотри тут как перегрузка вида делается на лету
_https://codeby.net/threads/29582.html?view=findpost&p=135109

Это только для Embedded View? Embedded View - не совсем хорошая вещь. Например, там сортировки не работают... Может во фреймах что-то попробовать делать? В верхнем фрейме в форме действие, которое после изменения параметров вида переключает на другой вид, а потом возвращает на измененный, тогда, возможно, изменения отобразятся.
 
E

Extraterrestrial

Может во фреймах что-то попробовать делать? В верхнем фрейме в форме действие, которое после изменения параметров вида переключает на другой вид, а потом возвращает на измененный, тогда, возможно, изменения отобразятся.

Такой вариант прокатил. Теперь только бы это еще заработало в варианте, когда агент меняет вид и когда вид типа Shared, private on first use.
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
214
перестаньте пытаться сделать из LDN - РСУБД
все это будет сильно тормозить (перестройка индекса)
не надо делать универсально, можно подогнать под задачу
надо учитывать объем данных
может оказаться, что проще вносить изменения а РСУБД (через DECS например) и оттуда получать выборки
 
E

Extraterrestrial

перестаньте пытаться сделать из LDN - РСУБД
все это будет сильно тормозить (перестройка индекса)
не надо делать универсально, можно подогнать под задачу
надо учитывать объем данных
может оказаться, что проще вносить изменения а РСУБД (через DECS например) и оттуда получать выборки

Да причем тут РСУБД-то? Я могу и на XPages тоже самое сделать. Не тормозит, всё ОК. У нас не тот объем данных, чтобы тормозило. Причем я так понимаю, что от размера выборки ещё зависит? Может данных и много, но выборка небольшая. В общем, теперь лишь бы это всё заработало с обновлением через агент и с private видами.
 
A

Akupaka

Это только для Embedded View? Embedded View - не совсем хорошая вещь. Например, там сортировки не работают...
нет, то был просто пример, а перестроение вида не имеет отношения конкретно к внедрению вида...
зы: какие это сортировки не работают во внедренном виде?! О.о
 
E

Extraterrestrial

нет, то был просто пример, а перестроение вида не имеет отношения конкретно к внедрению вида...
зы: какие это сортировки не работают во внедренном виде?! О.о

Перестроение вида происходит только, если переключиться на другой вид и обратно, никак иначе он не перестраивается после внесения изменений...
По-моему не работали Click on column header to sort. Не помню точно. Но что-то точно не работало.
 

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
4
Extraterrestrial
Про второй момент. Переоткрывать не надо, а надо сделать view.Rebuild. Если делать серверным агентом, то и этого не надо.
А про первый момент есть сомнения, что получится с Shared, private on first use.

Если данных немного, то делай через папки.
 
E

Extraterrestrial

Extraterrestrial
Про второй момент. Переоткрывать не надо, а надо сделать view.Rebuild.
Да? Мне казалось что не помогают ни рифреши, ни рибилды. Попробую. Спасибо.

Если делать серверным агентом, то и этого не надо.
Что рифреша достаточно будет? Вот у меня вид открыт этот. Агент отработал. Разве что-то должно измениться в UI само собой?

А про первый момент есть сомнения, что получится с Shared, private on first use.

Почему?
 

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
4
Да? Мне казалось что не помогают ни рифреши, ни рибилды. Попробую. Спасибо.
Мне помогали. :)

Что рифреша достаточно будет? Вот у меня вид открыт этот. Агент отработал. Разве что-то должно измениться в UI само собой?
Ничего не надо делать. Просто вызови агент и представление само собой обновится.

Ну ты сам посуди. К десктопным личным представлениям ты не достучишься, ибо локальные. Если вдруг достучишься к серверным, то как агент узнает какое ему именно брать, ведь их много с одинаковым именем? По одному на каждого пользователя.
 
E

Extraterrestrial

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

Если вдруг достучишься к серверным, то как агент узнает какое ему именно брать, ведь их много с одинаковым именем? По одному на каждого пользователя.
Где-то должно храниться имя пользователя, иначе и система не различит их, какое выдавать пользователю. Там, наверное, поле типа Readers для этого есть.
 
A

Akupaka

Интересно есть ли права у пользователя на изменение дизайна десктопного вида даже если в ACL у него дизайнерских прав нет...

на локальной реплике без форсирования доступа, по-идее, не нужны права дизайнера, т.к. человек получает полный доступ к базе...

Где-то должно храниться имя пользователя, иначе и система не различит их, какое выдавать пользователю. Там, наверное, поле типа Readers для этого есть.
там есть поле-читатели, поэтому я и писал
не уверен, что серверный агент его увидит вообще...
 
E

Extraterrestrial

там есть поле-читатели, поэтому я и писал

Надо будет проверить, что в этом поле. А про локальные реплики, мы с локальными репликами не работаем. С моей точки зрения локальный контент - это одна сплошная головная боль...
И я склоняюсь в пользу десктопных видов, так как в базе хранить слишком много видов может быть накладно. Вопрос только как пользователь сможет менять дизайн десктопного вида, есть ли у него права.
 
E

Extraterrestrial

Вообще есть у кого-то опыт работы с десктопными видами, программное изменение их дизайна?

У меня выдает ошибку на свойстве notesUIView.View. Вид получить не могу.
 
A

Akupaka

к таким размазанным вопросам нужно код прилагать, а то ошибка понятие растяжимое :blink:
 
E

Extraterrestrial

к таким размазанным вопросам нужно код прилагать, а то ошибка понятие растяжимое :blink:

Dim uiw As New NotesUIWorkspace
Dim UIview As NotesUIView
Dim view As NotesView
Set UIview=uiw.CurrentView
Set view=UIview.View

Попробовал через getView, ошибка не возникает, но и ничего не меняется, вид прежний. Тот же скрипт работает на обычном виде прекрасно.
 
A

Akupaka

а что ты сделать пытаешь в коде? апдейт?..
так я давал ссылку на пример :blink: короче гря, есть NotesUIWorkspace.ViewRebuild, она работает из вида нормально
 
E

Extraterrestrial

а что ты сделать пытаешь в коде? апдейт?..
так я давал ссылку на пример :blink: короче гря, есть NotesUIWorkspace.ViewRebuild, она работает из вида нормально

Я про ошибку пишу, что объект не создается (Set view=UIview.View). Причем тут NotesUIWorkspace.ViewRebuild? Я использую NotesUIWorkspace.ViewRebuild, спасибо, хорошо работает.
Как достучаться к десктопному виду в бэкэнде через LotusScript?
 
Мы в соцсетях:

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