Создаю query:
Код:
PurchLine purchLine;
InventTable inventTable;
InventDim inventDim;
QueryBuildDataSource qbdsPurchTable,
qbdsPurchLine,
qbdsInventTable,
qbdsInventTableModule,
qbdsInventDim;
Query query;
QueryRun queryRun;
;
query = new Query();
qbdsPurchTable = query.addDataSource(tableNum(PurchTable));
qbdsPurchTable.addRange(fieldNum(PurchTable, DeliveryDate)).value(queryValue(30\11\2005));
qbdsPurchLine = qbdsPurchTable.addDataSource(tableNum(PurchLine));
qbdsPurchLine.joinMode(JoinMode::InnerJoin);
qbdsPurchLine.fetchMode(QueryFetchMode::One2One);
qbdsPurchLine.addLink(fieldNum(PurchTable, PurchId), fieldNum(PurchLine, PurchId));
qbdsPurchLine.orderMode(OrderMode::GroupBy);
qbdsPurchLine.addSelectionField(fieldNum(PurchLine, PurchQty), SelectionField::Sum);
qbdsInventTable = qbdsPurchLine.addDataSource(tableNum(InventTable));
qbdsInventTable.joinMode(JoinMode::InnerJoin);
qbdsInventTable.fetchMode(QueryFetchMode::One2One);
qbdsInventTable.addLink(fieldNum(PurchLine, ItemId), fieldNum(InventTable, ItemId));
qbdsInventTable.orderMode(OrderMode::GroupBy);
qbdsInventTable.addSortField(fieldNum(InventTable, ItemName));
qbdsInventTable.addSortField(fieldNum(InventTable, ItemId));
qbdsInventTableModule = qbdsInventTable.addDataSource(tableNum(inventTableModule));
qbdsInventTableModule.joinMode(JoinMode::InnerJoin);
qbdsInventTableModule.fetchMode(QueryFetchMode::One2One);
qbdsInventTableModule.addLink(fieldNum(InventTable, ItemId), fieldNum(inventTableModule, ItemId));
qbdsInventDim = qbdsPurchLine.addDataSource(tableNum(InventDim));
qbdsInventDim.joinMode(JoinMode::InnerJoin);
qbdsInventDim.fetchMode(QueryFetchMode::One2One);
qbdsInventDim.addLink(fieldNum(PurchLine, InventDimId), fieldNum(InventDim, InventDimId));
qbdsInventDim.orderMode(OrderMode::GroupBy);
qbdsInventDim.addSortField(fieldNum(InventDim, InventDimId));
queryRun = new QueryRun(query);
while(queryRun.next())
{
purchLine = queryRun.get(tableNum(PurchLine));
inventTable = queryRun.get(tableNum(InventTable));
inventDim = queryRun.get(tableNum(InventDim));
info(strfmt("%1 ~ %2 ~ %3 ~ %4", inventTable.ItemName,
inventTable.ItemId,
purchLine.PurchQty,
inventDim.inventDimId ));
}
Проблема заключается в том, что в таком виде результат выборки получается без группировки по InventDim, если же закомментировать добавление в query InventTableModule, то группировка по InventDim работает, чего я , собственно, и хочу добиться. Смотрел получающийся в query запрос - все вроде нормально, а может я sql недостаточно хорошо знаю...