Показать сообщение отдельно
Старый 31.01.2011, 14:28   #15  
Corel is offline
Corel
Участник
Ex AND Project
 
73 / 15 (1) ++
Регистрация: 19.04.2007
Цитата:
Сообщение от 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);