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

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

  1. Cleric-Lviv

    Cleric-Lviv Lotus team
    Lotus team

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

    K-Fire Гость

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

    nvyush Lotus team
    Lotus team

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

    Omh Lotus team
    Lotus team

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

    Cleric-Lviv Lotus team
    Lotus team

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

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

    nvyush Lotus team
    Lotus team

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

    Cleric-Lviv Lotus team
    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 Lotus team
    Lotus team

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

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

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


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

    Omh Lotus team
    Lotus team

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

    Cleric-Lviv Lotus team
    Lotus team

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

    TIA :-)
    Lotus team

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

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

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.046
    Симпатии:
    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 Lotus team
    Lotus team

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

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