berezdetsky писал(а) 24. Марта 2009 :: 14:52:
знаю что бессовестно просить
но возможно ли реализовать следующее
сейчас в БИОстатки и в БИОстаткиОбороты (за это особенное спасибо !) можно получить
<Имя Ресурса>Остаток
<Имя Ресурса>ОстатокДт
<Имя Ресурса>ОстатокКт
что в принципе аналоги СНД, СНК, СКД или СКК в зависимости от условий периода
так вот с толкнулся с тем что часто бывает необходимо аналоги СНДРС,СКДРС,СНКРС,СККРС (развернутое сальдо)
основное отличие в отображение итога дебетового или кредового сальдо по субконто для ненулевых
пока это возможно сделать тремя запросами с последующей склейкой, и последующей группировкой
приблизительно так
ТекстЗапроса = "
|SET NOCOUNT ON
| select
| Основной.Счет [Счет $Счет.Основной]
| ,'' as Субконто1
| , Основной.СуммаНачальныйОстатокДт as СНД
| , Основной.СуммаНачальныйОстатокКт as СНК
| , Основной.СуммаОборотДт as ДО
| , Основной.СуммаОборотКт as КО
| , Основной.СуммаКонечныйОстатокДт as СКД
| , Основной.СуммаКонечныйОстатокКт as СКК
| , 0 as СНДРС
| , 0 as СНКРС
| , 0 as СКДРС
| , 0 as СККРС
| FROM $БИОстаткиОбороты.Основной(:НачДата, :КонДата ~, , , , , , ) AS Основной
|UNION ALL
| select
| Основной.Счет [Счет $Счет.Основной]
| , Основной.Субконто1 [Субконто1 $Субконто]
| , sum(0) as СНД
| , sum(0) as СНК
| , sum(0) as ДО
| , sum(0) as КО
| , sum(0) as СКД
| , sum(0) as СКК
| , CASE WHEN sum(Основной.СуммаОстатокДт)-sum(Основной.СуммаОстатокКт)>0 THEN sum(Основной.СуммаОстатокДт)-sum(Основной.СуммаОстатокКт) ELSE 0 END as СНДРС
| , CASE WHEN sum(Основной.СуммаОстатокКт)-sum(Основной.СуммаОстатокДт)>0 THEN sum(Основной.СуммаОстатокКт)-sum(Основной.СуммаОстатокДт) ELSE 0 END as СНКРС
| , 0 as СКДРС
| , 0 as СККРС
| FROM $БИОстатки.Основной(:НачДата,,,,) AS Основной
|group by Основной.Счет,Основной.Субконто1,Основной.Субконто1_вид
|having sum(Основной.СуммаОстатокДт)<>sum(Основной.СуммаОстатокКт)
|UNION ALL
| select
| Основной.Счет [Счет $Счет.Основной]
| , Основной.Субконто1 [Субконто1 $Субконто]
| , sum(0) as СНД
| , sum(0) as СНК
| , sum(0) as ДО
| , sum(0) as КО
| , sum(0) as СКД
| , sum(0) as СКК
| , 0 as СНДРС
| , 0 as СНКРС
| , CASE WHEN sum(Основной.СуммаОстатокДт)-sum(Основной.СуммаОстатокКт)>0 THEN sum(Основной.СуммаОстатокДт)-sum(Основной.СуммаОстатокКт) ELSE 0 END as СКДРС
| , CASE WHEN sum(Основной.СуммаОстатокКт)-sum(Основной.СуммаОстатокДт) >0 THEN sum(Основной.СуммаОстатокКт)-sum(Основной.СуммаОстатокДт) ELSE 0 END as СККРС
| FROM $БИОстатки.Основной(:КонДата~,,,,) AS Основной
|group by Основной.Счет,Основной.Субконто1,Основной.Субконто1_вид
|having sum(Основной.СуммаОстатокДт)<>sum(Основной.СуммаОстатокКт)";
тз=SQL.ВыполнитьИнструкцию(ТекстЗапроса);
//Debug.ViewVT(тз);
тз.GroupBy("Счет","СНД,СНК,ДО,КО,СКД,СКК,СНДРС,СНКРС,СКДРС,СККРС");
и естественно это не самым лучшим образом влияет на производительность
в общем такие вот дела