SET NOCOUNT ON

SELECT prec
FROM syscolumns sc WITH (nolock)
WHERE (sc.id = OBJECT_ID('_1SBKTTL'))
	AND (sc.name = 'SC0')


SELECT st.name Имя
	, sc.prec Длина
	, sc.scale Точность
FROM syscolumns sc WITH (nolock)
	INNER JOIN systypes st WITH (nolock) ON sc.type = st.type
WHERE (sc.id = OBJECT_ID('_1SBKTTL'))
	AND (sc.name = 'SP2636')


if exists(select * from tempdb..sysobjects where id = object_id('tempdb..#БИОстатки_vt0'))
	drop table #БИОстатки_vt0
if exists(select * from tempdb..sysobjects where id = object_id('tempdb..#БИОбороты_vt0'))
	drop table #БИОбороты_vt0


SELECT РазделительУчета, Счет, Валюта
	, Субконто1, Субконто1_вид, Субконто2, Субконто2_вид
	, CAST(0 AS numeric(15, 3)) КоличествоНачальныйОстаток
	, CAST(0 AS numeric(15, 2)) СуммаНачальныйОстаток
	, CAST(0 AS numeric(15, 2)) ВалютнаяСуммаНачальныйОстаток
	, КоличествоОборотДт
	, КоличествоОборотКт
	, СуммаОборотДт
	, СуммаОборотКт
	, ВалютнаяСуммаОборотДт
	, ВалютнаяСуммаОборотКт
	, CAST(0 AS numeric(15, 3)) КоличествоКонечныйОстаток
	, CAST(0 AS numeric(15, 2)) СуммаКонечныйОстаток
	, CAST(0 AS numeric(15, 2)) ВалютнаяСуммаКонечныйОстаток
	, Период
