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

Тема в разделе "Lotus - Программирование", создана пользователем Masha, 8 дек 2010.

  1. Masha

    Masha Гость

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

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

    Kizarek86 Lotus team
    Lotus team

    Регистрация:
    20 июл 2007
    Сообщения:
    857
    Симпатии:
    5
    Зачем Action?
    Выбирайте объект как обычно, в окне выбора элемента можно выбрать любую базу.
     
  3. Masha

    Masha Гость

    Что-то я не поняла ответа :(

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

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

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Может кто предложит и получше, но можно попробовать сделать так:

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

    BullDog Гость

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

    VladSh начинающий
    Lotus team

    Регистрация:
    11 дек 2009
    Сообщения:
    1.251
    Симпатии:
    2
    А чтобы без "имя_фрэймсета_текущей_базы_с_фрэймсетом_из_архивной_базы"?
    Сделал Action с вызовом агента, в котором формируется url и запускается с помощью nuiws.UrlOpen, но фреймсет всегда открывается в новой вкладке (хотелось бы в правом фрейме). SetTargetFrame не работает.
    У кого-нибудь получилось такое?

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

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.052
    Симпатии:
    146
    хм.. Если базы каждый месяц создаются новые...
    Лучше хранить пути к базам в документе-настройке.
    По клику в OutlineEntry открывать страницу или форму.
    В этой форме уже ссылки на базы, Hot-spot's или прямыми ссылками.

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

    VladSh начинающий
    Lotus team

    Регистрация:
    11 дек 2009
    Сообщения:
    1.251
    Симпатии:
    2
    Думаю, у всех оно так. У меня же ещё и в профайлах, для скорости доступа.

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

    Сделал форму, выбрал в свойствах "автоматом запускать URL", а где его прописывать, этот URL? Форма открывается, но ничего, естественно, не происходит ((
     
  9. savl

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.052
    Симпатии:
    146
    я не так объяснил.
    Создаешь в форму, в форме необходимые поля для определения архивов, реплики, пути или ключевые слова. Формируешь поля для ссылок или хот-спотов, но все равно полной динамики не получишь...

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

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

    VladSh начинающий
    Lotus team

    Регистрация:
    11 дек 2009
    Сообщения:
    1.251
    Симпатии:
    2
    Сложность в том, что записать параметры в notes.ini можно при щелчке по позиции аутлайна, но тогда, выходит, ограничиваемся только типом Action, при котором поле Frame дизаблится, т.е. приходим к тому, что все фреймсеты будут открываться новых вкладках, что не подходит. Выхода из этой ситуации не вижу.
     
  11. savl

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.052
    Симпатии:
    146
    По логике архив стоит открывать именно в новом окне.
    ws.SetTargetFrame тоже еще не отменяли.
    в агенте делаешь ws.SetTargetFrame и пробуешь открыть
    Call notesUIWorkspace.OpenDatabase( server$, file$, view$, key$, newInstance, temp )
    newInstance = false, это главное.
     
  12. VladSh

    VladSh начинающий
    Lotus team

    Регистрация:
    11 дек 2009
    Сообщения:
    1.251
    Симпатии:
    2
    savl
    В агенте всегда фреймсет открывается в "новом окне" (вкладке). Сложность была как раз в открытии в указанном фрейме уже открытого (текущего) фреймсета.

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

Поделиться этой страницей