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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 31.07.2007, 11:34   #1  
fialka is offline
fialka
Участник
 
347 / 16 (1) ++
Регистрация: 05.10.2006
Адрес: Екатеринбург
? отображение значений query на форме
Кто подскажет.. такая проблема.
Есть КлассА который вызывает диалоговое окно. В диалоговом окне указываем любые значения из InventTable например. причём можем указать одну только номенклатуру, или кучу разных полей в запросе.
Далее открывается ФормаБ, которая и строится на основе этого запроса.
Вопрос такой, как на ФормеБ отобразить значения запроса?
X++:
void initQuery()
{
Query query = new query();
QueryBuildDataSource qbds;
QueryBuildDataSource qbds1;
;
qbds = query.addDataSource(tablenum(inventTable));
qbds.addRange(fieldNum(InventTable, Blocked)).value(enum2str(NoYes::No));
qbds.addRange(fieldNum(InventTable, Dimension));
 
qbds1 = query.addDataSource(tablenum(inventLocation));
qbds1.addRange(fieldNum(inventLocation, InventLocationId)).value(InventLocation::ERG_getDefaultLocationId());
queryrun = new sysQueryRun(query);
}
то есть если указали номенклатуру1, то в поле на форме должны вывести номенклатуру1.
причём набор полей у нас не постоянен...
Что скажите, как можно данное чудо реализовать?

Последний раз редактировалось fialka; 31.07.2007 в 11:37. Причина: дополнение
Старый 31.07.2007, 12:15   #2  
Roman777 is offline
Roman777
NavAx
Аватар для Roman777
NavAx Club
 
320 / 64 (3) ++++
Регистрация: 10.02.2005
Адрес: г. Москва
Форма бухгалтерских проводок (Главная книга \ запросы \ бухгалтерские проводки) случайно не так же открывается, как вам нужно для номенклатуры?
Старый 31.07.2007, 12:18   #3  
konopello is offline
konopello
SAP
SAP
 
628 / 76 (4) ++++
Регистрация: 08.11.2005
Адрес: Минск
Т.е. правильно ли я понел на форме А вы выбираете поля из InventTrans а на форме Б в гриде хотите увидить результаты.???
Старый 31.07.2007, 13:35   #4  
fialka is offline
fialka
Участник
 
347 / 16 (1) ++
Регистрация: 05.10.2006
Адрес: Екатеринбург
Цитата:
Сообщение от konopello Посмотреть сообщение
Т.е. правильно ли я понел на форме А вы выбираете поля из InventTrans а на форме Б в гриде хотите увидить результаты.???
Запрос по InventTable, и поля которые заполнили в запросе, должны отобразится на форме...

Запрос то сам нормально срабатывает, но вот как передать значения...?
Старый 31.07.2007, 13:37   #5  
fialka is offline
fialka
Участник
 
347 / 16 (1) ++
Регистрация: 05.10.2006
Адрес: Екатеринбург
Цитата:
Сообщение от Roman777 Посмотреть сообщение
Форма бухгалтерских проводок (Главная книга \ запросы \ бухгалтерские проводки) случайно не так же открывается, как вам нужно для номенклатуры?
Так же , только если я выберу в запросе например дату 01/07/07, то на форме в отдельном поле должно быть поле в котором отображалась бы эта дата...
Старый 31.07.2007, 14:01   #6  
Roman777 is offline
Roman777
NavAx
Аватар для Roman777
NavAx Club
 
320 / 64 (3) ++++
Регистрация: 10.02.2005
Адрес: г. Москва
Вот так можно вернуть значение фильтра запроса:
PHP код:
queryRun.query().dataSourceTable(tablenum(InventTable)).findRange(fieldnum(InventTableItemId)).value(); 
ну и далее его расположить на элементе формы через display-метод
Старый 31.07.2007, 14:08   #7  
Roman777 is offline
Roman777
NavAx
Аватар для Roman777
NavAx Club
 
320 / 64 (3) ++++
Регистрация: 10.02.2005
Адрес: г. Москва
вот тут: RunbaseDialogModify\addQueryDatasource можно посмотреть и разобраться, как в стандартный диалог добавляются поля с выбранными фильтрами запроса.
Старый 31.07.2007, 14:13   #8  
e@gle is offline
e@gle
MCTS
MCBMSS
 
164 / 72 (3) ++++
Регистрация: 11.04.2005
Адрес: Минск
А что мешает использовать стандартный подход?
Для этого в классе КлассА надо перекрыть метод queryRun() и вернуть QueryRun, построенный на Вашем запросе.
В классе КлассА надо перекрыть showQueryValues() и вернуть true.
В методе dialog() класса КлассА вызвать super().
Вроде как под ваше описание подходит.
__________________
С уважением, Павел Цераниди.
На пути к совершенству нет конца. Каждое новое достижение является отправной точкой для следующего крупного шага.
Старый 31.07.2007, 14:14   #9  
fialka is offline
fialka
Участник
 
