DAX3 KR3: Обнаружил интересную особенность работы queryRun.
В документации,в примерах и в коде применяется следующая схема работы с QueryRun:
X++:
// инициализация QueryRun
while (queryRun.next())
{
<. > = queryRun.get(...);
// обработка значений <таб. переменной>
}
Но обнаружил, что табличной переменной достаточно присвоить значение (ссылку на запись) ОДИН раз (например после первого queryRun.next() ) и далее она будет ссылаться на актуальное значение запроса. Т.е. после очередного queryRun.next() табличная переменная содержит очередное значение выборки и queryRun.get выполнять не требуется.
в джобике продемонстрирован пример работы:
X++:
static void Job_QRGet_test(Args _args)
{
query q;
queryRun qr;
queryBuildDataSource qbds;
inventTable it;
inventTable it1;
;
q = new query();
qbds = q.addDataSource(TableNum(inventTable));
qbds.addSelectionField(fieldNum(inventTable,itemName));
qbds.addRange(fieldNum(inventTable,itemId)).value("*");
qr = new queryRun(q);
if (qr.next())
{
it = qr.get(tableNum(inventTable));
it1 = qr.get(tableNum(inventTable));
do {
info(it.itemName);
} while (qr.next());
}
}
Ваши замечания, дополнения...