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

Cleric-Lviv

Well-known member
03.01.2008
603
0
BIT
6
всем привет:)
задача следующая.
нахожусь в базе А. с бази А делаю следующую процедуру: даю команду о создании документа Х в базе Б. Когда я создал документ нужно запустить библиотеку которая находится в базе Б.
Вопрос как ето сделать?
 
K

K-Fire

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

nvyush

всем привет:(
задача следующая.
нахожусь в базе А. с бази А делаю следующую процедуру: даю команду о создании документа Х в базе Б. Когда я создал документ нужно запустить библиотеку которая находится в базе Б.
Вопрос как ето сделать?

В базе Б создать агента и вызывать его?
 

Cleric-Lviv

Well-known member
03.01.2008
603
0
BIT
6
K-Fire
ну не придирайся :(

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

nvyush

Set agent = db.GetAgent("Agent name")
call agent.Run(NoteID)
 

Cleric-Lviv

Well-known member
03.01.2008
603
0
BIT
6
хе-хе а NoteID документа мне не дает так как документ еще не сохранен......как из такой ситуации вибратся?

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

hosm

1 вариант - сохранить документ.
2 вариант - не сохраняя, задать документу форму, открыть документ в УИ и выполнить нужный код, например, на PostOpen.
 

ToxaRat

Чёрный маг
Green Team
06.11.2007
3 332
42
BIT
0
Запускать библиотеки нельзя, они не запускаются
вообще-то можно ;)
но хитро ;)


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

Omh

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

Cleric-Lviv

Well-known member
03.01.2008
603
0
BIT
6
OKEN
второй вариант какби подходит;) буду провать разние варианти. пока спасибо за совети бум провать
 
T

TIA

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

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

ABarmin

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

ABarmin

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

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

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

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

nvyush

ЗЫ: Во всех БД-привязанных командах (типа @dblookup) жестко прописывал БД.
Дурной тон так делать. Лучше в настроечных документах пути к базам прописывать, а то потом сопровождать замучаетесь.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!