Привет. Конструкцию “ИМЕЮЩИЕ” используют в запросе для наложения условий на значения агрегатных функций (СУММА, СРЕДНЕЕ, МИНИМУМ и т.д.).
Допустим мы хотим в запросе отобрать исполнителей, на которых висит более 1 невыполненной задачи:
1С (Код)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Запрос= Новый Запрос;
Запрос.Текст= "ВЫБРАТЬ
| ЗадачаИсполнителя.Исполнитель КАК Исполнитель,
| СУММА(1) КАК КоличествоЗадач
|ИЗ
| Задача.ЗадачаИсполнителя КАК ЗадачаИсполнителя
|ГДЕ
| НЕ ЗадачаИсполнителя.Выполнена
|
|СГРУППИРОВАТЬ ПО
| ЗадачаИсполнителя.Исполнитель
|
|ИМЕЮЩИЕ
| СУММА(1) > 1";
//Результат:
//Исполнитель КоличествоЗадач
//Администратор 3
//Пользователь 2
Если бы мы не знали о конструкции “ИМЕЮЩИЕ”, то сначала мы бы сгруппированную выборку поместили во временную таблицу, а уже потом в ней через конструкцию “ГДЕ” получили бы нужный результат.
В конструкторе запроса программа сама подставит условие “Имеющие” если в произвольном условии указать агрегатную функцию: