Загрузка данных


Функция ТекстЗапросаБезНДС()
	
	Возврат
	
		"ВЫБРАТЬ
		|	ОстаткиТоваров.Номенклатура КАК Номенклатура
		|ПОМЕСТИТЬ ВТ_Остатки
		|ИЗ
		|	РегистрНакопления.ТоварыНаСкладах.Остатки(&КонецПериода, ) КАК ОстаткиТоваров
		|ГДЕ
		|	ОстаткиТоваров.ВНаличииОстаток > 0
		|;
		|
		|////////////////////////////////////////////////////////////////////////////////
		|// Гейт по паре документ + номенклатура.
		|// ПериодУстановки нужен для определения последней цены: у поступлений,
		|// загруженных пачкой, Дата совпадает, а период регистра различается.
		|// Цена > 0 отсекает установки цен с пустым содержимым.
		|////////////////////////////////////////////////////////////////////////////////
		|ВЫБРАТЬ
		|	УстановкаЦен.ДокументОснование КАК Основание,
		|	ЦеныНоменклатуры25.Номенклатура КАК Номенклатура,
		|	МАКСИМУМ(ЦеныНоменклатуры25.Период) КАК ПериодУстановки
		|ПОМЕСТИТЬ ВТ_ДокУстановкаЦен
		|ИЗ
		|	РегистрСведений.ЦеныНоменклатуры25 КАК ЦеныНоменклатуры25
		|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.УстановкаЦенНоменклатуры КАК УстановкаЦен
		|		ПО ЦеныНоменклатуры25.Регистратор = УстановкаЦен.Ссылка
		|ГДЕ
		|	УстановкаЦен.Проведен
		|	И УстановкаЦен.ДокументОснование ССЫЛКА Документ.ПриобретениеТоваровУслуг
		|	И ЦеныНоменклатуры25.ВидЦены = &ВидЦены
		|	И ЦеныНоменклатуры25.Цена > 0
		|	И ЦеныНоменклатуры25.Номенклатура В
		|			(ВЫБРАТЬ
		|				ВТ_Остатки.Номенклатура
		|			ИЗ
		|				ВТ_Остатки КАК ВТ_Остатки)
		|
		|СГРУППИРОВАТЬ ПО
		|	УстановкаЦен.ДокументОснование,
		|	ЦеныНоменклатуры25.Номенклатура
		|;
		|
		|////////////////////////////////////////////////////////////////////////////////
		|// Свёртка по документу: несколько строк одной номенклатуры в одном ПТиУ
		|// дают одно наблюдение, а не несколько.
		|////////////////////////////////////////////////////////////////////////////////
		|ВЫБРАТЬ
		|	ДокТовары.Номенклатура КАК Номенклатура,
		|	Док.Ссылка КАК Ссылка,
		|	Док.Дата КАК Дата,
		|	ВТ_ДокУстановкаЦен.ПериодУстановки КАК ПериодУстановки,
		|	СУММА(ВЫБОР
		|			КОГДА Док.ЦенаВключаетНДС
		|				ТОГДА ДокТовары.Сумма - ДокТовары.СуммаНДС
		|			ИНАЧЕ ДокТовары.Сумма
		|		КОНЕЦ) КАК СуммаБезНДС,
		|	СУММА(ДокТовары.Количество) КАК Количество
		|ПОМЕСТИТЬ ВТ_ПоДокументам
		|ИЗ
		|	Документ.ПриобретениеТоваровУслуг.Товары КАК ДокТовары
		|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПриобретениеТоваровУслуг КАК Док
		|		ПО ДокТовары.Ссылка = Док.Ссылка
		|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_ДокУстановкаЦен КАК ВТ_ДокУстановкаЦен
		|		ПО Док.Ссылка = ВТ_ДокУстановкаЦен.Основание
		|			И ДокТовары.Номенклатура = ВТ_ДокУстановкаЦен.Номенклатура
		|ГДЕ
		|	Док.Проведен
		|	И ДокТовары.Количество > 0
		|	И ДокТовары.Сумма > 0
		|
		|СГРУППИРОВАТЬ ПО
		|	ДокТовары.Номенклатура,
		|	Док.Ссылка,
		|	Док.Дата,
		|	ВТ_ДокУстановкаЦен.ПериодУстановки
		|;
		|
		|////////////////////////////////////////////////////////////////////////////////
		|// Цена одного поступления
		|////////////////////////////////////////////////////////////////////////////////
		|ВЫБРАТЬ
		|	ВТ_ПоДокументам.Номенклатура КАК Номенклатура,
		|	ВТ_ПоДокументам.Ссылка КАК Ссылка,
		|	ВТ_ПоДокументам.Дата КАК Дата,
		|	ВТ_ПоДокументам.ПериодУстановки КАК ПериодУстановки,
		|	ВЫРАЗИТЬ(ВТ_ПоДокументам.СуммаБезНДС / ВТ_ПоДокументам.Количество КАК ЧИСЛО(15, 2)) КАК ЦенаДокумента
		|ПОМЕСТИТЬ ВТ_ЦеныДокументов
		|ИЗ
		|	ВТ_ПоДокументам КАК ВТ_ПоДокументам
		|;
		|
		|////////////////////////////////////////////////////////////////////////////////
		|// Средняя — простое среднее цен поступлений: (50 + 100) / 2 = 75
		|////////////////////////////////////////////////////////////////////////////////
		|ВЫБРАТЬ
		|	ВТ_ЦеныДокументов.Номенклатура КАК Номенклатура,
		|	ВЫРАЗИТЬ(СРЕДНЕЕ(ВТ_ЦеныДокументов.ЦенаДокумента) КАК ЧИСЛО(15, 2)) КАК СредняяЦена
		|ПОМЕСТИТЬ ВТ_СредняяЦена
		|ИЗ
		|	ВТ_ЦеныДокументов КАК ВТ_ЦеныДокументов
		|
		|СГРУППИРОВАТЬ ПО
		|	ВТ_ЦеныДокументов.Номенклатура
		|;
		|
		|////////////////////////////////////////////////////////////////////////////////
		|// Последняя цена определяется моментом установки цены, а не датой прихода:
		|// у загруженных пачкой поступлений Дата одинаковая.
		|////////////////////////////////////////////////////////////////////////////////
		|ВЫБРАТЬ
		|	ВТ_ЦеныДокументов.Номенклатура КАК Номенклатура,
		|	МАКСИМУМ(ВТ_ЦеныДокументов.ПериодУстановки) КАК ПериодУстановки
		|ПОМЕСТИТЬ ВТ_МаксДата
		|ИЗ
		|	ВТ_ЦеныДокументов КАК ВТ_ЦеныДокументов
		|
		|СГРУППИРОВАТЬ ПО
		|	ВТ_ЦеныДокументов.Номенклатура
		|;
		|
		|////////////////////////////////////////////////////////////////////////////////
		|// СРЕДНЕЕ оставлено как страховка: если два поступления попали в одну
		|// установку цен, период у них совпадёт.
		|////////////////////////////////////////////////////////////////////////////////
		|ВЫБРАТЬ
		|	ВТ_ЦеныДокументов.Номенклатура КАК Номенклатура,
		|	ВЫРАЗИТЬ(СРЕДНЕЕ(ВТ_ЦеныДокументов.ЦенаДокумента) КАК ЧИСЛО(15, 2)) КАК ТекущаяЦенаБезНДС
		|ПОМЕСТИТЬ ВТ_ПоследняяЦена
		|ИЗ
		|	ВТ_ЦеныДокументов КАК ВТ_ЦеныДокументов
		|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_МаксДата КАК ВТ_МаксДата
		|		ПО ВТ_ЦеныДокументов.Номенклатура = ВТ_МаксДата.Номенклатура
		|			И ВТ_ЦеныДокументов.ПериодУстановки = ВТ_МаксДата.ПериодУстановки
		|
		|СГРУППИРОВАТЬ ПО
		|	ВТ_ЦеныДокументов.Номенклатура
		|;
		|
		|////////////////////////////////////////////////////////////////////////////////
		|ВЫБРАТЬ
		|	ВТ_СредняяЦена.Номенклатура КАК Номенклатура,
		|	ВТ_СредняяЦена.Номенклатура.Код КАК Код,
		|	ВТ_СредняяЦена.Номенклатура.Артикул КАК Артикул,
		|	ВТ_СредняяЦена.Номенклатура.Марка КАК Марка,
		|	ВТ_СредняяЦена.СредняяЦена КАК СредняяЦена,
		|	ВТ_ПоследняяЦена.ТекущаяЦенаБезНДС КАК Цена
		|ИЗ
		|	ВТ_СредняяЦена КАК ВТ_СредняяЦена
		|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_ПоследняяЦена КАК ВТ_ПоследняяЦена
		|		ПО ВТ_СредняяЦена.Номенклатура = ВТ_ПоследняяЦена.Номенклатура
		|ГДЕ
		|	НЕ ВТ_СредняяЦена.Номенклатура.ПометкаУдаления
		|	И ВТ_СредняяЦена.СредняяЦена > 0
		|
		|УПОРЯДОЧИТЬ ПО
		|	Код";
	
КонецФункции