Имя: Пароль:
1C
1С v8
Получить все объекты у которых есть перечень свойств (УПП 1с8.2)
0 Pronych
 
27.01.13
21:26
//Есть таблица значений ТЗСвойств в которой перечислены свойства и значения
   //Необходимо получить все объекты в которых есть все эти свойства с указанными значениями.
   //Пример: Есть свойства: 1)Длинна=1200 2)Ширина=800
   //Есть в справочнике номенклатуры два элемента Стол1 и Стол2 с такими значениями
   //Подскажите как организовать запрос чтоб он выдал эти элементы?
   
//Мой вариант: (вопрос: возможно ли организовать одним запросом?)
   //ТЗСвойств= Новый ТаблицаЗначений;
   //ТЗСвойств.Колонки.Добавить("Свойство", ,"Свойство");
   //ТЗСвойств.Колонки.Добавить("Значение", ,"Значение");
   Запрос = Новый Запрос();
   ТекстЗапроса = "ВЫБРАТЬ
   |    ЗначенияСвойствОбъектов.Объект КАК Объект,
   |    ЗначенияСвойствОбъектов.Свойство КАК Свойство,
   |    ЗначенияСвойствОбъектов.Значение КАК Значение
   |ИЗ
   |    РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
   |ГДЕ
   |    ЗначенияСвойствОбъектов.Свойство В(&СписокСвойств)
   |;";
   Запрос.Текст = ТекстЗапроса;
   СписокСвойств = Новый СписокЗначений;
   Для Каждого Строка Из ТЗСвойств Цикл
       СписокСвойств.Добавить(Строка.Свойство);
   КонецЦикла;
   Запрос.УстановитьПараметр("СписокСвойств", СписокСвойств);
   ТЗ = Запрос.Выполнить().Выгрузить();
   ТЗ.Сортировать("Объект,Свойство");
   //Тут перебор ТЗ и вывод тех в которых присувствуют все свойства
1 ДенисЧ
 
27.01.13
21:33
а еслт тз в таблицу выгрузиьт и с не й объединить?
2 Бешеная Нога
 
27.01.13
21:36
таблицу номенклатуры два раза соединить с регистром свойств по Ссылка=Объект и по свойствам и значения равным параметрам
3 Pronych
 
27.01.13
21:52
(2) Может быть вариант что количество свойств не 2 как в примере а 10 и для каждого запроса может быть разное количество.
4 Pronych
 
27.01.13
21:53
(1) Не совсем понял как именно ...
Независимо от того, куда вы едете — это в гору и против ветра!