Источник:
http://ozka-lemming.blogspot.com/200...-queryrun.html
==============
Однажды, отлаживая нетривиальный код, наткнулся на subj. Не зная про эту «фичу», я долго удивлялся почему запрос возвращает такой странный набор данных!?! Ниже приведен простенький Job-ик, который демонстрирует существование этой возможности в DAX. В иерархии запроса временная таблица должна быть первым источником данных.
X++:
static void JoinTmpTablesOnQuery(Args _args)
{
LedgerTrans ledgerTrans;
LedgerTable ledgerTableTmp;
int i;
int transCnt = 20;
Query query = new Query();
QueryBuildDataSource qbdsTable = query.addDataSource(tableNum(LedgerTable));
QueryBuildDataSource qbds2Trans = qbdsTable.addDataSource(tableNum(LedgerTrans));
QueryRun queryRun;
;
qbds2Trans.relations(true);
ledgerTableTmp.setTmp();
ledgerTableTmp.data(LedgerTable::find("02.010"));
ledgerTableTmp.insert();
ledgerTableTmp.data(LedgerTable::find("01.030"));
ledgerTableTmp.insert();
queryRun = new QueryRun(query);
queryRun.setCursor(ledgerTableTmp, 1);
i = 0;
while (queryRun.next())
{
ledgerTableTmp = queryRun.getNo(1);
ledgerTrans = queryRun.getNo(2);
info(strfmt("AccountNum %1 , AmountCur %2 , (tmpRecId %3 , regRecId %4)",
ledgerTableTmp.AccountNum,
ledgerTrans.AmountCur,
ledgerTableTmp.RecId,
ledgerTrans.RecId));
i++;
if (transCnt && i == transCnt)
break;
}
}
Источник:
http://ozka-lemming.blogspot.com/200...-queryrun.html