• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Private View On First Open In Picklistcollection

  • Автор темы Serduko
  • Дата начала
S

Serduko

Пытаюсь открыть представление private on first open в NotesUIWorkspace.PickListCollection и выдает ошибку: "Notes error: Index is not to be generated on server". Доступ в ACL открыт. Вероятно надо, что бы представление создалось на локальной машине, подскажите, как сделать это через Lotusscript?
 
A

alexas

:(
Call notesUIDatabase.OpenView( viewName$ [, key$] [, newinstance] [, replaceView] )
Call notesUIView.Close
 
S

Serduko

Возможно ли в фоновом режиме, что бы представление не открывалось у пользователя?
 
S

Serduko

А каким образом лучше определять есть private view у пользователя, с целью создать его, на каком нибудь queryopen event? Имею ввиду если не лезть в локальную базу с представлениями пользователя.
 

savl

Lotus Team
28.10.2011
2 597
310
BIT
159
хм... интересно даже стало.. Но зачем?
Если представление есть, то код его и откроет.
Если его нет, то код открытия его же и создаст.
Лишняя проверка.

Добавлено: или я с папкой путаю...
Если путаю с папкой, то проверять надо через:
Код:
Set notesView = notesDatabase.GetView( viewName$ )

Добавлено: НО:
Using getView returns public views and folders and private views and folders that are owned by the effective id running the agent. Private views stored in the desktop are not returned.
 
S

Serduko

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

Добавлено: или я с папкой путаю...
Если путаю с папкой, то проверять надо через:
Код:
Set notesView = notesDatabase.GetView( viewName$ )

Добавлено: НО:
Собственно вопрос в начале темы, на Picklistcollection выдает ошибку, поскольку не создается.
 

savl

Lotus Team
28.10.2011
2 597
310
BIT
159
на Picklistcollection выдает ошибку, поскольку не создается
Ну логично, pickList только отображает, но не создает.
Нужно предварительно где-то открыть и только потом использовать pickLIst
Варианты открытия в 6-ом сообщении.
 
S

Serduko

Ну логично, pickList только отображает, но не создает.
Нужно предварительно где-то открыть и только потом использовать pickLIst
Варианты открытия в 6-ом сообщении.
По второму кругу :) ? Буду ловить по коду ошибки и открывать, как такой вариант?
 

savl

Lotus Team
28.10.2011
2 597
310
BIT
159
Путаница пошла из-за этого:
хм... интересно даже стало.. Но зачем?
Если представление есть, то код его и откроет. Если его нет, то код открытия его же и создаст. Лишняя проверка.
Я писал это на это сообщение:
А каким образом лучше определять есть private view у пользователя, с целью создать его, на каком нибудь queryopen event?
Нет смысла в такой проверке.
Потому что если открывать до вызова pickLIst, то представление либо создастся, либо откроется где-то.

ммм, разве что хотите избежать "залипания" при создании/открытии, когда индексы будут обновляться.
Но если представление существует и долго не открывалось, то при отображении pickLIst будет то же "залипание".
А если оно часто используется, то при открытии и "залипания" не будет
 
S

Serduko

Путаница пошла из-за этого:

Я писал это на это сообщение:

Нет смысла в такой проверке.
Потому что если открывать до вызова pickLIst, то представление либо создастся, либо откроется где-то.

ммм, разве что хотите избежать "залипания" при создании/открытии, когда индексы будут обновляться.
Но если представление существует и долго не открывалось, то при отображении pickLIst будет то же "залипание".
А если оно часто используется, то при открытии и "залипания" не будет
Я хочу вызывать
Call notesUIDatabase.OpenView( viewName$ [, key$] [, newinstance] [, replaceView] )
Call notesUIView.Close
только один раз, поэтому хочу сделать вызов по событию.
 
S

susinmn

А каким образом лучше определять есть private view у пользователя, с целью создать его, на каком нибудь queryopen event? Имею ввиду если не лезть в локальную базу с представлениями пользователя.

Поиграйся с Readers полем у получаемой вью. Например, если поле есть и совпадает с тек. пользователем, то мы получили spofu папку.
 
A

alexas

Поиграйся с Readers полем ............
Не спасет.
Если очень хочется, чтобы view закрывалась там-же, где вызывается PickList, при открытом модальном окне (PickList), можете на Queryopen view сделать Source.Close.
Но это для случая использования этого view только в PickList (если делать "влоб").
Соответственно uiview.Close тогда не нужен.
 
S

Serduko

Не спасет.
Если очень хочется, чтобы view закрывалась там-же, где вызывается PickList, при открытом модальном окне (PickList), можете на Queryopen view сделать Source.Close.
Но это для случая использования этого view только в PickList (если делать "влоб").
Соответственно uiview.Close тогда не нужен.
Спасло, Readers отвечает как надо. С Queryopen плохая идея, никаких привилегий не дает, а если случайно view будет открываться по умолчанию, то базу будет не открыть.
 
A

alexas

Спасло, Readers отвечает как надо....
Конечно, так Вы узнаете, что SPOFU уже есть для этого юзера. Но это не поможет нормально создать SPOFU в логике Вашего интерфейса.
Обычно стараются держать базу "чистой" и не хранить в ней SPOFU без нужды (удаляют все приваты при открытии или закрытии базы и создают заново при необходимости). Это убирает геморрои при возможном изменении дизайна шаблона SPOFU.
Сохранять SPOFU имеет смысл только в случае о-о-чень большого наполнения всегда актуальным содержимым (из-за потери времени на построение индекса), и то спорно. Я создаю SPOFU незаметно для юзера, без лишнего ожидания.
....случайно view будет открываться по умолчанию....
Что-же это за аппликуха такая, где view открываются случайно по умолчанию?! :) Вы управляете приложением, или оно Вами??
А "С Queryopen плохая идея"(с) - это-ж для решения Вашей хотелки. Я так не делаю ;) . Но работать оно будет.
 
S

Serduko

Конечно, так Вы узнаете, что SPOFU уже есть для этого юзера. Но это не поможет нормально создать SPOFU в логике Вашего интерфейса.
Обычно стараются держать базу "чистой" и не хранить в ней SPOFU без нужды (удаляют все приваты при открытии или закрытии базы и создают заново при необходимости). Это убирает геморрои при возможном изменении дизайна шаблона SPOFU.
Сохранять SPOFU имеет смысл только в случае о-о-чень большого наполнения всегда актуальным содержимым (из-за потери времени на построение индекса), и то спорно. Я создаю SPOFU незаметно для юзера, без лишнего ожидания.
Содержимое актуально, поскольку оно изменяется, возможно в далеком будущем понадобится удаление spofu, в связи изменением дизайна, тогда и добавим.
Что-же это за аппликуха такая, где view открываются случайно по умолчанию?! :) Вы управляете приложением, или оно Вами??
А "С Queryopen плохая идея"(с) - это-ж для решения Вашей хотелки. Я так не делаю ;) . Но работать оно будет.
Не понимаю вашего сарказма, вы не терпите возражений, по какой причине? Тем не менее, учет исключений никто не отменял.

Создайте private view на picklistcollection, так что бы ваша "апликуха" вами не управляла, представьте демонстрацию в виде кода или как-то еще, тогда и поговорим. А то у меня ощущение, что мы говорим о разных функционалах, для разных задач.
 
Мы в соцсетях:

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