18.10.2021, 13:10 | #1 |
Участник
|
вопрос про RunBaseBatch::queryBuild при showQueryValues = true
Привет всем.
Подскажите имеется такой класс: X++: class MyClassRunBaseBatch extends RunBaseBatch { ... QueryRun queryRun; ... } ... public boolean init() { return true; } public void initParmDefault() { super(); this.queryBuild(true); } public Object dialog() { DialogRunbase dialog = super(); ; return dialog; } protected void queryBuild(boolean _reWrite) { Query query = new Query(); QueryBuildDataSource qbds; QueryBuildRange qbr; ; if (!queryRun || _reWrite) { qbds = query.addDataSource(tablenum(MyTable)); qbr = qbds.addRange(fieldnum(Table1, Field1)); qbr.value(sysQuery::value('Value1')); qbr = qbds.addRange(fieldnum(Table1, Field1)); qbr.value(sysQuery::valueNot('Value2')); qbr = qbds.addRange(fieldnum(Table1, Field2)); qbr.value(sysQuery::valueNotEmptyString()); qbr = qbds.addRange(fieldnum(Table1, Field3)); qbr.value(queryValue(NoYes::No)); qbr = qbds.addRange(fieldnum(Table1, Field4)); qbr.value(queryValue(MyEnum::Enum1)); queryRun = new SysQueryRun(query); } } public QueryRun queryRun() { return queryRun; } public boolean showQueryValues() { return true; } void new() { super(); } static void main(Args args) { MyClassRunBaseBatch myClassRunBaseBatch; ; myClassRunBaseBatch = MyClassRunBaseBatch ::construct(); if (myClassRunBaseBatch.prompt()) myClassRunBaseBatch.run(); } ... // ну и остальные методы ... public void run() public boolean validate() server static MyClassRunBaseBatch construct() static ClassDescription description() static void main(Args args) Вопрос: 1. Почему при вызове диалогового окна отображаются фильтры только полей Field1 и Field4 ? Хотя по логике должны отображается все поля для которых я задаю фильтры в методе queryBuild. Т.е. должно быть отображено 4 фильтра: Field1 / Field2 / Field3 / Field4 2. Как сделать так что бы в окне диалогового окна (когда showQueryValues возвращает true) были заданы значение установленные как раз в методе queryBuild ? У меня почему то там выводит последнее сохраненное значение но для полей Field1 и Field4 (см. вопрос 1) 3. Почему initParmDefault не вызывается? Например в стоковом классе APMUpdateObjectLocation вот такой стек вызовов: Цитата:
[s] \Classes\APMUpdateObjectLocation\queryBuild 6
[s] \Classes\APMUpdateObjectLocation\initParmDefault 5 [s] \Classes\xSysLastValue\getLast 23 [s] \Classes\RunBase\getLast 9 [s] \Classes\RunBaseBatch\getLast 12 [s] \Classes\RunBase\promptPrim 9 [s] \Classes\RunBase\prompt 12 [s] \Classes\RunBaseBatch\prompt 32 [s] \Classes\APMUpdateObjectLocation\main 8 Похоже я что то упустил раз у меня не происходит этого вызова. Последний раз редактировалось oleggy; 18.10.2021 в 13:27. |
|