Два левых соединения в запросе

1. request4t 09.11.21 13:38 Сейчас в теме
Здравствуйте. Задача - вывести в динамический список цену и остаток товара. С ценой разобрался, а как вплести в запрос вычисление остатка не знаю.

ВЫБРАТЬ
	СпрНоменклатура.Ссылка КАК Ссылка,
	СпрНоменклатура.Код КАК Код,
	СпрНоменклатура.Наименование КАК Наименование,
	СпрНоменклатура.Артикул КАК Артикул,
	СпрНоменклатура.ВидНоменклатуры КАК ВидНоменклатуры,
	СпрНоменклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
	СпрНоменклатура.СтавкаНДС КАК СтавкаНДС,
	СпрНоменклатура.Родитель,
	ВложенныйЗапрос.Цена КАК Цена,
	ВЫБОР
		КОГДА СпрНоменклатура.ЕстьТоварыДругогоКачества
			ТОГДА 4 + ВЫБОР
					КОГДА СпрНоменклатура.ПометкаУдаления
						ТОГДА 1
					ИНАЧЕ 0
				КОНЕЦ + ВЫБОР
					КОГДА СпрНоменклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.НеИспользовать)
						ТОГДА 0
					ИНАЧЕ 2
				КОНЕЦ
		ИНАЧЕ ВЫБОР
				КОГДА СпрНоменклатура.ПометкаУдаления
					ТОГДА 1
				ИНАЧЕ 0
			КОНЕЦ + ВЫБОР
				КОГДА СпрНоменклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.НеИспользовать)
					ТОГДА 0
				ИНАЧЕ 2
			КОНЕЦ
	КОНЕЦ КАК ИндексКартинки
ИЗ
	Справочник.Номенклатура КАК СпрНоменклатура
		ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
			ЦеныНоменклатурыСрезПоследних.ВидЦены КАК ВидЦены,
			ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура,
			ЦеныНоменклатурыСрезПоследних.Цена КАК Цена
		ИЗ
			РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
		ГДЕ
			ЦеныНоменклатурыСрезПоследних.ВидЦены = &ВидЦены
		
		СГРУППИРОВАТЬ ПО
			ЦеныНоменклатурыСрезПоследних.ВидЦены,
			ЦеныНоменклатурыСрезПоследних.Номенклатура,
			ЦеныНоменклатурыСрезПоследних.Цена) КАК ВложенныйЗапрос
		ПО СпрНоменклатура.Ссылка = ВложенныйЗапрос.Номенклатура.Ссылка
ГДЕ
	НЕ СпрНоменклатура.ЭтоГруппа
{ГДЕ
	(СпрНоменклатура.Ссылка В
			(ВЫБРАТЬ
				Сегменты.Номенклатура
			ИЗ
				РегистрСведений.НоменклатураСегмента КАК Сегменты
			ГДЕ
				Сегменты.Сегмент = &СегментНоменклатуры))}
Показать
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. request4t 09.11.21 13:55 Сейчас в теме
оказалось проще простого) тему можно закрывать.

ВЫБРАТЬ
	СпрНоменклатура.Ссылка КАК Ссылка,
	СпрНоменклатура.Код КАК Код,
	СпрНоменклатура.Наименование КАК Наименование,
	СпрНоменклатура.Артикул КАК Артикул,
	СпрНоменклатура.ВидНоменклатуры КАК ВидНоменклатуры,
	СпрНоменклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
	СпрНоменклатура.СтавкаНДС КАК СтавкаНДС,
	СпрНоменклатура.Родитель,
	ВложенныйЗапрос.Цена КАК Цена,
	Остатки.ВНаличии КАК ВНаличии,
	ВЫБОР
		КОГДА СпрНоменклатура.ЕстьТоварыДругогоКачества
			ТОГДА 4 + ВЫБОР
					КОГДА СпрНоменклатура.ПометкаУдаления
						ТОГДА 1
					ИНАЧЕ 0
				КОНЕЦ + ВЫБОР
					КОГДА СпрНоменклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.НеИспользовать)
						ТОГДА 0
					ИНАЧЕ 2
				КОНЕЦ
		ИНАЧЕ ВЫБОР
				КОГДА СпрНоменклатура.ПометкаУдаления
					ТОГДА 1
				ИНАЧЕ 0
			КОНЕЦ + ВЫБОР
				КОГДА СпрНоменклатура.ИспользованиеХарактеристик = ЗНАЧЕНИЕ(Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.НеИспользовать)
					ТОГДА 0
				ИНАЧЕ 2
			КОНЕЦ
	КОНЕЦ КАК ИндексКартинки
ИЗ
	Справочник.Номенклатура КАК СпрНоменклатура
		ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
			ЦеныНоменклатурыСрезПоследних.ВидЦены КАК ВидЦены,
			ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура,
			ЦеныНоменклатурыСрезПоследних.Цена КАК Цена
		ИЗ
			РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
		ГДЕ
			ЦеныНоменклатурыСрезПоследних.ВидЦены = &ВидЦены
		
		СГРУППИРОВАТЬ ПО
			ЦеныНоменклатурыСрезПоследних.ВидЦены,
			ЦеныНоменклатурыСрезПоследних.Номенклатура,
			ЦеныНоменклатурыСрезПоследних.Цена) КАК ВложенныйЗапрос
		ПО СпрНоменклатура.Ссылка = ВложенныйЗапрос.Номенклатура.Ссылка
		ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
			ТоварыНаСкладах.Номенклатура КАК Номенклатура,
			СУММА(ТоварыНаСкладах.ВНаличии) КАК ВНаличии
		ИЗ
			РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах
		
		СГРУППИРОВАТЬ ПО
			ТоварыНаСкладах.Номенклатура) КАК Остатки
		ПО СпрНоменклатура.Ссылка = Остатки.Номенклатура
ГДЕ
	НЕ СпрНоменклатура.ЭтоГруппа
{ГДЕ
	(СпрНоменклатура.Ссылка В
			(ВЫБРАТЬ
				Сегменты.Номенклатура
			ИЗ
				РегистрСведений.НоменклатураСегмента КАК Сегменты
			ГДЕ
				Сегменты.Сегмент = &СегментНоменклатуры))}
Показать
3. koln 09.11.21 13:58 Сейчас в теме
1. А что мешает сделать соединение еще с одной таблицей (регистра), в которой хранятся остатки?
2.
ПО СпрНоменклатура.Ссылка = ВложенныйЗапрос.Номенклатура.Ссылка
тут получение ссылки через точку, наверно, излишне.
ВложенныйЗапрос.Номенклатура
уже и есть ссылка
3. Согласно стандартам, использование вложенных запросов в соединении не приветствуется. Рекомендуется заменять на временные таблицы.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот