Отбор значения по нескольким строкам табличной части.
Добрый день.
Есть справочник с дополнительными реквизитами. Доп реквизиты - это табличная часть с полями свойство и значение. Свойств может быть разное количество. Как найти элемент справочника, который содержит все свойства и соответственно значения, переданные в условии.
Хотелось бы это все провернуть с помощью запроса, но не соображу с алгоритмом.
Можно весь справочник выгрузить в таблицу и в цикле отбирать строки по условию, но как то это "не гламурно".
Есть справочник с дополнительными реквизитами. Доп реквизиты - это табличная часть с полями свойство и значение. Свойств может быть разное количество. Как найти элемент справочника, который содержит все свойства и соответственно значения, переданные в условии.
Хотелось бы это все провернуть с помощью запроса, но не соображу с алгоритмом.
Можно весь справочник выгрузить в таблицу и в цикле отбирать строки по условию, но как то это "не гламурно".
По теме из базы знаний
Найденные решения
(1)
ВЫБРАТЬ
СправочникДР.Ссылка КАК Ссылка,
КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Свойства.НомерСтроки) КАК Количество
ИЗ
Справочник.МойСправочник.ДополнительныеРеквизиты КАК СправочникДР
ГДЕ
(СправочникДР.Свойство = &Свойство1
И СправочникДР.Значение = &Значение1)
ИЛИ (СправочникДР.Свойство = &Свойство2
И СправочникДР.Значение = &Значение2)
СГРУППИРОВАТЬ ПО
Свойства.Ссылка
ИМЕЮЩИЕ
КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Свойства.НомерСтроки) = &КоличествоСвойств
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Берем консоль запросов. Пишем запрос к требуемой таблице, здесь это, наверное, тч справочника. Передаем параметры.
Потом надо будет еще добавить условие, что все параметры присутствуют в выборке, но это потом. Где результат выполнения первой части задачи?
Потом надо будет еще добавить условие, что все параметры присутствуют в выборке, но это потом. Где результат выполнения первой части задачи?
(2) Спасибо, что просто не написал :"Нужно написать запрос".
Запрос примерно выглядит так
В таком случае получаю 0 строчек, если "И" меняю на "ИЛИ" получаю много лишнего.
Запрос примерно выглядит так
ВЫБРАТЬ
ХарактеристикиНоменклатурыДополнительныеРеквизиты.Ссылка КАК Ссылка,
ХарактеристикиНоменклатурыДополнительныеРеквизиты.Свойство КАК Свойство,
ХарактеристикиНоменклатурыДополнительныеРеквизиты.Значение КАК Значение
ИЗ
Справочник.ХарактеристикиНоменклатуры.ДополнительныеРеквизиты КАК ХарактеристикиНоменклатурыДополнительныеРеквизиты
ГДЕ
(ХарактеристикиНоменклатурыДополнительныеРеквизиты.Свойство = &Свойство1
И ХарактеристикиНоменклатурыДополнительныеРеквизиты.Значение = &Значение1)
И (ХарактеристикиНоменклатурыДополнительныеРеквизиты.Свойство = &Свойство2
И ХарактеристикиНоменклатурыДополнительныеРеквизиты.Значение = &Значение2)
ПоказатьВ таком случае получаю 0 строчек, если "И" меняю на "ИЛИ" получаю много лишнего.
(3) ЗначенияСвойствОбъектов, вроде так называется регистр сведений, куда все значения, записанные в тч дополнительные реквизиты записываются, нужно запрос к нему делать, Объект это и будет нужный элемент справочника, а свойства и значения передать массивами в параметры
(4)
Это не РС, а справочник в которм хранятся значения дополнительных реквизитов .... просто сами ссылки на эти значения. А привязка каждого значения хранится именно в таблице ДополнительныеРеквизиты
(6) Это стандартный механизм БСП
дополнительные реквизиты записываются, нужно запрос к нему делать, Объект это и будет нужный элемент справочника, а свойства и значения передать массивами в параметры
Это не РС, а справочник в которм хранятся значения дополнительных реквизитов .... просто сами ссылки на эти значения. А привязка каждого значения хранится именно в таблице ДополнительныеРеквизиты
(6) Это стандартный механизм БСП
В этом запросе ты хочешь получить строки, в которых свойство сразу и 1 и 2. И значение.
Было бы странно, если бы там было не пусто...
Может быть, здесь надо получить отдельно элементы, у которых есть свойство 1, отдельно - у которых свойство 2? ведь каждое свойство - это разные строки в таблице базы данных...?
Получим два набора элементов, потом их пересечение даст нам искомое?
Было бы странно, если бы там было не пусто...
Может быть, здесь надо получить отдельно элементы, у которых есть свойство 1, отдельно - у которых свойство 2? ведь каждое свойство - это разные строки в таблице базы данных...?
Получим два набора элементов, потом их пересечение даст нам искомое?
(1)
ВЫБРАТЬ
СправочникДР.Ссылка КАК Ссылка,
КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Свойства.НомерСтроки) КАК Количество
ИЗ
Справочник.МойСправочник.ДополнительныеРеквизиты КАК СправочникДР
ГДЕ
(СправочникДР.Свойство = &Свойство1
И СправочникДР.Значение = &Значение1)
ИЛИ (СправочникДР.Свойство = &Свойство2
И СправочникДР.Значение = &Значение2)
СГРУППИРОВАТЬ ПО
Свойства.Ссылка
ИМЕЮЩИЕ
КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Свойства.НомерСтроки) = &КоличествоСвойств
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот