Как получить одним запросом все товары из заказа, которые являются комплектами

1. shirei 17.10.23 17:45 Сейчас в теме
Как получить одним запросом все товары из заказа, которые являются комплектами?
Хочу из таблицы Товары из заказа клиента вытянуть все товары, а затем проверить являются ли они комплектом в Справочнике ВариантыКомплектацииНоменклатуры.

Пока на ум приходит только написать запрос:
ВЫБРАТЬ
    ВариантыКомплектацииНоменклатурыТовары.Номенклатура КАК Номенклатура,
    ВариантыКомплектацииНоменклатурыТовары.Характеристика КАК Характеристика,
    ВариантыКомплектацииНоменклатурыТовары.Количество КАК Количество
ИЗ
    Справочник.ВариантыКомплектацииНоменклатуры.Товары КАК ВариантыКомплектацииНоменклатурыТовары
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВариантыКомплектацииНоменклатуры КАК ВариантыКомплектацииНоменклатуры
	    ПО ВариантыКомплектацииНоменклатурыТовары.Ссылка = ВариантыКомплектацииНоменклатуры.Ссылка
ГДЕ
    ВариантыКомплектацииНоменклатуры.Владелец = &Владелец
    И ВариантыКомплектацииНоменклатуры.Характеристика = &Характеристика
Показать


И загонять туда циклом построчно данные из таблицы и если находит радуемся жизни, но насколько знаю запросы в цикле являются грубой ошибкой при программировании и лучше такого избегать.

Подскажите как поступить
По теме из базы знаний
Найденные решения
4. shirei 17.10.23 19:41 Сейчас в теме
(2) Спасибо, что натолкнули на мысль! Всё получилось!

ВЫБРАТЬ
					ВариантыКомплектацииНоменклатурыТовары.Номенклатура КАК Номенклатура,
					ВариантыКомплектацииНоменклатурыТовары.Характеристика КАК Характеристика,
					ВариантыКомплектацииНоменклатурыТовары.Количество КАК Количество
				ИЗ
					Справочник.ВариантыКомплектацииНоменклатуры.Товары КАК ВариантыКомплектацииНоменклатурыТовары
						ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ВариантыКомплектацииНоменклатуры КАК ВариантыКомплектацииНоменклатуры
							ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
								ЗаказКлиентаТовары.Характеристика КАК Характеристика,
								ЗаказКлиентаТовары.Номенклатура КАК Номенклатура
							ИЗ
								Документ.ЗаказКлиента.Товары КАК ЗаказКлиентаТовары
							ГДЕ
								ЗаказКлиентаТовары.Ссылка = &Ссылка) КАК ВложенныйЗапрос
							ПО ВариантыКомплектацииНоменклатуры.Характеристика = ВложенныйЗапрос.Характеристика
								И ВариантыКомплектацииНоменклатуры.Владелец = ВложенныйЗапрос.Номенклатура
						ПО ВариантыКомплектацииНоменклатурыТовары.Ссылка = ВариантыКомплектацииНоменклатуры.Ссылка
Показать
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. booksfill 17.10.23 18:20 Сейчас в теме
Фразу "являются ли они комплектом в Справочнике ВариантыКомплектацииНоменклатуры" не понял, т.к. исходя из вашего же запроса никоим образом присутствие товара в этом справочнике не говорит о том, что номенклатура является комплектом, а только о том, что она может входить в состав какого -то комплекта.

В остальном как-то так:

ВЫБРАТЬ РАЗРЕШЕННЫЕ
Номенклатура,  ХарактеристикаНоменклатуры //или как там она у вас называется
Поместить ВТ
ИЗ Документ.ЗаказПокупателя.Товары
ГДЕ Ссылка = &ВашЗаказ
Индексировать ПО Номенклатура,  ХарактеристикаНоменклатуры;

//Если у вас заказ еще не записан, то выгружайте таб. часть в ТЗ и подставляйте ее в верхний запрос вместо
//Документ.ЗаказПокупателя.Товары;

ВЫБРАТЬ РАЗРЕШЕННЫЕ
ВариантыКомплектацииНоменклатурыТовары.Номенклатура КАК Номенклатура,
ВариантыКомплектацииНоменклатурыТовары.Характеристика КАК Характеристика,
СУММА(ВариантыКомплектацииНоменклатурыТовары.Количество) КАК Количество
ИЗ
Справочник.ВариантыКомплектацииНоменклатуры.Товары КАК ВариантыКомплектацииНоменклатурыТовары

ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ КАК ВТ
ПО ВТ.Номенклатура = ВариантыКомплектацииНоменклатурыТовары.Номенклатура 
И ВТ.ХарактеристикаНоменклатуры = ВариантыКомплектацииНоменклатурыТовары.Характеристика

Сгруппировать ПО
ВариантыКомплектацииНоменклатурыТовары.Номенклатура,
ВариантыКомплектацииНоменклатурыТовары.Характеристика

Показать
3. shirei 17.10.23 18:43 Сейчас в теме
(2) На сколько я знаю в справочнике ВариантыКомплектацииНоменклатуры содержится информация о комплекте, если передать значения Владелец и Номенклатура, запросом выше можно получить комплектующие из которых состоит товар.
Вот как раз и хотел узнать как можно запросом проверить является ли товар из моей таблицы комплектом и получить товары из которых этот комплект состоит
4. shirei 17.10.23 19:41 Сейчас в теме
(2) Спасибо, что натолкнули на мысль! Всё получилось!

ВЫБРАТЬ
					ВариантыКомплектацииНоменклатурыТовары.Номенклатура КАК Номенклатура,
					ВариантыКомплектацииНоменклатурыТовары.Характеристика КАК Характеристика,
					ВариантыКомплектацииНоменклатурыТовары.Количество КАК Количество
				ИЗ
					Справочник.ВариантыКомплектацииНоменклатуры.Товары КАК ВариантыКомплектацииНоменклатурыТовары
						ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ВариантыКомплектацииНоменклатуры КАК ВариантыКомплектацииНоменклатуры
							ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
								ЗаказКлиентаТовары.Характеристика КАК Характеристика,
								ЗаказКлиентаТовары.Номенклатура КАК Номенклатура
							ИЗ
								Документ.ЗаказКлиента.Товары КАК ЗаказКлиентаТовары
							ГДЕ
								ЗаказКлиентаТовары.Ссылка = &Ссылка) КАК ВложенныйЗапрос
							ПО ВариантыКомплектацииНоменклатуры.Характеристика = ВложенныйЗапрос.Характеристика
								И ВариантыКомплектацииНоменклатуры.Владелец = ВложенныйЗапрос.Номенклатура
						ПО ВариантыКомплектацииНоменклатурыТовары.Ссылка = ВариантыКомплектацииНоменклатуры.Ссылка
Показать
5. nomad_irk 76 18.10.23 08:08 Сейчас в теме
(4)Святая Корова...
ВЫБРАТЬ
	ВариантыКомплектацииНоменклатурыТовары.Номенклатура КАК Номенклатура,
	ВариантыКомплектацииНоменклатурыТовары.Характеристика КАК Характеристика,
	ВариантыКомплектацииНоменклатурыТовары.Количество КАК Количество
ИЗ
	Документ.ЗаказКлиента.Товары КАК ЗаказКлиентаТовары
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ВариантыКомплектацииНоменклатуры.Товары КАК ВариантыКомплектацииНоменклатурыТовары
		ПО (ЗаказКлиентаТовары.Номенклатура = ВариантыКомплектацииНоменклатурыТовары.Ссылка.Владелец)
			И (ЗаказКлиентаТовары.Характеристика = ВариантыКомплектацииНоменклатурыТовары.Характеристика)
			И (ЗаказКлиентаТовары.Ссылка = &Ссылка)
Показать

или вообще вот так:
ВЫБРАТЬ
	ВариантыКомплектацииНоменклатурыТовары.Номенклатура КАК Номенклатура,
	ВариантыКомплектацииНоменклатурыТовары.Характеристика КАК Характеристика,
	ВариантыКомплектацииНоменклатурыТовары.Количество КАК Количество
ИЗ
	Справочник.ВариантыКомплектацииНоменклатуры.Товары КАК ВариантыКомплектацииНоменклатурыТовары
ГДЕ
	(ВариантыКомплектацииНоменклатурыТовары.Ссылка.Владелец, ВариантыКомплектацииНоменклатурыТовары.Характеристика) В
			(ВЫБРАТЬ
				Т.Номенклатура,
				Т.Характеристика
			ИЗ
				Документ.ЗаказКлиента.Товары КАК Т
			ГДЕ
				Т.Ссылка = &Ссылка)
Показать
Оставьте свое сообщение

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