INTO #БИОбороты_vt0
FROM (
SELECT sq0_vt.РазделительУчета
	, sq0_vt.Счет
	, sq0_vt.Валюта
	, sq0_vt.Субконто1, sq0_vt.Субконто1_вид, sq0_vt.Субконто2, sq0_vt.Субконто2_вид
	, sq0_vt.Период
	, Sum(sq0_vt.СуммаОборотДт) - Sum(sq0_vt.СуммаОборотКт) СуммаОборот
	, Sum(sq0_vt.ВалютнаяСуммаОборотДт) - Sum(sq0_vt.ВалютнаяСуммаОборотКт) ВалютнаяСуммаОборот
	, Sum(sq0_vt.КоличествоОборотДт) - Sum(sq0_vt.КоличествоОборотКт) КоличествоОборот
	, Sum(sq0_vt.СуммаОборотДт) СуммаОборотДт
	, Sum(sq0_vt.ВалютнаяСуммаОборотДт) ВалютнаяСуммаОборотДт
	, Sum(sq0_vt.КоличествоОборотДт) КоличествоОборотДт
	, Sum(sq0_vt.СуммаОборотКт) СуммаОборотКт
	, Sum(sq0_vt.ВалютнаяСуммаОборотКт) ВалютнаяСуммаОборотКт
	, Sum(sq0_vt.КоличествоОборотКт) КоличествоОборотКт
FROM (
	SELECT _1SBKTTL_vt.SP2636 РазделительУчета
		, _1SBKTTL_vt.CURRID Валюта
		, _1SBKTTL_vt.ACCID Счет
		, CASE WHEN _1SBKTTL_vt.KIND = '1' THEN _1SBKTTL_vt.OBDT1 ELSE 0 END СуммаОборотДт
		, CASE WHEN _1SBKTTL_vt.KIND = '1' THEN _1SBKTTL_vt.OBKT1 ELSE 0 END СуммаОборотКт
		, CASE WHEN _1SBKTTL_vt.KIND = '2' THEN _1SBKTTL_vt.OBDT1 ELSE 0 END ВалютнаяСуммаОборотДт
		, CASE WHEN _1SBKTTL_vt.KIND = '2' THEN _1SBKTTL_vt.OBKT1 ELSE 0 END ВалютнаяСуммаОборотКт
		, CASE WHEN _1SBKTTL_vt.KIND = '3' THEN _1SBKTTL_vt.OBDT1 ELSE 0 END КоличествоОборотДт
		, CASE WHEN _1SBKTTL_vt.KIND = '3' THEN _1SBKTTL_vt.OBKT1 ELSE 0 END КоличествоОборотКт
		, CASE WHEN _1SBKTTL_vt.VSC0 = 1609 THEN _1SBKTTL_vt.SC0 WHEN _1SBKTTL_vt.VSC1 = 1609 THEN _1SBKTTL_vt.SC1 WHEN _1SBKTTL_vt.VSC2 = 1609 THEN _1SBKTTL_vt.SC2 WHEN _1SBKTTL_vt.VSC3 = 1609 THEN _1SBKTTL_vt.SC3 END Субконто1, 1609 Субконто1_вид
		, CASE WHEN _1SBKTTL_vt.VSC0 = 13426 THEN _1SBKTTL_vt.SC0 WHEN _1SBKTTL_vt.VSC1 = 13426 THEN _1SBKTTL_vt.SC1 WHEN _1SBKTTL_vt.VSC2 = 13426 THEN _1SBKTTL_vt.SC2 WHEN _1SBKTTL_vt.VSC3 = 13426 THEN _1SBKTTL_vt.SC3 END Субконто2, 13426 Субконто2_вид
		, _1SBKTTL_vt.[DATE] Период
	FROM _1SBKTTL AS _1SBKTTL_vt WITH (NOLOCK)
		
	WHERE (_1SBKTTL_vt.[DATE] = '20110101')
		AND (_1SBKTTL_vt.PLANID = 16046)
		AND ((_1SBKTTL_vt.SP2636 = '     A   ') AND ((CASE WHEN _1SBKTTL_vt.VSC0 = 1609 THEN _1SBKTTL_vt.SC0 WHEN _1SBKTTL_vt.VSC1 = 1609 THEN _1SBKTTL_vt.SC1 WHEN _1SBKTTL_vt.VSC2 = 1609 THEN _1SBKTTL_vt.SC2 WHEN _1SBKTTL_vt.VSC3 = 1609 THEN _1SBKTTL_vt.SC3 END) = '   ELORTA'))
		AND (_1SBKTTL_vt.KIND IN ('1', '2', '3'))
		AND (1609 IN (_1SBKTTL_vt.VSC0, _1SBKTTL_vt.VSC1, _1SBKTTL_vt.VSC2, _1SBKTTL_vt.VSC3))
		AND (13426 IN (_1SBKTTL_vt.VSC0, _1SBKTTL_vt.VSC1, _1SBKTTL_vt.VSC2, _1SBKTTL_vt.VSC3))

) sq0_vt
GROUP BY sq0_vt.РазделительУчета
	, sq0_vt.Счет
	, sq0_vt.Валюта
	, sq0_vt.Субконто1, sq0_vt.Субконто1_вид, sq0_vt.Субконто2, sq0_vt.Субконто2_вид
	, sq0_vt.Период
HAVING (Sum(sq0_vt.СуммаОборотДт) <> 0)
	OR (Sum(sq0_vt.ВалютнаяСуммаОборотДт) <> 0)
	OR (Sum(sq0_vt.КоличествоОборотДт) <> 0)
	OR (Sum(sq0_vt.СуммаОборотКт) <> 0)
	OR (Sum(sq0_vt.ВалютнаяСуммаОборотКт) <> 0)
	OR (Sum(sq0_vt.КоличествоОборотКт) <> 0)
) sq1_vt


SELECT РазделительУчета, Счет, Валюта
	, Субконто1, Субконто1_вид, Субконто2, Субконто2_вид
	, КоличествоОстаток
	, СуммаОстаток
	, ВалютнаяСуммаОстаток
