Показать сообщение отдельно
Старый 18.10.2021, 14:26   #5  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,656 / 1158 (42) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Простейший вариант выглядит примерно так (макросы 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;
}
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...

Последний раз редактировалось Владимир Максимов; 18.10.2021 в 14:28.