Показать сообщение отдельно
Старый 08.07.2011, 15:55   #1  
SHiSHok is offline
SHiSHok
Участник
Аватар для SHiSHok
Дети Юза
 
219 / 103 (4) +++++
Регистрация: 28.07.2005
Адрес: Донецк
queryRun метод get
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());
    }
}
Ваши замечания, дополнения...
__________________
--- SHiSHok
За это сообщение автора поблагодарили: Oz (1), Logger (3), gl00mie (2), S.Kuskov (3).