Как отобразить во фрейме фреймсет из другой базы?

  • Автор темы Masha
  • Дата начала
M

Masha

#1
Добрый день!
Есть база, при открытии которой открывается фреймсет с двумя фреймами. В левом - аутлайн, в правом - отображаются виды.
Нужно сделать так, чтобы при нажатии на Outline Entry (с типом Action) в правом фрейме открывался фреймсет из другой базы.
Использую Action, так как нужно сразу выбрать из списка баз базу, в которой лежит нужный фреймсет.
Что-то не могу найти таких команд. Можно только открыть фреймсет текущей базы.

Есть какие-нибудь варианты решения?
 

Kizarek86

Lotus team
20.07.2007
864
4
#2
Зачем Action?
Выбирайте объект как обычно, в окне выбора элемента можно выбрать любую базу.
 
M

Masha

#3
Зачем Action?
Выбирайте объект как обычно, в окне выбора элемента можно выбрать любую базу.
Что-то я не поняла ответа :(

У меня есть Outline Entry с названием "Все архивы базы".
Пользователю при нажатии на этот Outline Entry должно быть показано окошко со всеми архивными базами и он должен выбрать, какую базу он хочет посмотреть (базы создаются автоматически каждый месяц).
После этого в правом фрейме должен быть показан фреймсет из архивной базы (с видом из этой же архивной базы).

Как это можно реализовать?
 

nvyush

Lotus team
22.04.2009
2 317
0
#4
Может кто предложит и получше, но можно попробовать сделать так:

Создаём фрэймсет с одним фрэймом, Type = Named Element (Frameset), Value = Computed ("Framset"/ @GetProfileField(Имя_профиля_пользователя; Имя_поля_с_именем_архивной_базы; @Name([CN]; @Username)) / Имя_фрэймсета_в_архивной_базе — открывается нажатием на @).
В команде аутлайна пишем (после выбора базы):
@SetProfileField(Имя_профиля_пользователя; Имя_поля_с_именем_архивной_базы; @Name([CN]; @Username));
@SetTargetFrame(имя_фрэйма_в_котором_открываем);
@Command([OpenFrameset]; имя_фрэймсета_текущей_базы_с_фрэймсетом_из_архивной_базы);
 
B

BullDog

#5
Если число юзеров под 4000, то профилей может не хватить. - лучше переделать на @Environment.
 

VladSh

начинающий
Lotus team
11.12.2009
1 260
5
#6
А чтобы без "имя_фрэймсета_текущей_базы_с_фрэймсетом_из_архивной_базы"?
Сделал Action с вызовом агента, в котором формируется url и запускается с помощью nuiws.UrlOpen, но фреймсет всегда открывается в новой вкладке (хотелось бы в правом фрейме). SetTargetFrame не работает.
У кого-нибудь получилось такое?

Или может кому-то удалось методами OutlineEntry создать вычисляемый URL? Передаю формулу, но оно её всобачивает как жёсткий url..
 

savl

Lotus team
28.10.2011
2 131
102
#7
хм.. Если базы каждый месяц создаются новые...
Лучше хранить пути к базам в документе-настройке.
По клику в OutlineEntry открывать страницу или форму.
В этой форме уже ссылки на базы, Hot-spot's или прямыми ссылками.

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

VladSh

начинающий
Lotus team
11.12.2009
1 260
5
#8
Лучше хранить пути к базам в документе-настройке.
Думаю, у всех оно так. У меня же ещё и в профайлах, для скорости доступа.

Таким образом пользователь щелкает, видит список наименований архивов и открывает нужный.
Не надо заморачиваться с внешними фреймами, все внутри. Главное пути к архивам прописывать во время.
Мой вопрос не про архивы. Тема общая, не хотел осздавать ещё одну.
Задача - делать аутлайны, в которых URL можно было бы формировать динамически, с формулами определения пути к БД. Главное, чтобы жёсткие ссылки с указанием БД или Replicaid туда не пихать. И чтобы была возможность указывать (опять же программно), в каком фрейме открывать (_new или в каком-то другом).
Пробовал декодировать OutlineEntry из Base64 на Java, но похоже что там какой-то модифицированный Base64, т.к. ничего не декодировалось. - текст на английском, перемежающийся квадратиками.
Пробовал записывать URL (писал выше), но формула перевращается в "просто текст", и при щелчке на позиции аутлайна естественно вылетает "Invalid URL".

По клику в OutlineEntry открывать страницу или форму.
В этой форме уже ссылки на базы, Hot-spot's или прямыми ссылками.
Сделал форму, выбрал в свойствах "автоматом запускать URL", а где его прописывать, этот URL? Форма открывается, но ничего, естественно, не происходит ((
 

savl

Lotus team
28.10.2011
2 131
102
#9
Сделал форму, выбрал в свойствах "автоматом запускать URL", а где его прописывать, этот URL? Форма открывается, но ничего, естественно, не происходит ((
я не так объяснил.
Создаешь в форму, в форме необходимые поля для определения архивов, реплики, пути или ключевые слова. Формируешь поля для ссылок или хот-спотов, но все равно полной динамики не получишь...

Вообще, на прошлом месте работы было сделано так: (деревья тогда были зеленее...)
Имелась настройка к базе, там все архивы (по ключевым словам, пример "КАДРЫ.Архив 2012", "КАДРЫ.Архив 2011").
На ОутлайнЕнтри вешался агент, который в своем теле открывал Windows Popup menu, со списком этих архивов.
Пользователь кликал на Item menu и открывался архив. Так же в агенте было закрытие UI текущей базы и открытие новой.
Windows Popup menu можно заменить на диалоговое окно с Radio Buttons.
Открылся диалог выбираешь базу и жмешь "ОК"

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

VladSh

начинающий
Lotus team
11.12.2009
1 260
5
#10
Мой вопрос не про архивы. Тема общая, не хотел осздавать ещё одну.
Задача - делать аутлайны, в которых URL можно было бы формировать динамически, с формулами определения пути к БД. Главное, чтобы жёсткие ссылки с указанием БД или Replicaid туда не пихать. И чтобы была возможность указывать (опять же программно), в каком фрейме открывать (_new или в каком-то другом).
Сложность в том, что записать параметры в notes.ini можно при щелчке по позиции аутлайна, но тогда, выходит, ограничиваемся только типом Action, при котором поле Frame дизаблится, т.е. приходим к тому, что все фреймсеты будут открываться новых вкладках, что не подходит. Выхода из этой ситуации не вижу.
 

savl

Lotus team
28.10.2011
2 131
102
#11
Выхода из этой ситуации не вижу
По логике архив стоит открывать именно в новом окне.
ws.SetTargetFrame тоже еще не отменяли.
в агенте делаешь ws.SetTargetFrame и пробуешь открыть
Call notesUIWorkspace.OpenDatabase( server$, file$, view$, key$, newInstance, temp )
newInstance = false, это главное.
 

VladSh

начинающий
Lotus team
11.12.2009
1 260
5
#12
savl
В агенте всегда фреймсет открывается в "новом окне" (вкладке). Сложность была как раз в открытии в указанном фрейме уже открытого (текущего) фреймсета.

to All
Сделал прописыванием урла
Код:
notes:///Replicaid/FramesetName?OpenFrameset
методом OutlineEntry.setURL(String url).
Жаль конечно, что пришлось подставлять фиксированные Replicaid, но в принципе пока сойдёт.
Для открытия в новой вкладке или во фрейм существующего фреймсета использую поле Frame, которое при OutlineEntry.OUTLINE_TYPE_URL доступно для программной записи, и, думаю, что это пока единственный работающий способ управлять этим.