08.09.2011, 13:09 | #1 |
Участник
|
args().caller()...
Существует форма (без ДС) запускающая репорт.
Как узнать, что репорт был запущен именно из этой формы, т.к. на этой форме есть метод который возвращает табличный буфер. |
|
08.09.2011, 13:20 | #2 |
Участник
|
if (SysTest::hasMethod(object, "myMethod"))
{ ... }
__________________
aLL woRk aNd nO JoY MAKes jAck a dULL Boy |
|
08.09.2011, 13:20 | #3 |
Участник
|
args().caller().name() == formstr(НазваниеФормы)
|
|
08.09.2011, 13:22 | #4 |
Участник
|
Извините за беспокойство, ответ нашелся на форуме
Object obj = _args.caller() ; ; if (obj && classidget(obj) == classNum(sysSetupFormRun) && obj.name() == formstr(<YourForm>)) { } |
|
|
За это сообщение автора поблагодарили: mazzy (2). |
08.09.2011, 13:28 | #5 |
Участник
|
Можно при помощи SysDictClass.hasObjectMethod перед вызовом метода проверять есть ли он у данного объекта. Тогда отчёт можно будет вызывать и из других мест при условии если там также реализован необходимый метод
|
|
|
За это сообщение автора поблагодарили: Caramba (1). |
08.09.2011, 20:37 | #6 |
Участник
|
Лучше задуматься над тем, для чего в отчет тянуть табличный буфер из формы, у которой даже нет datasource'а, для чего вообще нужна тогда эта форма? Если только для ввода дополнительных параметров выполнения отчета, то можно сделать отчет интерактивным и реализовать на нем вывод диалога для ввода параметров.
|
|
08.09.2011, 20:53 | #7 |
Участник
|
SysDictClass в общем случае не позволит узнать о существовании метода на форме (за исключением методов, реализованных в классе SysSetupFormRun), для форм есть специально обученный метод Form::formRunHasMethod() и обертка для него - Global::formHasMethod(). Вообще же, по-моему, если хочется гибкости во взаимодействии с вызывающими объектами, то предпочтительнее работать через какой-нить интерфейс, тогда будут проверяться сигнатуры методов целиком, а не просто их название, причем еще на этапе компиляции тех классов, которые реализуют интерфейс. Но и тут с формами засада: хотя для них и можно указать, что якобы они реализуют тот или иной интерфейс, однако, и компилятор это никак не проверяет, и SysDictClass не способен во время выполнения это определить.
|
|
|
За это сообщение автора поблагодарили: Pustik (2), S.Kuskov (3), Caramba (1). |
09.09.2011, 11:37 | #8 |
Участник
|
Цитата:
Необходимо переопределять лукап-медод, в котором условие меняются А как это делается не знаю |
|