Пытаюсь разобраться с обработкой Установка ТА от DMITRO
Вот код, который переносит итоги с 16.01.08 на 21.01.08
[code] if exists (select * from tempdb..sysobjects where id = object_id('tempdb..#rgtmp') and sysstat & 0xf = 3 ) drop table #rgtmp;
select $Регистр.КнигаПокупок.КредДокумент, $Регистр.КнигаПокупок.СтавкаНДС, $Регистр.КнигаПокупок.ВидДолга, $Регистр.КнигаПокупок.СуммаРуб, $Регистр.КнигаПокупок.СуммаНДС, $Регистр.КнигаПокупок.СуммаНП into #rgtmp from $РегистрИтоги.КнигаПокупок rg where period={d '2008-01-11'};
delete from $РегистрИтоги.КнигаПокупок where period>={d '2008-01-11'}
insert $РегистрИтоги.КнигаПокупок select {d '2008-01-11'}, $Регистр.КнигаПокупок.КредДокумент, $Регистр.КнигаПокупок.СтавкаНДС, $Регистр.КнигаПокупок.ВидДолга, sum($Регистр.КнигаПокупок.СуммаРуб), sum($Регистр.КнигаПокупок.СуммаНДС), sum($Регистр.КнигаПокупок.СуммаНП) from ( select $Регистр.КнигаПокупок.КредДокумент, $Регистр.КнигаПокупок.СтавкаНДС, $Регистр.КнигаПокупок.ВидДолга, $Регистр.КнигаПокупок.СуммаРуб, $Регистр.КнигаПокупок.СуммаНДС, $Регистр.КнигаПокупок.СуммаНП from #rgtmp union all select $Регистр.КнигаПокупок.КредДокумент, $Регистр.КнигаПокупок.СтавкаНДС, $Регистр.КнигаПокупок.ВидДолга, case debkred when 0 then $ra.СуммаРуб else -$ra.СуммаРуб end, case debkred when 0 then $ra.СуммаНДС else -$ra.СуммаНДС end, case debkred when 0 then $ra.СуммаНП else -$ra.СуммаНП end from $Регистр.КнигаПокупок ra inner join _1sjourn journ on ra.iddoc=journ.iddoc where date_time_iddoc>'20080116 0 0 ' and date_time_iddoc<='20080121 0 0 ' ) as tmp group by $Регистр.КнигаПокупок.КредДокумент, $Регистр.КнигаПокупок.СтавкаНДС, $Регистр.КнигаПокупок.ВидДолга having sum($Регистр.КнигаПокупок.СуммаРуб) <> 0 or sum($Регистр.КнигаПокупок.СуммаНДС) <> 0 or sum($Регистр.КнигаПокупок.СуммаНП) <> 0
insert $РегистрИтоги.КнигаПокупок select {d '2008-01-21'}, $Регистр.КнигаПокупок.КредДокумент, $Регистр.КнигаПокупок.СтавкаНДС, $Регистр.КнигаПокупок.ВидДолга, sum($Регистр.КнигаПокупок.СуммаРуб), sum($Регистр.КнигаПокупок.СуммаНДС), sum($Регистр.КнигаПокупок.СуммаНП) from ( select $Регистр.КнигаПокупок.КредДокумент, $Регистр.КнигаПокупок.СтавкаНДС, $Регистр.КнигаПокупок.ВидДолга, $Регистр.КнигаПокупок.СуммаРуб, $Регистр.КнигаПокупок.СуммаНДС, $Регистр.КнигаПокупок.СуммаНП from $РегистрИтоги.КнигаПокупок rg where period={d '2008-01-11'} union all select $Регистр.КнигаПокупок.КредДокумент, $Регистр.КнигаПокупок.СтавкаНДС, $Регистр.КнигаПокупок.ВидДолга, case debkred when 0 then $ra.СуммаРуб else -$ra.СуммаРуб end, case debkred when 0 then $ra.СуммаНДС else -$ra.СуммаНДС end, case debkred when 0 then $ra.СуммаНП else -$ra.СуммаНП end from $Регистр.КнигаПокупок ra inner join _1sjourn journ on ra.iddoc=journ.iddoc where date_time_iddoc>'20080121 0 0 ' and date_time_iddoc<='20080121 0 0 ' ) as tmp group by $Регистр.КнигаПокупок.КредДокумент, $Регистр.КнигаПокупок.СтавкаНДС, $Регистр.КнигаПокупок.ВидДолга having sum($Регистр.КнигаПокупок.СуммаРуб) <> 0 or sum($Регистр.КнигаПокупок.СуммаНДС) <> 0 or sum($Регистр.КнигаПокупок.СуммаНП) <> 0
[/code]
Сначала мы записываем во временную таблицу все итоги, у которых Period=d '2008-01-11', то есть это итог на старую точку актуальности, прибавляем к нему приход-расход с 16 по 20 (вдруг есть движения после ТА) и записываем в таблицу итогов с полем Period 2008-01-11,это будут итоги, они же остатки на конец 20.01.08. Потом то же самое записываем на period d '2008-01-21' - здесь у нас будут лежать итоги на новую точку актуальности.
Я ведь все правильно понял?
|