Ладно, поостыл немного... Т.к. данный ресус предназначен не только для филосовских изысканий, ругани и издевательств над башколовами, но и для того, чтобы поделиться опытом, вот маленький пример:
На основной форме при каком-то событии (например, при переходе на определенный tab) должна открываться дополнительная форма. Пример... пожалуй, на EmplTable - люблю её использовать для примеров и экспериментов... ничего важного на тестовой базе не прибъешь
1) Правим подчиненную форму, которая используется для вывода дополнительной информации.
1.1. В init е после удачной инициализации устанавливаем глобальную переменную:
PHP код:
public void init()
{
SysGlobalCache globalCache;
;
globalCache = classFactory.globalCache();
// какая - либо инициализация. допустим, выбираем сотрудника,
// к которому относиться подчиненная форма. (у которой есть
// переменная типа EmplTable)
if (element.args().dataset() == tablenum(EmplTable))
{
emplTable = element.args().record();
}
else
{
select firstfast firstonly RecId,EmplId
from emplTable
where emplTable.UserId == curuserid();
}
if (emplTable.RecId == 0)
throw error(strfmt("@SYS25516",element.name()));
super();
// если все нормально, то ставим некоторую переменную в true
globalCache.set(formstr(EmplTable), 1, 1);
}
1.2 Не забываем сбросить её по закрытию формы.
PHP код:
public void close()
{
SysGlobalCache globalCache;
;
globalCache.set(formstr(EmplTable), 1, 0);
}
Теперь на основной форме при вызове подчиненной осуществляем проверку
PHP код:
public void pageActivated()
{
Args args = new Args();
FormRun formRun;
SysGlobalCache globalCache;
int ret;
;
globalCache = classFactory.globalCache();
ret = globalCache.get(formstr(EmplTable), 1, 0);
if (emplTable.EmplId)
{
args.name(formStr(Имя_Дополнительной_Формы));
args.record(emplTable);
formRun = classFactory.formRunClass(args);
if(formRun && ret == 0)
{
formRun.init();
formRun.run();
formRun.wait();
}
}
}
Поправьте, плиз, если чего не так: писалось на скорую руку, правда по мотивам основной модификации.
Удачи!