Отбор значения по нескольким строкам табличной части.

1. Tigreno 10.02.25 22:15 Сейчас в теме
Добрый день.

Есть справочник с дополнительными реквизитами. Доп реквизиты - это табличная часть с полями свойство и значение. Свойств может быть разное количество. Как найти элемент справочника, который содержит все свойства и соответственно значения, переданные в условии.

Хотелось бы это все провернуть с помощью запроса, но не соображу с алгоритмом.
Можно весь справочник выгрузить в таблицу и в цикле отбирать строки по условию, но как то это "не гламурно".
По теме из базы знаний
Найденные решения
7. antz 11.02.25 10:08 Сейчас в теме
(1)
ВЫБРАТЬ
	СправочникДР.Ссылка КАК Ссылка,
	КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Свойства.НомерСтроки) КАК Количество
ИЗ
	Справочник.МойСправочник.ДополнительныеРеквизиты КАК СправочникДР
ГДЕ
    (СправочникДР.Свойство = &Свойство1
    И СправочникДР.Значение = &Значение1)
    ИЛИ (СправочникДР.Свойство = &Свойство2
    И СправочникДР.Значение = &Значение2)

СГРУППИРОВАТЬ ПО
	Свойства.Ссылка

ИМЕЮЩИЕ
	КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Свойства.НомерСтроки) = &КоличествоСвойств
Показать
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. starjevschik 11.02.25 07:23 Сейчас в теме
Берем консоль запросов. Пишем запрос к требуемой таблице, здесь это, наверное, тч справочника. Передаем параметры.
Потом надо будет еще добавить условие, что все параметры присутствуют в выборке, но это потом. Где результат выполнения первой части задачи?
3. Tigreno 11.02.25 09:32 Сейчас в теме
(2) Спасибо, что просто не написал :"Нужно написать запрос".

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


В таком случае получаю 0 строчек, если "И" меняю на "ИЛИ" получаю много лишнего.
4. user1619761 11.02.25 09:42 Сейчас в теме
(3) ЗначенияСвойствОбъектов, вроде так называется регистр сведений, куда все значения, записанные в тч дополнительные реквизиты записываются, нужно запрос к нему делать, Объект это и будет нужный элемент справочника, а свойства и значения передать массивами в параметры
6. user1619761 11.02.25 09:46 Сейчас в теме
(4) но сработает если справочник не самописный, если же самописный - то смотрите, куда у Вас там значения эти записываются.
8. Tigreno 11.02.25 11:14 Сейчас в теме
(4)
дополнительные реквизиты записываются, нужно запрос к нему делать, Объект это и будет нужный элемент справочника, а свойства и значения передать массивами в параметры


Это не РС, а справочник в которм хранятся значения дополнительных реквизитов .... просто сами ссылки на эти значения. А привязка каждого значения хранится именно в таблице ДополнительныеРеквизиты


(6) Это стандартный механизм БСП
user1619761; +1 Ответить
5. starjevschik 11.02.25 09:45 Сейчас в теме
В этом запросе ты хочешь получить строки, в которых свойство сразу и 1 и 2. И значение.
Было бы странно, если бы там было не пусто...
Может быть, здесь надо получить отдельно элементы, у которых есть свойство 1, отдельно - у которых свойство 2? ведь каждое свойство - это разные строки в таблице базы данных...?
Получим два набора элементов, потом их пересечение даст нам искомое?
7. antz 11.02.25 10:08 Сейчас в теме
(1)
ВЫБРАТЬ
	СправочникДР.Ссылка КАК Ссылка,
	КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Свойства.НомерСтроки) КАК Количество
ИЗ
	Справочник.МойСправочник.ДополнительныеРеквизиты КАК СправочникДР
ГДЕ
    (СправочникДР.Свойство = &Свойство1
    И СправочникДР.Значение = &Значение1)
    ИЛИ (СправочникДР.Свойство = &Свойство2
    И СправочникДР.Значение = &Значение2)

СГРУППИРОВАТЬ ПО
	Свойства.Ссылка

ИМЕЮЩИЕ
	КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Свойства.НомерСтроки) = &КоличествоСвойств
Показать
9. Tigreno 11.02.25 11:15 Сейчас в теме
(7) А вот это интересное решение - буду пробовать. Спасибо!!!
Оставьте свое сообщение

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