31.07.2007, 11:34 | #1 |
Участник
|
отображение значений 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); } причём набор полей у нас не постоянен... Что скажите, как можно данное чудо реализовать? Последний раз редактировалось fialka; 31.07.2007 в 11:37. Причина: дополнение |
|
31.07.2007, 12:15 | #2 |
NavAx
|
Форма бухгалтерских проводок (Главная книга \ запросы \ бухгалтерские проводки) случайно не так же открывается, как вам нужно для номенклатуры?
|
|
31.07.2007, 12:18 | #3 |
SAP
|
Т.е. правильно ли я понел на форме А вы выбираете поля из InventTrans а на форме Б в гриде хотите увидить результаты.???
|
|
31.07.2007, 13:35 | #4 |
Участник
|
Цитата:
Запрос то сам нормально срабатывает, но вот как передать значения...? |
|
31.07.2007, 13:37 | #5 |
Участник
|
Так же , только если я выберу в запросе например дату 01/07/07, то на форме в отдельном поле должно быть поле в котором отображалась бы эта дата...
|
|
31.07.2007, 14:01 | #6 |
NavAx
|
Вот так можно вернуть значение фильтра запроса:
PHP код:
|
|
31.07.2007, 14:08 | #7 |
NavAx
|
вот тут: RunbaseDialogModify\addQueryDatasource можно посмотреть и разобраться, как в стандартный диалог добавляются поля с выбранными фильтрами запроса.
|
|
31.07.2007, 14:13 | #8 |
MCTS
|
А что мешает использовать стандартный подход?
Для этого в классе КлассА надо перекрыть метод queryRun() и вернуть QueryRun, построенный на Вашем запросе. В классе КлассА надо перекрыть showQueryValues() и вернуть true. В методе dialog() класса КлассА вызвать super(). Вроде как под ваше описание подходит.
__________________
С уважением, Павел Цераниди. На пути к совершенству нет конца. Каждое новое достижение является отправной точкой для следующего крупного шага. |
|
31.07.2007, 14:14 | #9 |
Участник
|
Цитата:
что тогда в value? что возвращать? |
|
31.07.2007, 14:18 | #10 |
NavAx
|
|
|
31.07.2007, 14:18 | #11 |
Участник
|
Цитата:
Сообщение от e@gle
А что мешает использовать стандартный подход?
Для этого в классе КлассА надо перекрыть метод queryRun() и вернуть QueryRun, построенный на Вашем запросе. В классе КлассА надо перекрыть showQueryValues() и вернуть true. В методе dialog() класса КлассА вызвать super(). Вроде как под ваше описание подходит. а вот как на форму передать? |
|
31.07.2007, 14:20 | #12 |
MCTS
|
Цитата:
Это всё сделано в классе...
а вот как на форму передать?
__________________
С уважением, Павел Цераниди. На пути к совершенству нет конца. Каждое новое достижение является отправной точкой для следующего крупного шага. |
|
31.07.2007, 14:22 | #13 |
Участник
|
|
|
31.07.2007, 14:31 | #14 |
MCTS
|
Цитата:
а потом на основе этих данных строится форма самописная...
Затем в классе модифицируете метод dialog(). Примерно так: X++: protected Object dialog(DialogRunbase _dialog = null, boolean _forceOnClient = false) { ; _dialog = Dialog::newFormnameRunbase(, this); _dialog = super(_dialog, _forceOnClient); return _dialog; }
__________________
С уважением, Павел Цераниди. На пути к совершенству нет конца. Каждое новое достижение является отправной точкой для следующего крупного шага. |
|
|
|