17.03.2011, 10:45 | #1 |
Участник
|
передача параметров c класса в Report
Добрый день,
помогите новичку - сделал класс,форму для запроса параметров отчета, сделал отчет,а вот проблема с передачей параметра из класса в отчет. Что делаю, в классе диалог X++: public Object dialog(Object _dialog) { ........................... dlgTotal =dialog.addFieldValue(typeid(NoYes),total,"Not departured"); return dialog; } public boolean getFromDialog() { boolean ret; ; ret = super(); if (ret) { ........................ total = dlgTotal.value(); ......................... } return true; } X++: void getRangeValues() { QueryBuildDataSource qbds = this.queryRun().query().dataSourceNo(1); ; rv1 = qbds.findRange(fieldNum(...........)).value(); rv2 = qbds.findRange(fieldNum(..........)).value(); if (total == NoYes::Yes) rv3 = qbds.addRange(fieldNum(............)).value("2"); X++: public boolean fetch() { boolean ret; QueryBuildDataSource qbds; this.getRangeValues(); ret = super(); qbds = this.query().dataSourceNo(1); return ret; } |
|
17.03.2011, 10:56 | #2 |
северный Будда
|
гм... а в каком месте вы пармите отчёт переменной total? Или вы этого не делаете вовсе (и тогда понятно что на неё нет никакой реакции), или приведите код передачи значения. Вообще логично это делать на перекрытом методе init отчёта. Но не обязательно.
__________________
С уважением, Вячеслав |
|
17.03.2011, 10:58 | #3 |
Участник
|
Параметры передаются с помощью класса args. Его в качестве параметра надо принять в методе init. Из класса args можно вытянуть вызывающий класс args.caller(). А из вызывающего класса вытянуть нужные параметры....
|
|
17.03.2011, 10:59 | #4 |
Участник
|
Так вы и не пытаетесь его передавать.
1. В классе создайте метод, который возвращает значение переменной. X++: NoYes parmTotal()
{
return total;
} 3. получите значение переменной путем вызова parm метода класса. |
|
17.03.2011, 11:04 | #5 |
Участник
|
создал в классе метод,как его передать в очет не знаю
X++: NoYes parmByTotal(NoYes _Total = Total)
{;
Total = _Total;
return Total;
} |
|
17.03.2011, 11:13 | #6 |
Участник
|
Посмотрите, например, отчет SalesPurchInvoice4Paym_RU
в ClassDeclaration объявлена переменная: SalesPurchReport_RU salesPurchReport; в методе Init она инициализируется с предварительной проверкой вызывающего объекта. Ну а далее в разных местах есть вызовы методов данного класса. |
|
17.03.2011, 11:18 | #7 |
MCP
|
Посмотрите здесь. Обсуждался практически ваш вопрос
|
|
17.03.2011, 11:46 | #8 |
Участник
|
как я понял необходимо использовать
element.args().caller |
|
17.03.2011, 11:49 | #9 |
MCP
|
Caller это тот кто вызвал отчет, ваш отчет вызывается классом, соответственно element.args().caller() - это будет ваш класс, из которого вы можете получить любой параметр.
Из того же примера: X++: fromDate = element.Args().caller().FromDate(); |
|
17.03.2011, 11:54 | #10 |
Участник
|
Объявляете переменную с типом вашего класса:
SomeClass caller; Инициализируете ее: caller = element.args().caller(); вызываете метод класса: total = caller.parmByTotal(); |
|
17.03.2011, 12:26 | #11 |
Участник
|
спасибо за помощь, разобрался
|
|