Цитата:
Сообщение от
AndyD
Во-вторых, JournalId надо тоже добавлять в расширенный диапазон, иначе соединение получается ч/з OR, а не AND
..
PS. Select можно построить по этому-же принципу
X++:
while select inventJournalTrans
where inventJournalTrans.JournalId == _inventJournalTable.JournalId &&
inventJournalTrans.Qty - inventJournalTrans.Qty <
inventJournalTrans.Qty + inventJournalTrans.QtyRegistered
С циклом получилось!

Написал так:
PHP код:
while select inventJournalTrans
where inventJournalTrans.JournalId == _inventJournalTable.JournalId &&
0 - inventJournalTrans.Qty > 0 + inventJournalTrans.QtyRegistered
Через query не получилось -- Ошибка расширенного диапазона запроса: Синтаксическая ошибка рядом с 52.
PHP код:
static void testMatchingFieldsByQuery(Args _args)
{
Query query = new Query();
QueryBuildDataSource qbds;
QueryBuildRange qbrQty;
QueryRun queryRun;
InventJournalTrans inventJournalTrans;
InventJournalTable inventJournalTable = InventJournalTable::find('075221_090');
;
qbds = query.addDataSource(tableNum(InventJournalTrans),"InventJournalTrans");
qbds.addRange(fieldNum(InventJournalTrans,JournalId)).value(inventJournalTable.JournalId);
qbds.addRange(fieldNum(InventJournalTrans,IncompleteDelivery)).value(queryValue(NoYes::No));
qbrQty = qbds.addRange(fieldNum(InventJournalTrans,JournalId));
qbrQty.value("((inventJournalTrans.JournalId == \"" + inventJournalTable.JournalId + @"\) &&
(inventJournalTrans.Qty - inventJournalTrans.Qty < inventJournalTrans.Qty + inventJournalTrans.QtyRegistered))");
queryRun = new queryRun(query);
while (queryRun.next())
{
inventJournalTrans = queryRun.get(tableNum(InventJournalTrans));
info(inventJournalTrans.ItemId);
}
}
Немного переписал -- но без этого не компилировалось, думаю идею сохранил.