Имя: Пароль:
1C
1С v8
Конструкция "имеющие" в запросе.
,
0 Быдлокодер 80 lvl
 
21.01.12
15:46
Доброго времени суток! Сделал запрос:
ВЫБРАТЬ
   КомплектующиеНоменклатуры.Номенклатура КАК Номенклатура//,
   //СУММА(ВЫБОР
   //        КОГДА КомплектующиеНоменклатуры.Комплектующая.ВидНоменклатуры = ЗНАЧЕНИЕ(Справочник.ВидыНоменклатуры.Упаковка)
   //            ТОГДА 1
   //        ИНАЧЕ 0
   //    КОНЕЦ) КАК КоличествоРазличныхУпаковок,
   //СУММА(1) КАК КоличествоРазличныхКомплектующих
ИЗ
   РегистрСведений.КомплектующиеНоменклатуры КАК КомплектующиеНоменклатуры

СГРУППИРОВАТЬ ПО
   КомплектующиеНоменклатуры.Номенклатура

ИМЕЮЩИЕ
   СУММА(ВЫБОР
           КОГДА КомплектующиеНоменклатуры.Комплектующая.ВидНоменклатуры = ЗНАЧЕНИЕ(Справочник.ВидыНоменклатуры.Упаковка)
               ТОГДА 1
           ИНАЧЕ 0
       КОНЕЦ) = СУММА(1)

С комментарием и без него получается нужный результат. Мне нужна только номенклатура, поэтому количество не важно. В справке не нашел - правильно ли я понял, что в предложении "ИМЕЮЩИЕ" можно накладывать условия даже на те поля, которых нет в списке выбираемых?
1 vicof
 
21.01.12
16:03
2 Kom-off
 
21.01.12
17:24
(0) Не совсем. В предложении имеющие можно накладывать условия на поля, которые являются результатом группировки, т.е. на результаты агрегатных функций, например СУММА(), КОЛИЧЕСТВО() и пр. А накладывать условия на поля, которых нет в списке выбираемых можно и в предложении ГДЕ. Например, выбираешь ты из справочника контрагентов только ссылку. Никто не мешает тебе при этом прописать условия в предложении ГДЕ по любым реквизитам справочника контрагенты.