В джобе:
Код:
SalesPickingListJournalTable spt;
SalesPickingListJournalLine spl;
InventTable it;
;
while select spt
where spt.BD_InventJournalId != ""
join spl
where spl.PickingListId == spt.PickingListId
exists join it
where it.ItemId == spl.Itemid
&& it.ItemType == ItemType::Service
{
info(spt.PickingListId);
}
Результат верный!
На форме поместил один dataSource SalesPickingListJournalTable, в init источника данных сделал следущее:
Код:
QueryBuildDataSource qSPT, qSPL, qIT;
super();
qSPT = this.query().addDataSource(tablenum(SalesPickingListJournalTable));
qSPL = qSPT.addDataSource(tablenum(SalesPickingListJournalLine));
qSPL.addLink(fieldnum(SalesPickingListJournalTable, PickingListId),
fieldnum(SalesPickingListJournalLine, PickingListId));
qIT = qSPL.addDataSource(tablenum(InventTable));
qIT.addRange(fieldnum(InventTable, ItemType)).value(queryValue(ItemType::Service));
qIT.addLink(fieldnum(SalesPickingListJournalLine, ItemId),
fieldnum(InventTable, ItemId));
qIT.joinMode(JoinMode::ExistsJoin);
При просмотре запроса:
Код:
SELECT * FROM SalesPickingListJournalTable JOIN * FROM SalesPickingListJournalLine WHERE SalesPickingListJournalTable.PickingListId = SalesPickingListJournalLine.PickingListId EXISTS JOIN * FROM InventTable WHERE SalesPickingListJournalLine.Itemid = InventTable.ItemId AND ((ItemType = Услуга))
Но вот в гриде вываливается все