Цитата:
Сообщение от
kit22
2) Но если изменить фильтр по кнопке выбрать(был фильтр1, стал фильтр2), а потом нажать кнопку "Отмена" на диалоге, то при следующем открытии диалога и нажатии кнопки "выбрать" подгружался фильтр1. - сейчас подгружает фильтр2.
У меня так и работает, т.е. после повторного открытия диалога подгружается фильтр 1.
Попробуйте для начала почистить sysLastValue, возможно, у вас там в процессе всех этих манипуляций образовалась какая-нибудь "каша".
Если не поможет, то проверьте как у Вас происходит инициализация queryRun. Принцип должен быть следующий:
1. Объявите в classDeclaration переменную queryRun
X++:
SysQueryRun queryRun;
2. Методы pack и unpack должны выглядеть следующим образом:
X++:
public container pack()
{
;
return [#CurrentVersion,#CurrentList,queryrun.query().pack()];
}
public boolean unpack(container _packedClass)
{
Version version = RunBase::getVersion(_packedClass);
container packedQuery;
;
switch (version)
{
case #CurrentVersion :
[version, #CurrentList, packedQuery] = _packedClass;
if (packedQuery)
{
queryRun = new SysQueryRun(packedQuery);
queryRun.promptLoadLastUsedQuery(false);
}
break;
default:
return false;
}
return true;
}
3. Реализуйте метод initParmDefault
X++:
public void initParmDefault()
{
;
this.initQuery();
super();
}
4. Метод initQuery должен иметь примерно следующий вид:
X++:
protected void initQuery()
{
Query query = new Query();
;
query.addDataSource(tablenum(EmplTable));
queryRun = new SysQueryRun(query);
queryRun.promptLoadLastUsedQuery(false);
}
5. Перекройте метод queryRun:
X++:
public QueryRun queryRun()
{
;
return queryRun;
}
Должно все работать как Вы описали