Привет всем.
Подскажите имеется такой класс:
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
Похоже я что то упустил раз у меня не происходит этого вызова.