1С8 Пример 1с запроса: используем ОБЪЕДИНИТЬ

Пример 1с запроса: Вывести закупки в валюте по рублевому курсу

Тонкость в том, что в таблице "курсы валют" нет записей рублевых курсов, только USD и EUR. Поэтому к курсу искусственно добавим строчку для рублей (в запросе это место отмечено //*** после слова ОБЪЕДИНИТЬ). Связь таблиц тоже не обошлась без "выкрутасов".

ВЫБРАТЬ
	Закупки.Период,
	Закупки.Регистратор,
	Закупки.НомерСтроки,
	Закупки.Активность,
	Закупки.Номенклатура,
	Закупки.ХарактеристикаНоменклатуры,
	Закупки.СтатусПартии,
	Закупки.ЗаказПоставщику,
	Закупки.ДоговорКонтрагента,
	Закупки.ДокументЗакупки,
	Закупки.Проект,
	Закупки.Подразделение,
	Закупки.Организация,
	Закупки.Контрагент,
	Закупки.Количество,
	Закупки.Стоимость,
	Закупки.НДС,
	Закупки.Регистратор.ВалютаДокумента,
	КурсыВалют.Валюта,
	ВЫБОР 
		КОГДА Закупки.Регистратор.ВалютаДокумента = &ВалютаРуб
		ТОГДА 1
		ИНАЧЕ КурсыВалют.курс
	КОНЕЦ КАК КурсВалюты,
	//КурсыВалют.курс,
	Закупки.Стоимость / КурсыВалют.курс КАК СтоимостьВВалюте
ИЗ
	РегистрНакопления.Закупки КАК Закупки
	СОЕДИНЕНИЕ 
		(		
		ВЫБРАТЬ // таблица курсов
			КурсыВалют.Период,
			КурсыВалют.Валюта,
			КурсыВалют.Курс
		ИЗ	РегистрСведений.КурсыВалют КАК КурсыВалют
	
		ОБЪЕДИНИТЬ
		// ***
		// к таблице курсов добавим виртуальный рублевый курс 
		// - строку с рублевым курсом	
		ВЫБРАТЬ // к 
			NULL КАК Период,
			&ВалютаРуб КАК Валюта,
			1 КАК курс	
			
		) КАК КурсыВалют
	ПО 
		(// 1. связываем по периоду и валюте			
			РАЗНОСТЬДАТ(Закупки.Период, КурсыВалют.Период, ДЕНЬ) = 0 
			И Закупки.Регистратор.ВалютаДокумента = КурсыВалют.Валюта	
			)
			
			// ***
			// 2. или если валюта==Рубли, то связываем с виртуальной строчкой
			// рублевого курса 			
			ИЛИ
			(Закупки.Регистратор.ВалютаДокумента = &ВалютаРуб и 
			КурсыВалют.Период ЕСТЬ NULL
		)	
ГДЕ 	
	КурсыВалют.Валюта = &ПарВалюта

Результат запроса:

Пример 1с запроса: ОБЪЕДИНИТЬ




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

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

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

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

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

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

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