-- Получим остатки
SELECT
	БИ.Субконто1 AS [Товар $Субконто],
	БИ.Субконто1_вид AS Товар_вид,
	БИ.КоличествоОстаток AS Количество
FROM (
	SELECT
		Счет
		,Валюта
		,Субконто1,Субконто1_вид
		
		,SUM(КоличествоОстаток) КоличествоОстаток
		,CASE WHEN SUM(КоличествоОстаток) > 0 THEN SUM(КоличествоОстаток) ELSE 0 END КоличествоОстатокДт
		,CASE WHEN SUM(КоличествоОстаток) < 0 THEN -SUM(КоличествоОстаток) ELSE 0 END КоличествоОстатокКт
	
FROM (
		SELECT
			bkttl_vt.ACCID AS Счет
			,bkttl_vt.CURRID AS Валюта
			,CASE WHEN bkttl_vt.VSC0 = '  EL' THEN bkttl_vt.SC0
			WHEN bkttl_vt.VSC1 = '  EL' THEN bkttl_vt.SC1
			WHEN bkttl_vt.VSC2 = '  EL' THEN bkttl_vt.SC2
			END Субконто1
			,'  EL' Субконто1_вид
			
			,CASE WHEN bkttl_vt.KIND = '3' THEN bkttl_vt.SD+bkttl_vt.OBDT1-bkttl_vt.OBKT1 ELSE 0 END AS КоличествоОстаток
		FROM
			__1S_BKTTL bkttl_vt
		INNER JOIN vt_Счета a
ccfilter
		ON bkttl_vt.ACCID = accfilter.val
		WHERE (bkttl_vt.DATE = '20140701')
		AND (bkttl_vt.KIND = '3')
		AND ('  EL' IN (bkttl_vt.VSC0,bkttl_vt.VSC1,bkttl_vt.VSC2))
		
		AND (SUBSTR(CASE WHEN bkttl_vt.VSC0 = '  EL' THEN bkttl_vt.SC0
			WHEN bkttl_vt.VSC1 = '  EL' THEN bkttl_vt.SC1
			WHEN bkttl_vt.VSC2 = '  EL' THEN bkttl_vt.SC2
			END,-9) IN (SELECT val FROM vt_ВыбТовар))
		
		
	UNION ALL
		
		SELECT
			entry_vt.ACCDTID
		
	,CASE WHEN entry_vt.DTFLAGS & 1 = 1 THEN entry_vt.CURRID ELSE '     0   ' END
			,CASE WHEN entry_vt.VDTSC0 = '  EL' THEN entry_vt.DTSC0
			WHEN entry_vt.VDTSC1 = '  EL' THEN entry_vt.DTSC1
			WHEN entry_vt.VDTSC2 = '  EL' THEN entry_vt.DTSC2
			END
			,'  EL'
			
			,-entry_vt.AMOUNT
		FROM __1S_ENTRY entry_vt
		WHERE (entry_vt.ACCDTID IN (SELECT val FROM vt_Счета))
		AND (entry_vt.idx_DATE_TIME_DOCID_NUMBER_CORNO >= '201407238TYJM8  
1RJNЦБ ') 
		AND (entry_vt.idx_DATE_TIME_DOCID_NUMBER_CORNO < '20140801     0     0   ')
		AND (entry_vt.ACTIVE = ' ')
		AND ('  EL' IN (entry_vt.VDTSC0,entry_vt.VDTSC1,entry_vt.VDTSC2))
		
		AND (SUBSTR(CASE WHEN entry_vt.VDTSC0 = '  EL' THEN entry_vt.DTSC0
			WHEN entry_vt.VDTSC1 = '  EL' THEN entry_vt.DTSC1
			WHEN entry_vt.VDTSC2 = '  EL' THEN entry_vt.DTSC2
			END,-9) IN (SELECT val FROM vt_ВыбТовар))
		
		AND (entry_vt.PROVKIND <>
 'K')
		
	UNION ALL
		
		SELECT
			entry_vt.ACCKTID
			,CASE WHEN entry_vt.KTFLAGS & 1 = 1 THEN entry_vt.CURRID ELSE '     0   ' END
			,CASE WHEN entry_vt.VKTSC0 = '  EL' THEN entry_vt.KTSC0
			WHEN entry_vt.VKTSC1 = '  EL' THEN entry_vt.KTSC1
			WHEN entry_vt.VKTSC2 = '  EL' THEN entry_vt.KTSC2
			END
			,'  EL'
			
			,entry_vt.AMOUNT
		FROM __1S_ENTRY AS entry_vt
		WHERE (entry_vt.ACCKTID IN (SELECT val FROM vt_Счета))
		AND (
entry_vt.idx_DATE_TIME_DOCID_NUMBER_CORNO >= '201407238TYJM8  1RJNЦБ ') 
		AND (entry_vt.idx_DATE_TIME_DOCID_NUMBER_CORNO < '20140801     0     0   ')
		AND (entry_vt.ACTIVE = ' ')
		AND ('  EL' IN (entry_vt.VKTSC0,entry_vt.VKTSC1,entry_vt.VKTSC2))
		
		AND (SUBSTR(CASE WHEN entry_vt.VKTSC0 = '  EL' THEN entry_vt.KTSC0
			WHEN entry_vt.VKTSC1 = '  EL' THEN entry_vt.KTSC1
			WHEN entry_vt.VKTSC2 = '  EL' THEN entry_vt.KTSC2
			END,-9) IN (
SELECT val FROM vt_ВыбТовар))
		
		AND (entry_vt.PROVKIND <> 'D')
		
		) AS accountingbalance
	GROUP BY
		Счет,Валюта
		,Субконто1,Субконто1_вид
		
	HAVING (SUM(КоличествоОстаток) <> 0)
) AS БИ
create table x(
 [DOCID] char(9) collate _1C not null
,[NUMBER] numeric(5, 0) not null
,[CORNO] numeric(5, 0) not null
,[DATE] char(8) not null
,[TIME] char(6) collate _1C not null
,[ACCDTID] char(9) collate _1C not null
,[ACCKTID] char(9) collate _1C not null
,[SUM] numeric(14, 2) not null
,[CURRID] char(9) collate _1C not null
,[CURSUM] numeric(14, 2) not null
,[AMOUNT] numeric(14, 3) not null
,[PROVKIND] char(1) collate _1C not nul
l
,[ACTIVE] char(1) collate _1C not null
,[DTFLAGS] numeric(1, 0) not null
,[KTFLAGS] numeric(1, 0) not null
,[DOCLINENO] numeric(4, 0) not null
,[SP547] char(50) collate _1C not null
,[SP548] char(2) collate _1C not null
,[SP27565] char(25) collate _1C not null
,[VDTSC0] char(4) collate _1C not null
,[DTSC0] char(13) collate _1C not null
,[ODTSC0] numeric(1, 0) not null
,[VDTSC1] char(4) collate _1C not null
,[DTSC1] char(13) collate
 _1C not null
,[ODTSC1] numeric(1, 0) not null
,[VDTSC2] char(4) collate _1C not null
,[DTSC2] char(13) collate _1C not null
,[ODTSC2] numeric(1, 0) not null
,[VKTSC0] char(4) collate _1C not null
,[KTSC0] char(13) collate _1C not null
,[OKTSC0] numeric(1, 0) not null
,[VKTSC1] char(4) collate _1C not null
,[KTSC1] char(13) collate _1C not null
,[OKTSC1] numeric(1, 0) not null
,[VKTSC2] char(4) collate _1C not null
,[KTSC2] char(13) c
ollate _1C not null
,[OKTSC2] numeric(1, 0) not null
, idx_DOCID_NUMBER_CORNO char(19) collate _1C default null
, idx_DATE_TIME_DOCID_NUMBER_CORNO char(33) collate _1C default null
, idx_SUM_DATE_TIME_DOCID_NUMBER_CORNO char(47) collate _1C default null
, idx_SP548_DATE_TIME_DOCID_NUMBER_CORNO char(35) collate _1C default null
)
create table x(
 [DATE] char(8) not null
,[ACCID] char(9) collate _1C not null
,[CURRID] char(9) collate _1C not null
,[KIND] char(1) collate _1C not null
,[OBDT1] char(15) collate _1C not null
,[OBKT1] char(15) collate _1C not null
,[OBDT2] char(15) collate _1C not null
,[OBKT2] char(15) collate _1C not null
,[OBDT3] char(15) collate _1C not null
,[OBKT3] char(15) collate _1C not null
,[SD] char(15) collate _1C not null
,[FLAGS] nume
ric(1, 0) not null
,[VSC0] char(4) collate _1C not null
,[SC0] char(13) collate _1C not null
,[OSC0] numeric(1, 0) not null
,[VSC1] char(4) collate _1C not null
,[SC1] char(13) collate _1C not null
,[OSC1] numeric(1, 0) not null
,[VSC2] char(4) collate _1C not null
,[SC2] char(13) collate _1C not null
,[OSC2] numeric(1, 0) not null
, idx_DATE_KIND_ACCID_SC0_SC1_SC2_CURRID char(66) collate _1C default null
)
Подбор индекса для таблицы 1SBKTTL:
	Ограничения: DATE=; KIND=; ACCID=; 
	В кэше не найдено
	Выбран индекс ACC1: DTOS(DATE)+KIND+ACCID+SC0+SC1+SC2+CURRID
	Стоимость: 56
Подбор индекса для таблицы 1SBKTTL:
	Ограничения: DATE=; KIND=; ACCID=; 
	Найдено в кэше
	Выбран индекс ACC1: DTOS(DATE)+KIND+ACCID+SC0+SC1+SC2+CURRID
	Стоимость: 56
Подбор индекса для таблицы 1SENTRY:
	Ограничения: DATETIME[dx_DATE_TIME_DOCID_NUMBER_CORNO]>=; DATETIME[dx_DATE_TIME_DOCID_NUMBER_CORNO]<; ACTIVE=; 
	В кэше не найдено
	Выбран индекс DATETIME: DTOS(DATE)+TIME+DOCID+STR(NUMBER,5)+STR(CORNO,5)
	Стоимость: 22
Подбор индекса для таблицы 1SENTRY:
	Ограничения: DATETIME[dx_DATE_TIME_DOCID_NUMBER_CORNO]>=; DATETIME[dx_DATE_TIME_DOCID_NUMBER_CORNO]<; ACTIVE=; 
	Найдено в кэше
	Выбран индекс DATETIME: DTOS(DATE)+TIME+DOCID+STR(NUMBER,5)+STR(CORNO,5)
	Стоимость: 22
Время подготовки запроса: 26 мс, время выполнения запроса: 252 мс.