INTO #БИОстатки_vt0
FROM ((SELECT РазделительУчета
	, Счет
	, Валюта
	, Субконто1, Субконто2, 1609 Субконто1_вид, 13426 Субконто2_вид
	, Sum(СуммаОстаток) СуммаОстаток
	, CASE WHEN Sum(СуммаОстаток) > 0 THEN  Sum(СуммаОстаток) ELSE 0 END СуммаОстатокДт
	, CASE WHEN Sum(СуммаОстаток) < 0 THEN -Sum(СуммаОстаток) ELSE 0 END СуммаОстатокКт
	, Sum(ВалютнаяСуммаОстаток) ВалютнаяСуммаОстаток
	, CASE WHEN Sum(ВалютнаяСуммаОстаток) > 0 THEN  Sum(ВалютнаяСуммаОстаток) ELSE 0 END ВалютнаяСуммаОстатокДт
	, CASE WHEN Sum(ВалютнаяСуммаОстаток) < 0 THEN -Sum(ВалютнаяСуммаОстаток) ELSE 0 END ВалютнаяСуммаОстатокКт
	, Sum(КоличествоОстаток) КоличествоОстаток
	, CASE WHEN Sum(КоличествоОстаток) > 0 THEN  Sum(КоличествоОстаток) ELSE 0 END КоличествоОстатокДт
	, CASE WHEN Sum(КоличествоОстаток) < 0 THEN -Sum(КоличествоОстаток) ELSE 0 END КоличествоОстатокКт
FROM (SELECT _1SBKTTL_vt.SP2636 РазделительУчета
		, _1SBKTTL_vt.ACCID Счет
		, _1SBKTTL_vt.CURRID Валюта
		, CASE WHEN _1SBKTTL_vt.VSC0 = 1609 THEN _1SBKTTL_vt.SC0 WHEN _1SBKTTL_vt.VSC1 = 1609 THEN _1SBKTTL_vt.SC1 WHEN _1SBKTTL_vt.VSC2 = 1609 THEN _1SBKTTL_vt.SC2 WHEN _1SBKTTL_vt.VSC3 = 1609 THEN _1SBKTTL_vt.SC3 END Субконто1
		, CASE WHEN _1SBKTTL_vt.VSC0 = 13426 THEN _1SBKTTL_vt.SC0 WHEN _1SBKTTL_vt.VSC1 = 13426 THEN _1SBKTTL_vt.SC1 WHEN _1SBKTTL_vt.VSC2 = 13426 THEN _1SBKTTL_vt.SC2 WHEN _1SBKTTL_vt.VSC3 = 13426 THEN _1SBKTTL_vt.SC3 END Субконто2
		, CASE WHEN KIND = '1' THEN (_1SBKTTL_vt.SD) ELSE 0 END СуммаОстаток
		, CASE WHEN KIND = '2' THEN (_1SBKTTL_vt.SD) ELSE 0 END ВалютнаяСуммаОстаток
		, CASE WHEN KIND = '3' THEN (_1SBKTTL_vt.SD) ELSE 0 END КоличествоОстаток
	FROM _1SBKTTL AS _1SBKTTL_vt WITH (NOLOCK)
		
	WHERE (_1SBKTTL_vt.DATE = '20110101')
		AND (_1SBKTTL_vt.KIND IN ('1', '2', '3'))
		AND (_1SBKTTL_vt.PLANID = 16046)
		AND ((_1SBKTTL_vt.SP2636 = '     A   ') AND ((CASE WHEN _1SBKTTL_vt.VSC0 = 1609 THEN _1SBKTTL_vt.SC0 WHEN _1SBKTTL_vt.VSC1 = 1609 THEN _1SBKTTL_vt.SC1 WHEN _1SBKTTL_vt.VSC2 = 1609 THEN _1SBKTTL_vt.SC2 WHEN _1SBKTTL_vt.VSC3 = 1609 THEN _1SBKTTL_vt.SC3 END) = '   ELORTA'))
		AND (1609 IN (_1SBKTTL_vt.VSC0, _1SBKTTL_vt.VSC1, _1SBKTTL_vt.VSC2, _1SBKTTL_vt.VSC3))
		AND (13426 IN (_1SBKTTL_vt.VSC0, _1SBKTTL_vt.VSC1, _1SBKTTL_vt.VSC2, _1SBKTTL_vt.VSC3))
) sq_vt
GROUP BY РазделительУчета, Счет, Валюта, Субконто1, Субконто2
HAVING (Sum(СуммаОстаток) <> 0)
	OR (Sum(ВалютнаяСуммаОстаток) <> 0)
	OR (Sum(КоличествоОстаток) <> 0)
)) sq1_vt


CREATE UNIQUE CLUSTERED INDEX PK_vt
ON #БИОбороты_vt0 (РазделительУчета, Счет, Валюта
	, Субконто1, Субконто2, Период)
CREATE UNIQUE CLUSTERED INDEX PK_vt
ON #БИОстатки_vt0 (РазделительУчета, Счет, Валюта
	, Субконто1, Субконто2)

AccountsRecordset::ПарситьБИОстаткиОбороты(Строка ТекстЗапроса=SELECT Счет
					, Субконто1 Контрагент
					, Субконто2 Договор
					, SUM(СуммаНачальныйОстаток) СуммаНач
					, SUM(СуммаОборот) СуммаОборот
   				, SUM(СуммаКонечныйОстаток) СуммаКон
					, Период
			  INTO #ОборотыПоМесяцам 
			  FROM
					$БИОстаткиОбороты.Национальный(:НачДата, :КонДата ~,Месяц,,,, (Контрагенты,Договоры),(РазделительУчета = :ВыбФирма) AND (Субконто1 = :ВыбКонтрагент)) БИОборотыОсновной
			  GROUP BY Счет, Субконто1, Субконто2, Период
) : Meta name parser error: недопустимое значение параметра "$НачалоПериода.МЕСЯЦ" (2)
рс.ExecuteStatement(рсТекстЗапроса);
{\\fstore\Dll\Classes\AccountsRecordsetV3.ert(3392) }