Простейший вариант выглядит примерно так (макросы CurrentVersion и CurrentList в ClassDeclaration указываются)
X++:
public container pack()
{
return [#CurrentVersion, #CurrentList, queryRun.query().pack()];
}
public boolean unpack(container packedClass)
{
boolean ret;
int ver = RunBase::getVersion(packedClass);
container packedQR;
;
switch (ver)
{
case #CurrentVersion:
[ver, #CurrentList, packedQR] = packedClass;
if (SysQuery::isPackedOk(packedQR))
{
queryRun = new QueryRun(packedQR);
ret = true;
}
break;
}
return ret;
}
При этом вызов в initParmDefault() должен также остаться для первичного заполнения Query при первом запуске или после очистки кеша.
Ну, или так
X++:
public container pack()
{
return [#CurrentVersion, #CurrentList];
}
public boolean unpack(container packedClass)
{
boolean ret;
int ver = RunBase::getVersion(packedClass);
;
switch (ver)
{
case #CurrentVersion:
[ver, #CurrentList] = packedClass;
this.queryBuild(true);
ret = true;
break;
}
return ret;
}