Всем привет.
Вероятно, конечно, баян, но я не нашёл...
Интуитивно так обычно не делал, но вот недавно наткнулся - решил поделиться.
Если внутри цикла while select (ну и не только наверное) изменить ссылку табличной переменной используемого курсора на что-то другое, то можно "отгрести" забавные результаты.
Проще продемонстрировать, чем объяснить.
Пример Jobа (Номер журнала задайте сами):
X++:
static void ZVV_TestCursorJob(Args _args)
{
InventTrans inventTrans;
InventJournalId _InventJournalId = "СЖ008968";
;
while select inventTrans
where inventtrans.TransType == InventTransType::InventTransfer
&& inventTrans.TransRefId == _InventJournalId
{
info(strFmt("%1 %2 %3", inventTrans.InventTransId, inventTrans.ItemId, inventTrans.Qty));
}
info(strrep('-',30));
while select inventTrans
where inventtrans.TransType == InventTransType::InventTransfer
&& inventTrans.TransRefId == _InventJournalId
{
info(strFmt("%1 %2 %3", inventTrans.InventTransId, inventTrans.ItemId, inventTrans.Qty));
inventTrans = inventTrans::findRecId(inventTrans.RecId);
}
}
Результат:
Код:
Сообщение (16:45:39)
Л_11776612 25472/001 -10,00
Л_11776612 25472/001 10,00
Л_11776613 25472/001 -10,00
Л_11776613 25472/001 10,00
Л_11776614 25472/001 -20,00
Л_11776614 25472/001 20,00
------------------------------
Л_11776612 25472/001 -10,00
Л_11776612 25472/001 -10,00
Л_11776612 25472/001 -10,00
Л_11776612 25472/001 -10,00
Л_11776612 25472/001 -10,00
Л_11776612 25472/001 -10,00
Найти такой баг в коде наверное не всегда может быть просто и очевидно..
3.0