визов библиотеки

Тема в разделе "Lotus - Программирование", создана пользователем Cleric-Lviv, 12 окт 2009.

Наш партнер Genesis Hackspace
  1. Cleric-Lviv

    Cleric-Lviv Well-Known Member
    Lotus team

    Регистрация:
    3 янв 2008
    Сообщения:
    605
    Симпатии:
    0
    всем привет:)
    задача следующая.
    нахожусь в базе А. с бази А делаю следующую процедуру: даю команду о создании документа Х в базе Б. Когда я создал документ нужно запустить библиотеку которая находится в базе Б.
    Вопрос как ето сделать?
     
  2. K-Fire

    K-Fire Гость

    Запускать библиотеки нельзя, они не запускаются :)
     
  3. nvyush

    nvyush Well-Known Member
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    В базе Б создать агента и вызывать его?
     
  4. Omh

    Omh Well-Known Member
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Указав ему в качестве параметра NoteID свежесозданного документа.
     
  5. Cleric-Lviv

    Cleric-Lviv Well-Known Member
    Lotus team

    Регистрация:
    3 янв 2008
    Сообщения:
    605
    Симпатии:
    0
    K-Fire
    ну не придирайся :(

    Omh
    как скриптом запустить агента из другой бази? можно пример? там используется команда из администратора? чтото типу
    tell amgr run "назва бази" 'имя агента'
     
  6. nvyush

    nvyush Well-Known Member
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Set agent = db.GetAgent("Agent name")
    call agent.Run(NoteID)
     
  7. Cleric-Lviv

    Cleric-Lviv Well-Known Member
    Lotus team

    Регистрация:
    3 янв 2008
    Сообщения:
    605
    Симпатии:
    0
    хе-хе а NoteID документа мне не дает так как документ еще не сохранен......как из такой ситуации вибратся?

    EnvelopeID=dstdoc.NoteID --- тут "0"
    Set agent = db.GetAgent("Agent name")
    call agent.Run(EnvelopeID)
     
  8. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    1 вариант - сохранить документ.
    2 вариант - не сохраняя, задать документу форму, открыть документ в УИ и выполнить нужный код, например, на PostOpen.
     
  9. Omh

    Omh Well-Known Member
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Сохранить, не?
     
  10. ToxaRat

    ToxaRat Чёрный маг
    Lotus team

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.062
    Симпатии:
    18
    вообще-то можно ;)
    но хитро ;)


    ко всему прочему что я сказал тебе по аське есть еще один чумовой вариант ;)
    в той сторонней базе сделай обычный док с обычными полями и внутрь него забей всю библиотеку
    тогда из любой другой базы ты сможешь через execute(код в виде стринга из той базы) использовать любые её функции ;)
     
  11. Omh

    Omh Well-Known Member
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Потом это суппортить - застрелиться.
    Особенно, если ты слиняешь на более высокооплачиваемую работу ;)
     
  12. Cleric-Lviv

    Cleric-Lviv Well-Known Member
    Lotus team

    Регистрация:
    3 янв 2008
    Сообщения:
    605
    Симпатии:
    0
    OKEN
    второй вариант какби подходит;) буду провать разние варианти. пока спасибо за совети бум провать
     
  13. TIA

    TIA :-)
    Lotus team

    Регистрация:
    15 май 2009
    Сообщения:
    790
    Симпатии:
    1
    Есть существенное различие -- контекст выполнения скрипта. Скажем, NotesSession.CurrentDatabase будет уже другим, нежели при выполнении в самой БД "Б". Ежели код не чувствителен к контексту БД, тогда можно напрямую получать ноту библиотеки и экзекутить то что в $ScriptLib (ессно код д.б. открыт).
    Плюс подхода экзекута в том же модуле, что и создал документ -- не обязательно сохранять новый документ, если его объект передавать через public-переменную.
     
  14. ToxaRat

    ToxaRat Чёрный маг
    Lotus team

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.062
    Симпатии:
    18
    TIA
    во, есть те кто меня понимать :eek:
     
  15. ABarmin

    ABarmin Гость

    А приведите пример кода, как это использовать, пожалуйста.
     
  16. ABarmin

    ABarmin Гость

    Напишу в теме краткое решение проблемы, которое мне помогло.

    0. Забыкапился, а то мало ли
    1. Создал дополнительную БД и в Script Lib скопировал все библиотеки скриптов
    2. В свойствах БД указал, что она является шаблоном
    3. Выбираю нужный скрипт, копирую его в буфер обмена (прямо в дереве объектов выбираю) и вставляю в Script Libraries в нужной БД. Система спрашивает, синхронизировать библиотеки - отвечаю Да.
    4. Делаю Refresh Design у нужной БД - скопированные скрипты синхронизируются.

    Теперь все скрипты в одной БД и решается проблема с вызовом функций.

    ЗЫ: Во всех БД-привязанных командах (типа @dblookup) жестко прописывал БД.
     
  17. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    может Вы имели в виду "наследовать" ?
     
  18. ABarmin

    ABarmin Гость

    Угу. Короче, надо "Да" ответить :)
     
  19. nvyush

    nvyush Well-Known Member
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Дурной тон так делать. Лучше в настроечных документах пути к базам прописывать, а то потом сопровождать замучаетесь.
     
Загрузка...

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