Запрос с поиском по группам

1. Dobro210 19.08.22 09:58 Сейчас в теме
У меня есть справочник Номенклатура 5-ту уровней и есть справочник Скидки, скидка может быть как на отдельную номенклатуру , так и на группу. Как мне сделать запрос , чтобы если нет скидки на номенклатуру то , искалось по родителю , если нет по родителю , то по родителю родителя. Надеюсь вы меня поняли .


Запрос.Текст =
"ВЫБРАТЬ
| Скидки.Номенклатура КАК Номенклатура,
| Скидки.Номенклатура.ЭтоГруппа КАК НоменклатураЭтоГруппа,
| Скидки.Номенклатура.Родитель КАК НоменклатураРодитель,
| Скидки.РазмерСкидки КАК РазмерСкидки
|ИЗ
| Справочник.Скидки КАК Скидки
|ГДЕ
| Скидки.Номенклатура В ИЕРАРХИИ(&Номенклатура)";


Запрос.УстановитьПараметр("Номенклатура",СтрокаНоменклатура);
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Sashares 34 19.08.22 10:11 Сейчас в теме
(1)Например, можно составить таблицу с колонками Номенклатура и ПорядокСкидки, где в колонке Номенклатура в первой строке будет ссылка на номенклатуру с порядком скидки 1, во второй строке родитель номенклатуры с порядком скидки 2, и тд.

Далее засунуть эту таблицу в запрос и соединиться (внутреннее соединение) со справочником скидок и упорядочить по полю ПорядокСкидки. Первая строка результата запроса - эта нужная скидка.
3. tolyan_ekb 104 19.08.22 10:30 Сейчас в теме
(1) нужно для номенклатуры получить все данные транзитивным замыканием в запросе https://infostart.ru/1c/articles/158512/, а замтем уже соединить со справочником скидки и выбрать заполненные значения.
4. soft_wind 19.08.22 11:00 Сейчас в теме
(1)попробуйте такой запрос
Выбрать первые 100
таб.ссылка как Номенклатура,
ЕстьNull(Скидка0.РазмерСкидки,
	ЕстьNull(Скидка1.РазмерСкидки,
		ЕстьNull(Скидка2.РазмерСкидки,0)
))как РазмерСкидки,

//это для наглядности, потом можно убрать
Скидка0.РазмерСкидки как РазмерСкидкиТовара,
Скидка1.РазмерСкидки как РазмерСкидкиГруппы1,
Скидка2.РазмерСкидки как РазмерСкидкиГруппы2 
//и так далее
из
Справочник.Номенклатура Таб

левое соединение Справочник.Скидки как Скидка0
	по Таб.Ссылка = Скидка0.Номенклатура
левое соединение Справочник.Скидки как Скидка1
	по Таб.Родитель = Скидка1.Номенклатура
левое соединение Справочник.Скидки как Скидка2
	по Таб.Родитель.Родитель = Скидка2.Номенклатура
//и так далее
Где
Таб.Ссылка = &Номенклатура //можно убрать, получим таблицу

Показать
Оставьте свое сообщение

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