вот запрос, который получился в отладке (тема насчет ТА)
SELECT ОстаткиТМЦОстаткиОбороты.Номенклатура [Номенклатура $Справочник.Номенклатура] , ОстаткиТМЦОстаткиОбороты.Склад [Склад $Справочник.Склады] , ОстаткиТМЦОстаткиОбороты.КоличествоНачальныйОстаток , ОстаткиТМЦОстаткиОбороты.КоличествоПриход , ОстаткиТМЦОстаткиОбороты.КоличествоРасход , ОстаткиТМЦОстаткиОбороты.КоличествоКонечныйОстаток FROM (select vt_totalreg.Номенклатура as Номенклатура ,vt_totalreg.Склад as Склад ,sum(vt_totalreg.КоличествоОстаток) as КоличествоНачальныйОстаток ,sum(vt_totalreg.КоличествоПриход) as КоличествоПриход ,sum(vt_totalreg.КоличествоРасход) as КоличествоРасход ,sum(vt_totalreg.КоличествоОборот) as КоличествоОборот ,sum(vt_totalreg.КоличествоОстаток) + sum(vt_totalreg.КоличествоОборот) as КоличествоКонечныйОстаток from(select vt_balance.Номенклатура as Номенклатура ,vt_balance.Склад as Склад ,vt_balance.КоличествоОстаток as КоличествоОстаток ,0 as КоличествоПриход ,0 as КоличествоРасход ,0 as КоличествоОборот from ( SELECT Номенклатура ,Склад ,SUM(КоличествоОстаток) AS КоличествоОстаток FROM (SELECT rg_405.sp408 AS Номенклатура ,rg_405.sp418 AS Склад ,rg_405.sp411 AS КоличествоОстаток FROM RG405 AS rg_405 (nolock) WHERE rg_405.PERIOD = '20120501' AND (rg_405.sp408 IN (' 398 ')) AND (rg_405.sp418 IN (' 1 ')) UNION ALL SELECT ra_405.sp408 ,ra_405.sp418 ,CASE WHEN ra_405.debkred = 0 THEN -ra_405.sp411 ELSE ra_405.sp411 END FROM _1SJOURN AS docjourn (nolock) LEFT JOIN RA405 AS ra_405 (nolock) ON ra_405.IDDOC = docjourn.IDDOC WHERE (docjourn.DATE_TIME_IDDOC >= '20120521 0 0 ') AND (docjourn.DATE_TIME_IDDOC < '20120521BFW3Q8') AND (ra_405.sp408 IN (' 398 ')) AND (ra_405.sp418 IN (' 1 ')) ) AS vt_ra_405 GROUP BY Номенклатура ,Склад HAVING (SUM(КоличествоОстаток) <> 0) ) as vt_balance union all select vt_turnover.Номенклатура ,vt_turnover.Склад ,0 ,vt_turnover.КоличествоПриход ,vt_turnover.КоличествоРасход ,vt_turnover.КоличествоОборот from ( SELECT Номенклатура ,Склад ,SUM(КоличествоПриход) AS КоличествоПриход ,SUM(КоличествоРасход) AS КоличествоРасход ,SUM(КоличествоОборот) AS КоличествоОборот FROM (SELECT ra_405.sp408 AS Номенклатура ,ra_405.sp418 AS Склад ,CASE WHEN ra_405.debkred = 0 THEN ra_405.sp411 ELSE 0 END AS КоличествоПриход ,CASE WHEN ra_405.debkred = 1 THEN ra_405.sp411 ELSE 0 END AS КоличествоРасход ,CASE WHEN ra_405.debkred = 0 THEN ra_405.sp411 ELSE -ra_405.sp411 END AS КоличествоОборот FROM RA405 AS ra_405 (nolock) INNER JOIN _1SJOURN AS docjourn (nolock) ON ra_405.IDDOC = docjourn.IDDOC WHERE (docjourn.DATE_TIME_IDDOC >= '20120521 0 0 ') AND (docjourn.DATE_TIME_IDDOC < '20120521BFW3Q8') AND (ra_405.sp408 IN (' 398 ')) AND (ra_405.sp418 IN (' 1 ')) ) AS vt_ra_405 GROUP BY Номенклатура ,Склад HAVING (SUM(КоличествоПриход) <> 0) OR (SUM(КоличествоРасход) <> 0) OR (SUM(КоличествоОборот) <> 0) ) as vt_turnover ) as vt_totalreg group by vt_totalreg.Номенклатура,vt_totalreg.Склад HAVING (sum(vt_totalreg.КоличествоОстаток) <> 0) OR (sum(vt_totalreg.КоличествоПриход) <> 0) OR (sum(vt_totalreg.КоличествоРасход) <> 0) OR (sum(vt_totalreg.КоличествоОборот) <> 0)
) AS ОстаткиТМЦОстаткиОбороты
Версия класса последняя 011, да и на 007 то же самое. Разбирал функцию получения ТА и БИ в классе - вроде правильно написано.. А вот выделенное - очень смущает. Там разве равно не пропущено?
|