Оборотно-сальдовая одним запросом ???
Уважаемый 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.
Вопрос - такое возможно в Аксапта ?
Я просто смотрел код оборотки - там используется цикл, а сальдо и обороты извлекаются отдельными запросами. Соответственно - все промежуточныи итоги и группировки надо програмить явно. А это - очень грустно. Хочется простого и универсального механизма.
Заранее благодарен за рассмотрение.
__________________
С уважением, Евгений.
|