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

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


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


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

Далее засунуть эту таблицу в запрос и соединиться (внутреннее соединение) со справочником скидок и упорядочить по полю ПорядокСкидки. Первая строка результата запроса - эта нужная скидка.
3. tolyan_ekb 199 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.Номенклатура
//и так далее
Где
Таб.Ссылка = &Номенклатура //можно убрать, получим таблицу

Показать
Оставьте свое сообщение
Вакансии
Программист 1С
Оренбург
зарплата от 120 000 руб.
Полный день

Ведущий Инженер - программист 1С
Новокузнецк
зарплата от 100 000 руб.
Полный день

Программист 1C
Москва
Полный день

Главный специалист (Программист 1с)
Подольск
зарплата от 100 000 руб. до 110 000 руб.
Полный день

Программист
Москва
зарплата от 200 000 руб. до 230 000 руб.
Полный день