Добрый день! Прошу помощи с этим запросом:
X++:
SELECT sum(AmountCur) FROM PayRequestLine group by PayRequestAccountNum, BudgetCenterId asc where PayRequestLine.BudgetCenterId == '0400' &&
PayRequestLine.CreatedDate >=
01\05\2012 && PayRequestLine.CreatedDate <= 31\05\2012 && PayRequestLine.PaymentCurrencyCode == "RUR" Exists join payRequestTable where
payRequestTable.PayREquestType == 1
Это то что мне нужно из таблицы PayRequestLine. Введя данный запрос в обозревателе таблиц, получаю нужные мне данные!
Переделал этот запрос через QBDS:
X++:
qbds = query.addDataSource(tablenum(PayRequestLine));
qbds.addRange(fieldnum(PayRequestLine, CreatedDate)).value(QueryRange(fDate,tDate)); // фильтруем по дате создания
qbds.addSelectionField(fieldnum(PayRequestLine, AmountCur),selectionfield::Sum);
qbds.addRange(fieldnum(PayRequestLine, BudgetCenterId)).value(SysQuery::value(CFO));// фильтр по ЦФО
qbds.addRange(fieldnum(PayRequestLine, PayRequestAccountNum)).value(SysQuery::value(AccountVend)); // фильтр по поставщику
qbds.orderMode(ordermode::GroupBy);
qbds.addSortField(fieldnum(PayRequestLine, PayRequestAccountNum));
qbds.addSortField(fieldnum(PayRequestLine, BudgetCenterId));
qbds.addRange(fieldNum(PayRequestLine, PaymentCurrencyCode)).value(SysQuery::value(CurCode)); // фильтр по валюте
qbdsPRT = qbds.addDataSource(tablenum(PayRequestTable)); // выбираем только !!!исходящие безналичные платежи!!!
qbdsPRT.joinMode(joinmode::ExistsJoin);
qbdsPRT.relations(true);
qbrPRT = qbdsPRT.addRange(fieldNum(PayRequestTable, PayRequestType));
qbrPRT.value("Исходящая");
queryRun = new SysQueryRun(query);
info (queryRun.query().dataSourceNo(1).toString()); // просмотр текста запроса
при выполнении запроса в инфологе вижу следующее:
X++:
SELECT SUM(AmountCur) FROM PayRequestLine GROUP BY PayRequestLine.PayRequestAccountNum ASC, PayRequestLine.BudgetCenterId ASC WHERE (((createdDate>={ts '2012-05-01 00:00:00.000'} AND createdDate<={ts '2012-05-31 00:00:00.000'}))) AND (((BudgetCenterId = '0400'))) AND (((PayRequestAccountNum = '*'))) AND (((PaymentCurrencyCode = 'RUR'))) EXISTS JOIN * FROM PayRequestTable WHERE PayRequestLine.PayRequestId = PayRequestTable.PayRequestId AND (((PayRequestType = 1)))
Вроде всё так же! Не понимаю где проблема?? Может в сортировках и группировках дело??? Заранее спасибо за помощь!