Цитата:
Сообщение от
AndyD
Ну, по идее, это должно и в обратную строну работать
По идее-то да. Но вот в таком варианте наблюдаю вываливание на QueryRun.next() в тарссировку стека с ошибкой "неверный параметр".
Цитата:
Хотя, вы бы привели запрос полностью, что бы было видно, как таблицы между собой соединяются
Ок. Убрал из запроса лишнее, Table1 - это InventTrans.
Запрос должен находить номенклатуры, относящиеся к выбранным Table2 (на Table2 накладывается пользовательский фильтр), у которых текущие остатки больше 0 и по которым есть приходные проводки с датой раньше, чем текущая минус кол-во дней, указанное в соответствующей Table2.
X++:
query = new Query();
qbdsTable2 = query.addDataSource(tableNum(Table2));
qbdsInventTable = qbdsTable2.addDataSource(tableNum(InventTable));
qbdsInventTable.addLink(fieldNum(Table2, Id), fieldNum(InventTable, Table2Id));
qbdsInventTable.addGroupByField(fieldNum(InventTable, ItemId));
qbdsInventSum = qbdsInventTable.addDataSource(tableNum(InventSum));
qbdsInventSum.relations(true);
qbdsInventSum.addRange(fieldNum(InventSum, PostedQty)).value('(PostedQty>0)');
qbdsInventSum.addSelectionField(fieldNum(InventSum, PostedQty), SelectionField::Sum);
qbdsInventTrans = qbdsInventSum.addDataSource(tableNum(InventTrans));
qbdsInventTrans.relations(true);
qbdsInventTrans.addRange(fieldNum(InventTrans, StatusReceipt)).value(queryValue(StatusReceipt::Purchased));
qbdsInventTrans.addRange(fieldNum(InventTrans, DateFinancial)).value(strfmt('(((%1 - %2) > %3.%4))',
date2StrXpp(systemDateGet()),
fieldStr(InventTrans, DateFinancial),
query.dataSourceTable(tableNum(Table2)).name(),
fieldStr(Table2, Days)));
qbdsInventTrans.joinMode(JoinMode::ExistsJoin);