Вопрос Когда используется директива «ИМЕЮЩИЕ» в языке запросов 1С? Чем «ИМЕЮЩИЕ» отличается от условия «ГДЕ»?
Ответ Отличие директивы «ИМЕЮЩИЕ» от условия «ГДЕ» состоит в том, что ее можно использовать для агрегатных функций. Обязательным условием при этом является использование группировки по остальным полям.
Пример:
"ВЫБРАТЬ | тбЗадания.Задание, | СУММА(тбЗадания.КоличествоИсполнителей) КАК КоличествоИсполнителей |ИЗ | РегистрСведений.устВыполняемыеЗадания КАК тбЗадания |ГДЕ | тбЗадания.Выполнение |СГРУППИРОВАТЬ ПО | тбЗадания.Задание |ИМЕЮЩИЕ | СУММА(тбЗадания.КоличествоИсполнителей) > 0"
При этом есть одна особенность. Не смотря на то, что аналогичная директива на языке запросов SQL (HAVING) позволяет указать псевдоним поля, на языке запросов 1С псевдоним поля указать нельзя. Т.е. в конце нельзя написать: «ИМЕЮЩИЕ КоличествоИсполнителей > 0», — это будет неправильно, нужно полностью продублировать всю функцию (в нашем случае «СУММА(тбЗадания.КоличествоИсполнителей)»)