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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 20.04.2008, 14:00   #1  
tolstjak is offline
tolstjak
Участник
 
440 / 16 (1) ++
Регистрация: 05.01.2003
Передача параметров запроса из CurrentList
Здравствуйте уважаемые.

Надо реализовать следующую задачу.
Запрос "ОСВ в разрезе аналитики".
Его необходимо изменить таким образом, чтобы при выставлении галочки "С начала года" - NewYear запрос выводил начальное сальдо только с начала года.
Имеющиеся данные: класс А - формирует форму параметров отчета, запоминает параметры в макросе CurrentList. В том числе галку называется - NewYear.
Другой класс В ( не наследник) формирует запрос для вывода данных.
Необходимо в методе этого класса В сделать проверку, если NewYear = true, то выводить начально сальдо только с начала года, в противном случае все.

Не могу додуматься - как правильно передать значение NewYear в другой класс.


Заранее благодарен.
__________________
Александр
Старый 20.04.2008, 23:26   #2  
IvanOFF is offline
IvanOFF
MCTS
MCBMSS
 
65 / 87 (3) ++++
Регистрация: 22.09.2005
Адрес: Москва
Написать в классе B метод доступа parmNewYear():

X++:
boolean parmNewYear(boolean _newYear = newYear)
{
    ;
    newYear = _newYear;
    return newYear;
}
И вызвать этот метод из класса A, передав ему параметр:

X++:
B.parmNewYear(newYear);
За это сообщение автора поблагодарили: tolstjak (1).
Старый 21.04.2008, 09:56   #3  
Peter Savintsev is offline
Peter Savintsev
Участник
 
246 / 119 (4) +++++
Регистрация: 14.12.2001
Можно сделать так, как советует IvanOFF. Но если передаваемых параметров много, то для каждого придется делать и вызывать метод parm*. Если класс А выполняется на клиенте, а класс В - на сервере (как это обычно и делается), то будет много клиент-серверных вызовов, что негативно скажется на производительности. Поэтому лучше делать следующим способом.

В classDeclaration класса А объявляете макрос (например, CurrentList) со списокм параметров (этот же макрос можно использовать для pack/unpack). Точно такой же макрос объявляете в classDeclaration класса В. Естественно, надо не забыть про объявление самих переменных. Затем в классе В реализуете метод, например setParams, принимающий контейнер. В классе А надо просто вызвать этот метод для передачи параметров.

Пример:
X++:
class A extends RunBase
{
    int myVar;
    NoYes newYear;

    #localmacro.CurrentList
        myVar,
        newYear
    #endmacro
}

void run()
{
    B b = new B();
    ...
    
    b.setParams(#CurrentList);
}
X++:
class B
{
    int myVar;
    NoYes newYear;

    #localmacro.CurrentList
        myVar,
        newYear
    #endmacro
}

void setParams(container _params)
{
    [#CurrentList] = _params;
}
Еще правильнее передавать список параметров при создании экземпляра класса B, т.е. в методе new.
Старый 21.04.2008, 09:56   #4  
tolstjak is offline
tolstjak
Участник
 
440 / 16 (1) ++
Регистрация: 05.01.2003
Все получилось.
Большое спасибо всем ответившим.
__________________
Александр
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Передача переменного числа параметров в метод lemchey_white DAX: Программирование 16 14.12.2009 21:21
передача параметров в запрос while select tolstjak DAX: Программирование 13 15.02.2009 19:39
Пользовательские настройки: не отвязать таблицу в форме параметров запроса Gustav DAX: Функционал 6 23.06.2006 12:17
Передача параметров Vpooh DAX: Программирование 2 21.10.2003 13:43
передача параметров в Report eugene egorov DAX: Программирование 1 25.06.2002 19:34

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

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

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