Есть задача: построить отчёт на основании 3-х таблиц с определёнными условиями. Условия пока опустим. Нужно объединить 3 таблицы между собой с помощью query. Второй день бьюсь, как только не соединял - ничего не выходит.
Последняя версия такова:
X++:
Queryrun main_query(boolean _count_query = false)
{
Query query = new Query();
QueryBuildDataSource qbds_vendsplistjour,
qbds_vendsplisttrans,
qbds_vendinvoicetrans;
QueryBuildRange qbr;
;
qbds_vendinvoicetrans = query.addDataSource(tablenum(VendInvoiceTrans));
qbds_vendinvoicetrans.addSelectionField(fieldnum(VendInvoiceTrans,Qty), SelectionField::Sum);
qbds_vendinvoicetrans.orderMode(OrderMode::GroupBy);
qbds_vendinvoicetrans.addSortField(fieldnum(VendInvoiceTrans,ItemId));
qbds_vendinvoicetrans.addSortField(fieldnum(VendInvoiceTrans,InternalSp));
qbds_vendinvoicetrans.addSortField(fieldnum(VendInvoiceTrans,Qty));
qbds_vendsplisttrans = qbds_vendinvoicetrans.addDataSource(tablenum(VendSpListTrans));
qbds_vendsplisttrans.addLink(fieldnum(VendInvoiceTrans,InternalSp),fieldnum(VendSpListTrans,InternalSp));
qbds_vendsplistjour = qbds_vendsplisttrans.addDataSource(tablenum(VendSpListJour));
qbds_vendsplistjour.relations(true);
if (_count_query)
{
qbds_vendinvoicetrans.addSelectionField(fieldnum(VendInvoiceTrans,Recid),SelectionField::Count);
}
info(qbds_vendinvoicetrans.toString());
return (new QueryRun(query));
}
Он выдаёт такой sql запрос:
X++:
SELECT FIRSTFAST SUM(Qty), COUNT(RecId) FROM VendInvoiceTrans GROUP BY VendInvoiceTrans.ItemId ASC, VendInvoiceTrans.InternalSp ASC, VendInvoiceTrans.Qty ASC JOIN FIRSTFAST * FROM VendSpListTrans WHERE VendInvoiceTrans.InternalSp = VendSpListTrans.InternalSp JOIN FIRSTFAST * FROM VendSpListJour WHERE VendSpListTrans.InternalSp = VendSpListJour.InternalSp
который я подправил, чтобы проверить в sqlms
X++:
SELECT SUM(VendInvoiceTrans.Qty), COUNT(VendInvoiceTrans.RecId)
FROM VendInvoiceTrans
JOIN VendSpListTrans
on VendInvoiceTrans.InternalSp = VendSpListTrans.InternalSp
JOIN VendSpListJour
on VendSpListTrans.InternalSp = VendSpListJour.InternalSp
--GROUP BY VendInvoiceTrans.ItemId ,
-- VendInvoiceTrans.InternalSp
В sqlms он отрабатывает и выдаёт результаты.
Прошу помочь или подтолкнуть в нужную сторону, куда копать. Спасибо заранее.
С уважением.
Нашёл на форуме в теме такую фразу
Цитата:
Сообщение от
Wamr
В SQL при использовании GROUP BY нельзя получить данные, которые не входят в список агрегирующих полей (addSortField) или функций (SelectionField).
Так что Аксапта тут не виновата

Добавил нужные мне поля, которые хочу выбрать из данной таблицы - ничего(