Так запускать отчет не совсем верно (написано в кратком описании языка).
Попробуй один из следующих способов
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();
...
}