347 / 16 (1) ++
Регистрация: 05.10.2006
Адрес: Екатеринбург
Цитата:
Сообщение от Roman777 Посмотреть сообщение
Вот так можно вернуть значение фильтра запроса:
PHP код:
queryRun.query().dataSourceTable(tablenum(InventTable)).findRange(fieldnum(InventTableItemId)).value(); 
ну и далее его расположить на элементе формы через display-метод
А если выберут не номенклатуру , а аналитику или единицу склада...
что тогда в value? что возвращать?
Старый 31.07.2007, 14:18   #10  
Roman777 is offline
Roman777
NavAx
Аватар для Roman777
NavAx Club
 
320 / 64 (3) ++++
Регистрация: 10.02.2005
Адрес: г. Москва
Цитата:
Сообщение от fialka Посмотреть сообщение
А если выберут не номенклатуру , а аналитику или единицу склада...
что тогда в value? что возвращать?
рекомендую посмотреть в моем посте выше на ссылку. Там добавляются на форму
только выбранные в пользовательском запросе диапазоны.
Старый 31.07.2007, 14:18   #11  
fialka is offline
fialka
Участник
 
347 / 16 (1) ++
Регистрация: 05.10.2006
Адрес: Екатеринбург
Цитата:
Сообщение от e@gle Посмотреть сообщение
А что мешает использовать стандартный подход?
Для этого в классе КлассА надо перекрыть метод queryRun() и вернуть QueryRun, построенный на Вашем запросе.
В классе КлассА надо перекрыть showQueryValues() и вернуть true.
В методе dialog() класса КлассА вызвать super().
Вроде как под ваше описание подходит.
Это всё сделано в классе...
а вот как на форму передать?
Старый 31.07.2007, 14:20   #12  
e@gle is offline
e@gle
MCTS
MCBMSS
 
164 / 72 (3) ++++
Регистрация: 11.04.2005
Адрес: Минск
Цитата:
Это всё сделано в классе...
а вот как на форму передать?
А как форма у вас вызывается? Это форма из АОТ?
__________________
С уважением, Павел Цераниди.
На пути к совершенству нет конца. Каждое новое достижение является отправной точкой для следующего крупного шага.
Старый 31.07.2007, 14:22   #13  
fialka is offline
fialka
Участник
 
347 / 16 (1) ++
Регистрация: 05.10.2006
Адрес: Екатеринбург
Цитата:
Сообщение от e@gle Посмотреть сообщение
А как форма у вас вызывается? Это форма из АОТ?
Нет, класс создаёт мэп и временную таблицу...
а потом на основе этих данных строится форма самописная...
Старый 31.07.2007, 14:31   #14  
e@gle is offline
e@gle
MCTS
MCBMSS
 
164 / 72 (3) ++++
Регистрация: 11.04.2005
Адрес: Минск
Цитата:
а потом на основе этих данных строится форма самописная...
В таком случае в дереве АОТ находите форму Dialog. Дублируете ее. Созданный таким образом объект дорабатываете как хотите, пусть это и будет ваша самописная форма. Главное что у нее есть необходимые кнопки и группы чтобы ее можно было подсунуть в методе dialog().
Затем в классе модифицируете метод dialog(). Примерно так:
X++:
protected Object dialog(DialogRunbase _dialog = null, boolean _forceOnClient = false)
{    
    ;

    _dialog = Dialog::newFormnameRunbase(, this);
    _dialog  = super(_dialog, _forceOnClient);
    return _dialog;
}
__________________
С уважением, Павел Цераниди.
На пути к совершенству нет конца. Каждое новое достижение является отправной точкой для следующего крупного шага.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Отображение AOT_Query на форме часть 2 radya DAX: Программирование 7 05.06.2008 17:33
Как join'ить временную таблицу и query на форме IvanS DAX: Программирование 1 07.05.2008 09:49
Как в форме CustTrans через query отобрать записи у которых AmountCur != 0 ( когда в QueryBuildRange ставишь value(strFmt('!0')); - не работает!) rkorchagin DAX: Программирование 12 02.04.2007 17:58
Динамическое изменение Query() на форме makos DAX: Программирование 22 05.07.2006 16:28
Подскажите где настроивается отображение аналитики в печатной форме отгрузочной накла wb DAX: Функционал 7 15.07.2004 09:49

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

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

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