AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 17.03.2011, 10:45   #1  
romanja is offline
romanja
Участник
 
30 / 10 (1) +
Регистрация: 06.01.2011
передача параметров 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;
}
в отчете хочу дабавить условие но параметр total не передается


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");
в конце делаю fetch

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  
pitersky is offline
pitersky
северный Будда
Аватар для pitersky
Ex AND Project
Соотечественники
 
1,510 / 435 (18) +++++++
Регистрация: 26.09.2007
Адрес: Солнечная система
гм... а в каком месте вы пармите отчёт переменной total? Или вы этого не делаете вовсе (и тогда понятно что на неё нет никакой реакции), или приведите код передачи значения. Вообще логично это делать на перекрытом методе init отчёта. Но не обязательно.
__________________
С уважением,
Вячеслав
Старый 17.03.2011, 10:58   #3  
Волчара is offline
Волчара
Участник
 
210 / 29 (1) +++
Регистрация: 08.02.2003
Адрес: Москва
Параметры передаются с помощью класса args. Его в качестве параметра надо принять в методе init. Из класса args можно вытянуть вызывающий класс args.caller(). А из вызывающего класса вытянуть нужные параметры....
__________________
Благодарю за поддержку ИЦ Кариатиду и Koder Logic
Старый 17.03.2011, 10:59   #4  
jonny is offline
jonny
Участник
Аватар для jonny
Самостоятельные клиенты AX
 
217 / 124 (5) +++++
Регистрация: 10.02.2006
Адрес: СПб-Екб-?
Так вы и не пытаетесь его передавать.

1. В классе создайте метод, который возвращает значение переменной.
X++:
NoYes parmTotal()
{
     return total;
}
2. в отчете объявите переменную типа вашего класса, проинициализируйте в методе Init через element.args().caller()
3. получите значение переменной путем вызова parm метода класса.
Старый 17.03.2011, 11:04   #5  
romanja is offline
romanja
Участник
 
30 / 10 (1) +
Регистрация: 06.01.2011
создал в классе метод,как его передать в очет не знаю

X++:
NoYes parmByTotal(NoYes     _Total = Total)
{;
    Total = _Total;

    return Total;
}
Старый 17.03.2011, 11:13   #6  
jonny is offline
jonny
Участник
Аватар для jonny
Самостоятельные клиенты AX
 
217 / 124 (5) +++++
Регистрация: 10.02.2006
Адрес: СПб-Екб-?
Посмотрите, например, отчет SalesPurchInvoice4Paym_RU
в ClassDeclaration объявлена переменная:
SalesPurchReport_RU salesPurchReport;
в методе Init она инициализируется с предварительной проверкой вызывающего объекта. Ну а далее в разных местах есть вызовы методов данного класса.
Старый 17.03.2011, 11:18   #7  
kornix is offline
kornix
MCP
MCBMSS
Злыдни
Ex AND Project
 
414 / 146 (5) +++++
Регистрация: 24.02.2009
Адрес: Санкт-Петербург
Посмотрите здесь. Обсуждался практически ваш вопрос
Старый 17.03.2011, 11:46   #8  
romanja is offline
romanja
Участник
 
30 / 10 (1) +
Регистрация: 06.01.2011
как я понял необходимо использовать
element.args().caller
Старый 17.03.2011, 11:49   #9  
kornix is offline
kornix
MCP
MCBMSS
Злыдни
Ex AND Project
 
414 / 146 (5) +++++
Регистрация: 24.02.2009
Адрес: Санкт-Петербург
Цитата:
Сообщение от romanja Посмотреть сообщение
как я понял необходимо использовать
element.args().caller
Caller это тот кто вызвал отчет, ваш отчет вызывается классом, соответственно element.args().caller() - это будет ваш класс, из которого вы можете получить любой параметр.

Из того же примера:
X++:
fromDate = element.Args().caller().FromDate();
FromDate() - это метод на вызывающем отчет классе, который возвращает дату fromDate
Старый 17.03.2011, 11:54   #10  
jonny is offline
jonny
Участник
Аватар для jonny
Самостоятельные клиенты AX
 
217 / 124 (5) +++++
Регистрация: 10.02.2006
Адрес: СПб-Екб-?
Объявляете переменную с типом вашего класса:
SomeClass caller;

Инициализируете ее:
caller = element.args().caller();

вызываете метод класса:
total = caller.parmByTotal();
Старый 17.03.2011, 12:26   #11  
romanja is offline
romanja
Участник
 
30 / 10 (1) +
Регистрация: 06.01.2011
спасибо за помощь, разобрался
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Передача query в report, проблемы Андрей К. DAX: Программирование 9 26.06.2008 15:38
Передача параметров в форму диалога evv DAX: Программирование 4 03.06.2008 10:35
Передача параметров запроса из CurrentList tolstjak DAX: Программирование 3 21.04.2008 09:56
передача курсора в два класса kitty DAX: Программирование 3 09.08.2006 13:21
передача параметров в Report eugene egorov DAX: Программирование 1 25.06.2002 19:34

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 08:29.