1) Метод ClassDeclaration. Определяешь 2 переменные
PHP код:
Query queryMySample;
QueryRun queryRunMySample;
2) Создай отдельный (новый) метод в котором будешь конструировать Query. Например, createQuery(). Этот метод формирует переменную типа Query, которую ты определил в ClassDeclaration как queryMySample
3) Создай еще один новый метод примерно такого содержания
PHP код:
public void makeQueryRun()
{
;
if (! queryMySample)
{
this.createQuery();
}
queryRunMySample = new QueryRun(queryMySample);
}
4) Перекрываешь метод QueryRun
PHP код:
public QueryRun queryRun()
{
return queryRunMySample;
}
5) Перекрываешь метод initParmDefault
PHP код:
// Переопределение данного метода нужно только при первом запуске
// когда у клиента еще не было Pack
void initParmDefault()
{
super();
this.makeQueryRun();
}
6) Перекрываешь метод Pack
PHP код:
public container pack()
{
return [#CurrentVersion, #CurrentList, queryRunMySample.query().pack()] + [super()];
}
7) Перекрываешь метод UnPack
PHP код:
public boolean unpack(container packedClass)
{
container _base, packedQuery;
boolean _ret;
Integer _version = conpeek(packedClass,1);
;
switch (_version)
{
case #CurrentVersion:
[_version, #CurrentList, packedQuery, _base] = packedClass;
if (queryIsPackedOk(packedQuery))
{
queryMySample = new Query(packedQuery);
}
this.makeQueryRun();
_ret = super(_base);
break;
default:
_ret = false;
}
return _ret;
}
Здесь queryIsPackedOk() - это метод класса Global. Вообще-то, он стандартный, но если его нет, то вот его код
PHP код:
/*MAN
Method to test a packed queryrun container is legal.
*/
static boolean queryIsPackedOk(PackedQueryRun packed)
{
return sysQuery::isPackedOk(packed);
}
AXAPTA 2.5 SP3