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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 16.06.2011, 17:57   #1  
IKA is offline
IKA
Участник
 
359 / 65 (3) ++++
Регистрация: 15.03.2006
Отчет по временной таблице
Есть отчет, нужно, чтобы в диалоге накладывались ограничения на одну таблицу(допустим, CustTable), а в отчете в качестве единственного datasource используется некая TmpTable ( она же и выводится в body).
Создаю класс - наследник RunBaseReport, перекрываю query, чтобы в диалоге появлялась не TmpTable из DS отчета, а CustTable. Потом обрабатываю данные и заполняю временную таблицу.
Теперь, если я пытаюсь вызвать queryRun().setRecord(myClass.parmtmpTable()) в отчете , то получаю ошибку wrong argument type, тк queryRun в отчете содержит CustTable не смотря на то, что в отчете в DS лежит TmpTable.

Можно ли подобную задачу решить с помошью RunBaseReport - наследника, или лучше создать runBase класс и вызывать отчет из него с помощью new new MenuFunction(menuitemoutputstr(myReport, MenuItemType::Output).run(args);
Старый 16.06.2011, 20:18   #2  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,691 / 1195 (43) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Если я не ошибаюсь, то логика примерно такая

Тот запрос, который служит источником объектов на форме диалога - это то, что возвращает метод \Classes\RunBaseReport\queryRun()

А запрос, который будет записан в сам отчет имеет строго фиксированное имя переменной queryRun. Эта переменная объявляется в \Classes\RunBaseReport\ClassDeclaration

Это значит, что если перекрыть метод QueryRun и вернуть из него переменную с именем отличным от фиксированного имени queryRun, то на форме диалога будут отображены настройки именно этого QueryRun, но в отчет они вообще никогда не попадут. Примерно вот это сделать

X++:
public QueryRun queryRun()
{
    ;
    
    if (! qrMy)
    {
        this.createMyQueryRun();
    }
    return qrMy;
}
qrMy - это переменная типа QueryRun, объявленная в твоем классе-наследнике. Ну, а метод createMyQueryRun() - это твой метод в котором ты конструируешь QueryRun для отображения на форме диалога.

Ну, естесственно, надо будет еще дополнительно модифицировать pack/unpack, чтобы сохранять/восстанавливать еще и настройки этого query.

По крайней мере в Ax2009 у меня получилось таким образом вывести диалог по VendTable, а отчет по CustTable.
За это сообщение автора поблагодарили: Hyper (1), IKA (1), PavelX (2), S.Kuskov (2).
Теги
query, queryrun, отчет

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Отчет, основанный на временной таблице Андре DAX: Программирование 10 21.02.2007 13:47
Отчет по временной таблице petr DAX: Программирование 3 30.11.2006 14:55
Отчет по временной таблице Perc DAX: Программирование 3 25.10.2005 10:47
Отчет по временной таблице DreamCreator DAX: Программирование 1 26.11.2004 10:03
отчёт по пустой таблице Atani DAX: Программирование 2 03.11.2003 17:10
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

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