Показать сообщение отдельно
Старый 25.06.2002, 19:34   #2  
SSA is offline
SSA
Участник
 
20 / 12 (1) ++
Регистрация: 21.06.2002
Адрес: Балашиха
Так запускать отчет не совсем верно (написано в кратком описании языка).

Попробуй один из следующих способов
1. Через MenuItem
PHP код:
Args = New Args();
args.caller(<параметр>); // типа this, element
args.parmEnum(<Enum параметр>);
args record(<Таблица>);
...
new 
MenuFunction("<Имя отчета>"MenuItemType::<тип MenuItem>).run(args);// Тип Display, Output, Action 
2. Через класс classFactory
PHP код:
ReportRun reportRun;
args = new args();
;
args.caller(<Параметр>); // типа this, element (тип параметра object)
args.name(reportstr(MyReport));
args.parmEnum(<Enum параметр>);
...
reportRun ClassFactory.ReportRunClass(args);
reportRun.init(;
reportRun.Run(); 
3. Создать класс наследник от RunBaseReport
3.1 Перекрыть метод lastValueElementName(). Этот меод должен возвращать имя отчета
3.2 Перекрыть метод Dialog(). Если используешь форму, то он должен выглядеть так

PHP код:
public object Dialog()
{
    
Args            parameters = new Args();
    
FormRun         formRun;

    ;
    
parameters.caller(this);
    
parameters.name(formstr(MyForm));
    
parameters.parmEnum(this.ParmEnum()); // параметр в форму
    
formRun classFactory.formRunClass(parameters);

    return 
formRun;

3.3 Если не будет пакетной обработки, тогда перекрой метод CanGoBatch() он должен вернуть False (return False) и все
3.4 Создать метод static void main(args args). Пример ниже

PHP код:
static void Main(Args args)
{
    
MyRunBaseКeport       report// MyRunBaseReport класс наследник RunBaseReport
    
;
    
Report =new MyRunBaseReport();

    
report.initParmDefault();
    if (
report.prompt())
        
report.run();

В качестве параметра в отчет уйдет класс MyRunBaseReport
Сначала должен запускаться Класс MyRunBaseReport, а из класса запускается форма

Класс RunBaseReport наследуется от RunBaseBatch который наследуется от RunBase все дополнительные возможности класса смотри в "Описание класса RunBase" на этом сайте.


Как достать параметры
перекрыть метод init() у отчета
element.args().caller(); вернет то, что переслали в caller() при вызове отчета
т.е. В 3 методе вернется класс MyRunBaseReport.
в этом объекте (который ушел в caller()) создаешь методы которые будут возвращать нужные параметры...
А вызвать эти методы можно так
PHP код:
fromDate element.Args().caller().FromDate(); 
PHP код:
public void init()
{
    ;
    
super();


    
report element.args().caller(); // если в качестве параметра ушел класс так удобнее
    
fromDate report.FromDate();
...

__________________
Сергей
За это сообщение автора поблагодарили: alex55 (1).