10.11.2004, 10:28 | #1 |
Участник
|
Оборотно-сальдовая одним запросом ???
Уважаемый All, есть маленькая проблема.
Необходимо разработать оборотно-сальдовую ведомость, в которой обороты разрезаются по нескольким дополнительным аналитикам, например - по датам, по номенклатурным группам. При этом необходим режим "Только итоги по номенклатурным группам", или "Только итоги по датам". В стандартном SQL - это просто GROUP BY. В Аксапта при генерации отчета тоже можно поставить признак "Только итоги". Единственное ограничение - результирующий набор должен извлекаться одним Query. В MS SQL я могу написать оборотно сальдовую одним SQL-запросом: select ItemId, NameAlias, (select (sum(AvailPhysical) from InventSum S where S.ItemId = N.ItemId) as SaldoNow, (select sum(Qty) from InventTrans T where T.ItemId = N.ItemId and DatePhysical < @DateBegin and StatusReceipt > 0) as Obr1In, (select sum(Qty) from InventTrans T where T.ItemId = N.ItemId and DatePhysical < @DateBegin and StatusIssue > 0) as Obr1Out, ... SaldoNow - Obr1In + Obr1Out as SaldoBegin, ...... from InventTable N; Принцип понятен. Используются вложенные запросы. Каждый вложенный запрос я могу оформить отдельной функцией, тогда оборотку можно будет извлечь так: select ItemId, NameAlias, SaldoBegin(ItemId, @DateBegin), ObrIn(ItemId, @DateBegin, @DateEnd), ObrOut(ItemId, @DateBegin, @DateEnd), SaldoEnd(ItemId, @DateEnd), from InventTable; Такой запрос можно джойнить к дополнительным таблицам и получать отчеты с группировками с помощью стандартного Query. Вопрос - такое возможно в Аксапта ? Я просто смотрел код оборотки - там используется цикл, а сальдо и обороты извлекаются отдельными запросами. Соответственно - все промежуточныи итоги и группировки надо програмить явно. А это - очень грустно. Хочется простого и универсального механизма. Заранее благодарен за рассмотрение.
__________________
С уважением, Евгений. |
|