Показать сообщение отдельно
Старый 01.08.2014, 13:57   #13  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,443 / 1781 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от TasmanianDevil Посмотреть сообщение
S.Kuskov, неправда Ваша - всякие count<Всякое>() в нем работают именно с объектом типа QueryRun и именно его клонируют через контейнер, производя вычисления.
Действительно так. Но только это не помогает избежать того о чем я писал. Связь со временной таблицей теряется все равно:

Вот небольшой пример:
X++:
static void JobTEST_QueryRunPack(Args _args)
{
    Query query;
    QueryRun queryRun1, queryRun2;
    TmpABC TmpABC1;
    ;
    
    query = new Query();
    query.addDataSource(tableNum(TmpABC));
    
    TmpABC1.clear();
    TmpABC1.Amount = 123.45;
    TmpABC1.doInsert();
    
    queryRun1 = new QueryRun(query);
    queryRun1.setCursor(TmpABC1);
    info(strfmt("SysQuery::countTotal(queryRun1): %1", SysQuery::countTotal(queryRun1))); // 0
    info("");

    queryRun2 = new QueryRun(queryRun1.pack()); // "клонируем" QueryRun

    info("queryRun2:");
    info("{");
    while (queryRun2.next()) // {}
    {
        TmpABC1 = queryRun2.get(tableNum(TmpABC));
        
        info(strfmt("%1", TmpABC1.Amount));
    }
    info("}");
    info("");

    info("queryRun1:");
    info("{");
    while (queryRun1.next()) // {123,45}
    {
        TmpABC1 = queryRun1.get(tableNum(TmpABC));

        info(strfmt("%1", TmpABC1.Amount));
    }
    info("}");
}