Автооткрытие формы при старте базы

Тема в разделе "Lotus - Программирование", создана пользователем SparkLone, 13 фев 2008.

  1. SparkLone

    SparkLone Гость

    Доброго,
    Необходимо реализовать следующую логику: админ патчит мейловую базу пользователя, в первый запуск мейловой базой у пользователя должна открыться форма (там будет текст указывающий как проинсталлировать нужные компоненты и прочие лицензионные соглашения). При следующем открытии форма уже открываться не должна.
    Вопроса 2:

    1) Как сделать автооткрытие формы при старте базы.
    Я рыл в сторону Other -> Database resources -> Database script -> Postopen. По идее идеальное место, MessageBox срабатывает, но как вот открыть документ..
    Код (Text):
        Dim workspace As New NotesUIWorkspace
    Call workspace.ComposeDocument( "", "", "InstallForm" )
    Этот код не сработал.. Как я понимаю потому что на момент старта базы не до конца все что надо инициализировано. Я что то делал не так, или нужно вообще по другому действовать (из другого места стартовать)?

    2) Где хранить состояние, была ли уже открыта база после патчинга или нет. Обычно все подобные данные требуются в формах и хранятся в скрытых полях. Не знаю сейчас тот же случай или по уму надо делать по другому (к тому что, опять таки будут ли доступны поля во время определения необходимости открытия формы).

    Был бы благодарен за советы, особенно подкрепленные сорцами )
     
  2. Kee_Keekkenen

    Kee_Keekkenen Well-Known Member

    Регистрация:
    5 сен 2006
    Сообщения:
    616
    Симпатии:
    4
    1.
    Код (Text):
       
    Dim ws As New NotesUIWorkspace
    Dim doc As New NotesDocument(source.Database)
    Call doc.ReplaceItemValue("Form","InstallForm")
    Call ws.EditDocument(True, doc,False)
    2. там же где хранятся все настройки в профайле с именем CalendarProfile
     
  3. SparkLone

    SparkLone Гость

    Kee_Keekkenen
    Спасибо, но не совсем то, что нужно.. При открытии базы основным документом остается мейловая база, а хотелось бы чтобы активным становился InstallForm. Ибо работа с мейловой базой без установки компонентов из InstallForm по сути бессмысленна..
     
  4. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Для: SparkLone
    Прописать инструкцию в "About Database".
     
  5. SparkLone

    SparkLone Гость

    -дубликат-
     
  6. SparkLone

    SparkLone Гость

    Medevic
    Не думаю, что мне позволят изменять стандартный about..
    К тому же база то будет для пользователя не вновь, следовательно эта опция не сработает:
    Show "About database" document when database is opened for first time
    С данной опцией тоже что то не вышло, хотя утверждать, что способ не рабочий не буду..
    Show "About database" document when database is modified

    В идеале все таки чтобы открывалось "левое" окошко, больше шансов что не перезатрешь что нибудь важное или оставленное каким другими плагинами..
     
  7. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Для: SparkLone
    А просто письмо послать? Что-то типа приветствия. Как в аутлуке.
     
  8. SparkLone

    SparkLone Гость

    Medevic
    Думали, но отказались. Письмо можно удалить до просмотра, не получить почту при первом запуске, а так гарантировано, что после патчинга базы - юзер схлопочет диалог по установке доп. компонентов.

    Неужели нельзя заставить работать ComposeDocument из PostOpen?
     
  9. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Предлагаю такой вариант. Отдельная база, которая будет делать рассылки. Также в этой базе будут содержаться пометки (отдельные документы с именем пользователя).
    Пользователям идёт рассылка. Документ с формой. На форме инструкция и кнопка. Можно еще таймер замутить, чтобы сразу не жали. Как пользователь нажимает на кнопку, так в отдельной базе создается документ с его именем. И рассылка на него прекращается. Иначе рассылка будет повторена до полной победы. :)
     
  10. SparkLone

    SparkLone Гость

    Medevic
    Круто.. ))
    Скажу честно - хоть вариант и интересен, и даже очень, маловероятно что мне позволят мутить такую систему. А где кстати предлагается создавать новую базу, в смысле я может чего не понимаю, но она должна принадлежат ьпользователю, или как?

    Неужели нельзя малой кровью? (
     
  11. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Для: SparkLone
    База на сервере.

    <!--QuoteBegin-SparkLone+14:02:2008, 14:12 -->
    <span class="vbquote">(SparkLone @ 14:02:2008, 14:12 )</span><!--QuoteEBegin-->Неужели нельзя малой кровью? (
    [snapback]98104" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    Можно, конечно. Просто лично мне не нравится вариант с изменением почтовой базы.

    Тебе, наверное, лучше page открыть вместо создания лишнего документа. NotesUIWorkspace.OpenPage.
    Делаешь Page, там кнопку. Которая в профиль запишет значение.
    В Postopen проверяешь значение в профиле и открываешь или не открываешь страницу.
     
  12. SparkLone

    SparkLone Гость

    Medevic
    На сервере, и как я понимаю все это будет ездить на агентах, т.е. один рассылает, второй смотрит если письмо забрано и в течении часа не пришел овтет - отсылаем еще раз.. Ну, в случае чего поковыряюсь. Просто если опыт программирования под Лотус небольшой, то опыт админства вообще нулевой, ибо программировал только под клиент )

    А базу в любом случае менять прийдется.. Меняется сам механизм отправки писем, вот в чем дело..

    Ну можно было бы по идее и так, но ситуация та же что и с ComposeDocument..
    Пишет "Page 'InstallForm' does not exist"
    Это происходит при действительно первой загрузке базы, что самое печальное.. Если после этого не закрывая клиент закрыть базу и вновь ее открыть - все рабоатет.
     
  13. SparkLone

    SparkLone Гость

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

    Ну да не суть, смог запустить столь желанный ComposeDocument. Хитрость была в том, что надо было все таки указывать сервер/путь к базе.. Печально, это уже накладные расходы по патчингу и уменьшение стабильности системы, вдруг ту же базу пропатчишь а база переедет или еще чего, маловероятно но и все же.
    Но. Главное в том, что точно так же сначала открывается нужный мне документ а затем уже мейловая база, становясь активной, мне же надо, чтобы моя форма после запуска базы была активной, а не основная мейловская.. (
    Опять таки, может есть способ обойти проблему?..
     
  14. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Вот примерно такой код можно забубенить на PostOpen базы
    Код (Text):
    dim db as notesdatabase
    Set db = Source.database

    dim profile as notesdocument
    set profile = db.getprofiledocument("superprofile")

    if profile.getitemvalue("processed")(0) <> "1" then
    dim dlgDoc as notesdocument
    Set dlgDoc = db.createdocument
    dim ws as new Notesuiworkspace
    if ws.DilaogBox(параметров не помню) then
    Call profile.replaceitemvalue("processed", "1")
    Call profile.save(true, false)
    esle
    Call Source.Close
    end if
    end if
    Компилировано в голове, так что могут быть ошибки.
     
  15. SparkLone

    SparkLone Гость

    Для: Omh
    Отличное решение! )

    Я правильно понимаю, что название superprofile выбрано случайным образом, и если профайла не существовало, он просто создастся?
     
  16. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Для: SparkLone
    Ну это как тебе надо, я выбрал такое название, т.к. не знаю, как зовётся профайл у тебя.
    Тебе скорее всего надо будет
    Код (Text):
    set profile = db.getprofiledocument(PROFILE_NAME, session.UserName)
     
  17. SparkLone

    SparkLone Гость

    Для: Omh
    Просто раньше никогда не работал с профайлами, я правильно понимаю, что профайлы никак не посмотреть в дизайнере и они бывают двух видов:
    1) завязанные за конкретной формой, доступ идет по уникальной добавке, обычно тот же session.UserName
    2) 1 на всю базу данных.

    В моем случае 100% будет форма пусть называться будет SparkInstallComponents, в ней будут файлы приложенные, может еще чего, я так понимаю - надо будет делать доступ так:
    Код (Text):
    set profile = db.getprofiledocument("SparkInstallComponents", session.UserName)
    И это будет гарантировать выполнение требований. Пример: есть 3 пользователя лотуса и 1 комп, сначала логинится 1й, работает с базой, потом 2й, потом третий. Гарантируется, что код
    Код (Text):
    profile.getitemvalue("WasInstalled")(0) <> "1"
    для каждого покажет TRUE.

    Все так, или я где то наврал?
     
  18. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Для: SparkLone
    Ну если каждый со своим ID, то ты прав.
     
  19. SparkLone

    SparkLone Гость

    Для: Omh
    Ок, меня просто волновал больше всего вопрос - надо завязывать имя профайла за существующей формой, или она на автомате создастся.. Точнее профайл вроде как даже создается на автомате (при отладке кода с superprofile'ом обнаружил), просто интересовало какой подход более правильный.
    Может профайл без формы плохо, а может пихать данные в профайл который завязан на непустую форму - плохо..
     
  20. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Для: SparkLone
    Профайл без формы, это нормально.
    логично даже :)
     
Загрузка...
Похожие Темы - Автооткрытие формы при
  1. Desten
    Ответов:
    3
    Просмотров:
    82
  2. Fleerka
    Ответов:
    25
    Просмотров:
    533
  3. areostar
    Ответов:
    0
    Просмотров:
    359
  4. Ruska132
    Ответов:
    21
    Просмотров:
    1.313
  5. motogarri
    Ответов:
    4
    Просмотров:
    794

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