Имя: Пароль:
1C
 
Как построить запрос по нескольким элементам
0 est
 
02.10.04
22:28
УТ 8.0 - Проблема: для нескольких элементов справочника "Номенклатура" выбрать значения свойств, в том числе назначенных, но не заданных (отсутствующих в РегСвед "ЗначенияСвойствОбъектов".
Для одного элемента в УТ делается примерно так:
   Запрос.УстановитьПараметр("НазначениеСвойств", ПланыВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Справочник_Номенклатура);
   Запрос.УстановитьПараметр("ОбъектОтбораЗначений", Товар);
   "ВЫБРАТЬ РАЗЛИЧНЫЕ    
   |    СвойстваОбъектов.Ссылка                                     КАК Свойство,
   |    СвойстваОбъектов.НазначениеСвойства                         КАК НазначениеСвойства,
   |    РегистрСведений.ЗначенияСвойствОбъектов.Значение            КАК Значение
   |ИЗ (ВЫБРАТЬ
   |            ПланВидовХарактеристик.СвойстваОбъектов.Ссылка             КАК Ссылка,
   |            ПланВидовХарактеристик.СвойстваОбъектов.ПометкаУдаления    КАК ПометкаУдаления,
   |            ПланВидовХарактеристик.СвойстваОбъектов.НазначениеСвойства КАК НазначениеСвойства
   |        ИЗ  ПланВидовХарактеристик.СвойстваОбъектов
   |        ГДЕ ПланВидовХарактеристик.СвойстваОбъектов.НазначениеСвойства В ( &НазначениеСвойств )
   |        )   КАК СвойстваОбъектов
   |ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов
   |ПО РегистрСведений.ЗначенияСвойствОбъектов.Свойство = СвойстваОбъектов.Ссылка
   |    И РегистрСведений.ЗначенияСвойствОбъектов.Объект = &ОбъектОтбораЗначений";

Подскажите, как построить запрос для нескольких элементов Номенклатуры
1 Волшебник
 
03.10.04
09:53
ВЫБРАТЬ РАЗЛИЧНЫЕ    
      РегистрСведений.ЗначенияСвойствОбъектов.Объект      КАК Объект,
      СвойстваОбъектов.Ссылка                                     КАК Свойство,
      РегистрСведений.ЗначенияСвойствОбъектов.Значение            КАК Значение
  ИЗ (ВЫБРАТЬ
              ПланВидовХарактеристик.СвойстваОбъектов.Ссылка             КАК Ссылка,
              ПланВидовХарактеристик.СвойстваОбъектов.ПометкаУдаления    КАК ПометкаУдаления,
              ПланВидовХарактеристик.СвойстваОбъектов.НазначениеСвойства КАК НазначениеСвойства
          ИЗ  ПланВидовХарактеристик.СвойстваОбъектов
          ГДЕ ПланВидовХарактеристик.СвойстваОбъектов.НазначениеСвойства В ( &НазначениеСвойств )
          )   КАК СвойстваОбъектов
  ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов
  ПО РегистрСведений.ЗначенияСвойствОбъектов.Свойство = СвойстваОбъектов.Ссылка
      И РегистрСведений.ЗначенияСвойствОбъектов.Объект В ИЕРАРХИИ (&ОбъектОтбораЗначений)

---------------

В параметр ОбъектОтбораЗначений нужно передать список элементов номенклатуры или группу справочника.
2 est
 
03.10.04
12:04
Уважаемый Волшебник, спасибо за внимание.
В предложенном варианте выбираются ИМЕЮЩИЕСЯ данные из РегСвед. Однако существуют ситуации, когда свойство назначено элементу Номенклатуры, а значение не задано - в регистре строка со свойством и значением не появляется.
В примере с одним элементом соединяются полный набор назначенных элементу свойств и записи регистра для элемента, свойства отсутствующие в регистре имеют значение Null.
3 Волшебник
 
03.10.04
12:43
ВЫБРАТЬ СпрНоменклатура.Ссылка КАК Номенклатура, ПВХСвойство Свойство, Значение
 ИЗ Справочник.Номенклатура КАК СпрНоменклатура
   
 ЛЕВОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ
 
 (ВЫБРАТЬ
             ПланВидовХарактеристик.СвойстваОбъектов.Ссылка             КАК ПВХСвойство,
             ПланВидовХарактеристик.СвойстваОбъектов.ПометкаУдаления    КАК ПометкаУдаления,
             ПланВидовХарактеристик.СвойстваОбъектов.НазначениеСвойства КАК НазначениеСвойства
         ИЗ  ПланВидовХарактеристик.СвойстваОбъектов
         ГДЕ ПланВидовХарактеристик.СвойстваОбъектов.НазначениеСвойства В ( &НазначениеСвойств )
         )   КАК СвойстваОбъектов
ПО Истина
 
ЛЕВОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ

РегистрСведений.ЗначенияСвойствОбъектов

 ПО РегистрСведений.ЗначенияСвойствОбъектов.Свойство = ПВХСвойство
     И РегистрСведений.ЗначенияСвойствОбъектов.Объект = СпрНоменклатура.Ссылка

 ГДЕ СпрНоменклатура.Ссылка В ИЕРАРХИИ (&ОбъектОтбораЗначений)
 
---------------

Этот запрос не учитывает регистр сведений "Назначения свойств объектов", в котором перечислены конкретные позиции номенклатуры и группы для свойства. Поэтому в запросе выдаются все свойства, представленные в ПВХ "СвойстваОбъектов", действующие для справочника "Номенклатура".
4 est
 
03.10.04
13:32
Спасибо Волшебнику - все получилось. Т.е. использованием условия "ПО ИСТИНА" можно соединять таблицы без совпадающих полей?
5 Волшебник
 
03.10.04
13:33
(4) Вообще-то это трюк, который не рекомендуется к применению. В результате получается декартово произведение таблиц.