1С8 пример 1с запроса: Запрос для вычисления оборачиваемости.

Запрос использует временную таблицу мТЗКалендарь которая содержит одну колонку с датами находящимися в периоде расчета. Расчет производится только за в те дни, что указаны во временной таблице мТЗКалендарь. Например не учитывать выходные дни.

ВЫБРАТЬ
	мТЗКалендарь.ДатаДень

ПОМЕСТИТЬ TTКалендарь
ИЗ
	&мТЗКалендарь КАК мТЗКалендарь
ГДЕ
	мТЗКалендарь.ДатаДень >= &НачалоПериода
	И мТЗКалендарь.ДатаДень <= &КонецПериода
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
	ПартииТоваровНаСкладахОстаткиИОбороты.Период КАК Период,
	ПартииТоваровНаСкладахОстаткиИОбороты.Номенклатура КАК Номенклатура,
	ПартииТоваровНаСкладахОстаткиИОбороты.Склад КАК Склад,
	ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток,
	ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоПриход КАК КоличествоПриход,
	ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоРасход,
	ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоОборот,
	ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстаток
ПОМЕСТИТЬ ТТОстатки
ИЗ
	РегистрНакопления.ПартииТоваровНаСкладах.ОстаткиИОбороты(
		&НачалоПериода, &КонецПериода, День, ДвиженияИГраницыПериода, 
		{(Склад).* КАК Склад, (Номенклатура).* КАК Номенклатура, 
		(ХарактеристикаНоменклатуры).* КАК ХарактеристикаНоменклатуры}
		) КАК ПартииТоваровНаСкладахОстаткиИОбороты
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
	ПартииТоваровНаСкладахОстаткиИОбороты.Номенклатура КАК Номенклатура,
	ПартииТоваровНаСкладахОстаткиИОбороты.Склад КАК Склад,
	ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток,
	ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоПриход КАК КоличествоПриход,
	ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоРасход,
	ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоОборот,
	ПартииТоваровНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстаток
ПОМЕСТИТЬ ТТКонечныеОстаткиИСуммарноеДвижениеЗаПериод
ИЗ
	РегистрНакопления.ПартииТоваровНаСкладах.ОстаткиИОбороты(
		&НачалоПериода, &КонецПериода, Auto, ДвиженияИГраницыПериода, 
		{(Склад).* КАК Склад, (Номенклатура).* КАК Номенклатура, 
		(ХарактеристикаНоменклатуры).* КАК ХарактеристикаНоменклатуры}
		) КАК ПартииТоваровНаСкладахОстаткиИОбороты
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
	TTКалендарь.ДатаДень,
	TTКалендарь.ОстатокКоличество,
	ТТОстатки.Номенклатура КАК Номенклатура,
	ТТОстатки.Склад КАК Склад
ПОМЕСТИТЬ TTКалендарьДляВвсех
ИЗ
	TTКалендарь КАК TTКалендарь,
	ТТОстатки КАК ТТОстатки
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
	РАЗНОСТЬДАТ(ТТОстаткиНаДату.Период, TTКалендарьДляВвсех.ДатаДень, ДЕНЬ) КАК РазницаДатаДень,
	TTКалендарьДляВвсех.ДатаДень,
	TTКалендарьДляВвсех.ОстатокКоличество,
	TTКалендарьДляВвсех.Номенклатура,
	TTКалендарьДляВвсех.Склад,
	ТТОстаткиНаДату.Период,
	ТТОстаткиНаДату.КоличествоНачальныйОстаток,
	ВЫБОР
		КОГДА РАЗНОСТЬДАТ(ТТОстаткиНаДату.Период, TTКалендарьДляВвсех.ДатаДень, ДЕНЬ) = 0
			ТОГДА ТТОстаткиНаДату.КоличествоПриход
		ИНАЧЕ 0
	КОНЕЦ КАК КоличествоПриход,
	ВЫБОР
		КОГДА РАЗНОСТЬДАТ(ТТОстаткиНаДату.Период, TTКалендарьДляВвсех.ДатаДень, ДЕНЬ) = 0
			ТОГДА ТТОстаткиНаДату.КоличествоРасход
		ИНАЧЕ 0
	КОНЕЦ КАК КоличествоРасход,
	ВЫБОР
		КОГДА РАЗНОСТЬДАТ(ТТОстаткиНаДату.Период, TTКалендарьДляВвсех.ДатаДень, ДЕНЬ) = 0
			ТОГДА ТТОстаткиНаДату.КоличествоОборот
		ИНАЧЕ 0
	КОНЕЦ КАК КоличествоОборот,
	ТТОстаткиНаДату.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстаток
ПОМЕСТИТЬ ТТКалендарьОтатков
ИЗ
	TTКалендарьДляВвсех КАК TTКалендарьДляВвсех
		ЛЕВОЕ СОЕДИНЕНИЕ ТТОстатки КАК ТТОстаткиНаДату
		ПО TTКалендарьДляВвсех.ДатаДень >= ТТОстаткиНаДату.Период
			И TTКалендарьДляВвсех.Номенклатура = ТТОстаткиНаДату.Номенклатура
			И TTКалендарьДляВвсех.Склад = ТТОстаткиНаДату.Склад
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
	МИНИМУМ(ТТКалендарьОтатков.РазницаДатаДень) КАК РазницаДатаДень,
	ТТКалендарьОтатков.ДатаДень,
	ТТКалендарьОтатков.Номенклатура,
	ТТКалендарьОтатков.Склад
ПОМЕСТИТЬ ТТДниНаСкладе
ИЗ
	ТТКалендарьОтатков КАК ТТКалендарьОтатков

СГРУППИРОВАТЬ ПО
	ТТКалендарьОтатков.ДатаДень,
	ТТКалендарьОтатков.Номенклатура,
	ТТКалендарьОтатков.Склад
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
	ТТДниНаСкладе.ДатаДень КАК ДатаДень,
	ТТДниНаСкладе.Номенклатура КАК Номенклатура,
	ТТДниНаСкладе.Склад КАК Склад,
	ТТКалендарьОтатков.КоличествоПриход,
	ТТКалендарьОтатков.КоличествоРасход,
	ТТКалендарьОтатков.КоличествоОборот,
	ТТКалендарьОтатков.КоличествоКонечныйОстаток
ПОМЕСТИТЬ ТТОстаткиТовараНаСкладе
ИЗ
	ТТДниНаСкладе КАК ТТДниНаСкладе
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТТКалендарьОтатков КАК ТТКалендарьОтатков
		ПО ТТДниНаСкладе.РазницаДатаДень = ТТКалендарьОтатков.РазницаДатаДень
			И ТТДниНаСкладе.ДатаДень = ТТКалендарьОтатков.ДатаДень
			И ТТДниНаСкладе.Номенклатура = ТТКалендарьОтатков.Номенклатура
			И ТТДниНаСкладе.Склад = ТТКалендарьОтатков.Склад
ГДЕ
	(ТТКалендарьОтатков.КоличествоКонечныйОстаток <> 0
			ИЛИ ТТКалендарьОтатков.КоличествоПриход <> 0
			ИЛИ ТТКалендарьОтатков.КоличествоРасход <> 0)
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
	КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ТТОстаткиТовараНаСкладе.ДатаДень) КАК ДнейНаСкладе,
	ТТОстаткиТовараНаСкладе.Номенклатура,
	ТТОстаткиТовараНаСкладе.Склад
ПОМЕСТИТЬ ТТТоварДнейНаСкладе
ИЗ
	ТТОстаткиТовараНаСкладе КАК ТТОстаткиТовараНаСкладе

СГРУППИРОВАТЬ ПО
	ТТОстаткиТовараНаСкладе.Номенклатура,
	ТТОстаткиТовараНаСкладе.Склад
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
	ТТТоварДнейНаСкладе.Склад КАК Склад,
	ТТТоварДнейНаСкладе.Номенклатура,
	ТТТоварДнейНаСкладе.Номенклатура.Код,
	ТТОстаткиИДвижениеЗаПериод.КоличествоНачальныйОстаток,
	ТТОстаткиИДвижениеЗаПериод.КоличествоПриход,
	ТТОстаткиИДвижениеЗаПериод.КоличествоРасход КАК КоличествоРасход,
	ТТОстаткиИДвижениеЗаПериод.КоличествоОборот,
	ТТОстаткиИДвижениеЗаПериод.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстаток,
	ТТТоварДнейНаСкладе.ДнейНаСкладе,
	ВЫБОР
		КОГДА ТТТоварДнейНаСкладе.ДнейНаСкладе = 0
			ТОГДА 0
		ИНАЧЕ ТТОстаткиИДвижениеЗаПериод.КоличествоРасход / ТТТоварДнейНаСкладе.ДнейНаСкладе
	КОНЕЦ КАК проданоВДень,
	ВЫБОР
		КОГДА ТТТоварДнейНаСкладе.ДнейНаСкладе = 0
				ИЛИ ТТОстаткиИДвижениеЗаПериод.КоличествоРасход = 0
			ТОГДА 0
		ИНАЧЕ ТТОстаткиИДвижениеЗаПериод.КоличествоКонечныйОстаток / 
			(ТТОстаткиИДвижениеЗаПериод.КоличествоРасход / ТТТоварДнейНаСкладе.ДнейНаСкладе)
	КОНЕЦ КАК НаСколькоДнейТовара
ИЗ
	ТТТоварДнейНаСкладе КАК ТТТоварДнейНаСкладе
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТТКонечныеОстаткиИСуммарноеДвижениеЗаПериод 
			КАК ТТОстаткиИДвижениеЗаПериод
		ПО ТТТоварДнейНаСкладе.Номенклатура = ТТОстаткиИДвижениеЗаПериод.Номенклатура
			И ТТТоварДнейНаСкладе.Склад = ТТОстаткиИДвижениеЗаПериод.Склад

УПОРЯДОЧИТЬ ПО
	ТТТоварДнейНаСкладе.Номенклатура.Наименование,
	ТТТоварДнейНаСкладе.Склад.Наименование

Пример 1с запроса: параметры таблиц




Рекламный блок:

Предлагаем решение Ваших задач 1С.

Внедрение 1С:

Доработка и сопровождение 1С:

Ориентировочная стоимость работ программиста 1С : 500 р. за 1 час работы.

Пишите: j008@j008.ru

Звоните: 8 916 710 83 51 Ольга