Текст запроса на языке запросов 1с 8.0:
ВЫБРАТЬ РАЗРЕШЕННЫЕ
Счет КАК Счет,
Счет.Код КАК СчетКод,
Счет.Наименование КАК СчетНаименование,
Счет.Представление КАК СчетПредставление,
Счет.Забалансовый КАК СчетЗабалансовый,
СуммаНачальныйОстатокДт КАК СуммаНачальныйОстатокДт,
СуммаНачальныйОстатокКт КАК СуммаНачальныйОстатокКт,
СуммаОборотДт КАК СуммаОборотДт,
СуммаОборотКт КАК СуммаОборотКт,
СуммаКонечныйОстатокДт КАК СуммаКонечныйОстатокДт,
СуммаКонечныйОстатокКт КАК СуммаКонечныйОстатокКт
ИЗ
РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты( &НачПериода, &КонПериода, , , НЕ Счет.Забалансовый , , Организация = &Организация ) КАК ОстаткиИОбороты
АВТОУПОРЯДОЧИВАНИЕ
ИТОГИ
СУММА(СуммаНачальныйОстатокДт),
СУММА(СуммаНачальныйОстатокКт),
СУММА(СуммаОборотДт),
СУММА(СуммаОборотКт),
СУММА(СуммаКонечныйОстатокДт),
СУММА(СуммаКонечныйОстатокКт)
ПО
Счет ИЕРАРХИЯ
Текст t-sql:
exec sp_executesql N'SELECT
#V8TblAli1_Q_000_T_001._AccountRRef f_1,
_Acc3._Code f_2,
_Acc3._Description f_3,
_Acc3._IDRRef f_4,
_Acc3._Code f_5,
_Acc3._OffBalance f_6,
#V8TblAli1_Q_000_T_001._Fld5874InitialBalanceDt f_7,
#V8TblAli1_Q_000_T_001._Fld5874InitialBalanceCt f_8,
#V8TblAli1_Q_000_T_001._Fld5874TurnoverDt f_9,
#V8TblAli1_Q_000_T_001._Fld5874TurnoverCt f_10,
#V8TblAli1_Q_000_T_001._Fld5874FinalBalanceDt f_11,
#V8TblAli1_Q_000_T_001._Fld5874FinalBalanceCt f_12,
_Acc3._OrderField _sf_1,
_Acc3._IDRRef _sf_2RRef,
_Acc3._ParentIDRRef f_13,
#V8TblAli1_Q_000_T_001._AccKind f_14
FROM
(
SELECT
_AccTtl05881_R._AccountRRef _AccountRRef,
CASE
WHEN SUM(_AccTtl05881_R._TurnoverDt5882) IS NULL
THEN CAST(CAST(0 AS NUMERIC(1,0)) AS NUMERIC(28,2))
ELSE SUM(_AccTtl05881_R._TurnoverDt5882)
END _Fld5874TurnoverDt,
CASE
WHEN SUM(_AccTtl05881_R._TurnoverCt5883) IS NULL
THEN CAST(CAST(0 AS NUMERIC(1,0)) AS NUMERIC(28,2))
ELSE SUM(_AccTtl05881_R._TurnoverCt5883)
END _Fld5874TurnoverCt,
CASE
WHEN SUM(_AccTtl05881_R._Fld5874) IS NULL
THEN CAST(CAST(0 AS NUMERIC(1,0)) AS NUMERIC(28,2))
WHEN MAX(_Acc3_Accs._Kind) = CAST(0 AS NUMERIC(1,0)) OR
MAX(_Acc3_Accs._Kind) = CAST(2 AS NUMERIC(1,0)) AND SUM(_AccTtl05881_R._Fld5874) > CAST(0 AS NUMERIC(1,0))
THEN SUM(_AccTtl05881_R._Fld5874)
ELSE CAST(CAST(0 AS NUMERIC(1,0)) AS NUMERIC(28,2))
END _Fld5874InitialBalanceDt,
CASE
WHEN SUM(_AccTtl05881_R._Fld5874) IS NULL
THEN CAST(CAST(0 AS NUMERIC(1,0)) AS NUMERIC(28,2))
WHEN MAX(_Acc3_Accs._Kind) = CAST(1 AS NUMERIC(1,0)) OR
MAX(_Acc3_Accs._Kind) = CAST(2 AS NUMERIC(1,0)) AND SUM(_AccTtl05881_R._Fld5874) < CAST(0 AS NUMERIC(1,0))
THEN - SUM(_AccTtl05881_R._Fld5874)
ELSE CAST(CAST(0 AS NUMERIC(1,0)) AS NUMERIC(28,2))
END _Fld5874InitialBalanceCt,
CASE
WHEN SUM(_AccTtl05881_R._Fld5874) IS NULL
THEN CAST(CAST(0 AS NUMERIC(1,0)) AS NUMERIC(28,2))
WHEN MAX(_Acc3_Accs._Kind) = CAST(0 AS NUMERIC(1,0)) OR
MAX(_Acc3_Accs._Kind) = CAST(2 AS NUMERIC(1,0)) AND SUM(_AccTtl05881_R._Fld5874 + _AccTtl05881_R._Turnover5884) > CAST(0 AS NUMERIC(1,0))
THEN SUM(_AccTtl05881_R._Fld5874 + _AccTtl05881_R._Turnover5884)
ELSE CAST(CAST(0 AS NUMERIC(1,0)) AS NUMERIC(28,2))
END _Fld5874FinalBalanceDt,
CASE
WHEN SUM(_AccTtl05881_R._Fld5874) IS NULL
THEN CAST(CAST(0 AS NUMERIC(1,0)) AS NUMERIC(28,2))
WHEN MAX(_Acc3_Accs._Kind) = CAST(1 AS NUMERIC(1,0)) OR
MAX(_Acc3_Accs._Kind) = CAST(2 AS NUMERIC(1,0)) AND SUM(_AccTtl05881_R._Fld5874 + _AccTtl05881_R._Turnover5884) < CAST(0 AS NUMERIC(1,0))
THEN - SUM(_AccTtl05881_R._Fld5874 + _AccTtl05881_R._Turnover5884)
ELSE CAST(CAST(0 AS NUMERIC(1,0)) AS NUMERIC(28,2))
END _Fld5874FinalBalanceCt,
CASE
WHEN SUM(_AccTtl05881_R._TurnoverDt5882 - _AccTtl05881_R._TurnoverCt5883) IS NULL
THEN CAST(CAST(0 AS NUMERIC(1,0)) AS NUMERIC(28,2))
ELSE SUM(_AccTtl05881_R._TurnoverDt5882 - _AccTtl05881_R._TurnoverCt5883)
END _Fld5874Turnover,
MAX(_Acc3_Accs._Kind) _AccKind
FROM
_AccTtl05881 _AccTtl05881_R WITH(NOLOCK)
INNER JOIN _Acc3 _Acc3_Accs WITH(NOLOCK)
ON _Acc3_Accs._IDRRef = _AccTtl05881_R._AccountRRef
LEFT OUTER JOIN _Acc3 WITH(NOLOCK)
ON _AccTtl05881_R._AccountRRef = _Acc3._IDRRef
WHERE
_AccTtl05881_R._Period = @P1 AND NOT _Acc3._OffBalance = @P2 AND _AccTtl05881_R._Fld5872RRef = @P3 AND (_AccTtl05881_R._Fld5874 <> CAST(@P4 AS NUMERIC(1,0)) OR
_AccTtl05881_R._TurnoverDt5882 <> CAST(@P4 AS NUMERIC(1,0)) OR
_AccTtl05881_R._TurnoverCt5883 <> CAST(@P4 AS NUMERIC(1,0)) OR
_AccTtl05881_R._Turnover5884 <> CAST(@P4 AS NUMERIC(1,0)))
GROUP BY
_AccTtl05881_R._AccountRRef
HAVING
CASE
WHEN SUM(_AccTtl05881_R._TurnoverDt5882) IS NULL
THEN CAST(CAST(0 AS NUMERIC(1,0)) AS NUMERIC(28,2))
ELSE SUM(_AccTtl05881_R._TurnoverDt5882)
END <> CAST(@P4 AS NUMERIC(1,0)) OR
CASE
WHEN SUM(_AccTtl05881_R._TurnoverCt5883) IS NULL
THEN CAST(CAST(0 AS NUMERIC(1,0)) AS NUMERIC(28,2))
ELSE SUM(_AccTtl05881_R._TurnoverCt5883)
END <> CAST(@P4 AS NUMERIC(1,0)) OR
CASE
WHEN SUM(_AccTtl05881_R._Fld5874) IS NULL
THEN CAST(CAST(0 AS NUMERIC(1,0)) AS NUMERIC(28,2))
WHEN MAX(_Acc3_Accs._Kind) = CAST(0 AS NUMERIC(1,0)) OR
MAX(_Acc3_Accs._Kind) = CAST(2 AS NUMERIC(1,0)) AND SUM(_AccTtl05881_R._Fld5874) > CAST(0 AS NUMERIC(1,0))
THEN SUM(_AccTtl05881_R._Fld5874)
ELSE CAST(CAST(0 AS NUMERIC(1,0)) AS NUMERIC(28,2))
END <> CAST(@P4 AS NUMERIC(1,0)) OR
CASE
WHEN SUM(_AccTtl05881_R._Fld5874) IS NULL
THEN CAST(CAST(0 AS NUMERIC(1,0)) AS NUMERIC(28,2))
WHEN MAX(_Acc3_Accs._Kind) = CAST(1 AS NUMERIC(1,0)) OR
MAX(_Acc3_Accs._Kind) = CAST(2 AS NUMERIC(1,0)) AND SUM(_AccTtl05881_R._Fld5874) < CAST(0 AS NUMERIC(1,0))
THEN - SUM(_AccTtl05881_R._Fld5874)
ELSE CAST(CAST(0 AS NUMERIC(1,0)) AS NUMERIC(28,2))
END <> CAST(@P4 AS NUMERIC(1,0)) OR
CASE
WHEN SUM(_AccTtl05881_R._Fld5874) IS NULL
THEN CAST(CAST(0 AS NUMERIC(1,0)) AS NUMERIC(28,2))
WHEN MAX(_Acc3_Accs._Kind) = CAST(0 AS NUMERIC(1,0)) OR
MAX(_Acc3_Accs._Kind) = CAST(2 AS NUMERIC(1,0)) AND SUM(_AccTtl05881_R._Fld5874 + _AccTtl05881_R._Turnover5884) > CAST(0 AS NUMERIC(1,0))
THEN SUM(_AccTtl05881_R._Fld5874 + _AccTtl05881_R._Turnover5884)
ELSE CAST(CAST(0 AS NUMERIC(1,0)) AS NUMERIC(28,2))
END <> CAST(@P4 AS NUMERIC(1,0)) OR
CASE
WHEN SUM(_AccTtl05881_R._Fld5874) IS NULL
THEN CAST(CAST(0 AS NUMERIC(1,0)) AS NUMERIC(28,2))
WHEN MAX(_Acc3_Accs._Kind) = CAST(1 AS NUMERIC(1,0)) OR
MAX(_Acc3_Accs._Kind) = CAST(2 AS NUMERIC(1,0)) AND SUM(_AccTtl05881_R._Fld5874 + _AccTtl05881_R._Turnover5884) < CAST(0 AS NUMERIC(1,0))
THEN - SUM(_AccTtl05881_R._Fld5874 + _AccTtl05881_R._Turnover5884)
ELSE CAST(CAST(0 AS NUMERIC(1,0)) AS NUMERIC(28,2))
END <> CAST(@P4 AS NUMERIC(1,0)) OR
CASE
WHEN SUM(_AccTtl05881_R._TurnoverDt5882 - _AccTtl05881_R._TurnoverCt5883) IS NULL
THEN CAST(CAST(0 AS NUMERIC(1,0)) AS NUMERIC(28,2))
ELSE SUM(_AccTtl05881_R._TurnoverDt5882 - _AccTtl05881_R._TurnoverCt5883)
END <> CAST(@P4 AS NUMERIC(1,0))
) #V8TblAli1_Q_000_T_001
LEFT OUTER JOIN _Acc3 WITH(NOLOCK)
ON #V8TblAli1_Q_000_T_001._AccountRRef = _Acc3._IDRRef
ORDER BY
_Acc3._OrderField,
_Acc3._IDRRef
SELECT @@TRANCOUNT', N'@P1 datetime,@P2 varbinary(1),@P3 varbinary(16),@P4 numeric(1,0)', {ts '2007-03-01 00:00:00'}, 0x01, 0x9BC90020ED8F451111DB842CE52B3C42, 0
Запрос может менятся в зависимости от настроек, приведена базовая версия.
Сколько же времени нужно потратить на отладку такого же запроса в t-sql-е, насколько он сложнее для человеческого восприятия и т.д. и т.п.
ЗЫ: отчет - простая оборотно-сальдовая ведомость.