Ниже, информация из справки по 1с

```1c
    РезультатЗапроса = Запрос.Выполнить();
    Если НЕ РезультатЗапроса.Пустой() Тогда // избыточный вызов
    Выборка = РезультатЗапроса.Выбрать();
    Пока Выборка.Следующий() Цикл
    ...

    правильно:

    Выборка = Запрос.Выполнить().Выбрать();
    Пока Выборка.Следующий() Цикл
```

Подскажите, когда правильно использовать метод Пустой, результата запроса?

Всегда думал, что РезультатЗапроса.Выбрать(); это ресурсоёмкая операция.
И чтобы её не дёргать лишний раз, нужно вначале проверить на пустоту.
Если НЕ РезультатЗапроса.Пустой()
---
Выбрать() вообще не ресурсоемкая операция. Легко проверить - создайте запрос который выдаст более миллиона записей и увидите, что Выбрать() выполняется за мгновение.

Стандарты, если их перефразировать на человеческий язык говорят следующее:
Проверку на Пустой() нужно делать когда нам нужен ответ на вопрос - пустой результат или нет. То есть например мы делаем запрос цель которого ответить на вопрос "да/нет?".

Пример:

```1c
    ЕстьОстатки = Не РезультатЗапроса.Пустой();
```

Но если нам интересно само содержание результата запроса то эта проверка избыточна т.к. от нее мы ничего не выиграем, кроме захламления кода лишней проверкой.

Пример: Заполнение табличной части печатной формы. Нам же не интересно пустой результат или нет, мы просто его обходим и добавляем новые строки в табличный документ. Если выборка пустая - будет 0 строк т.к. цикл ни разу не пройдет, ну и ладно.
---
Всегда думал, что РезультатЗапроса.Выбрать(); это ресурсоёмкая операция.

Нууу, Выполнить() тоже ресурсоёмкая операция только для СУБД.

3. Выполнение запроса

После присвоения текста и установки параметров, запрос запускается на выполнение с помощью метода "Выполнить()" объекта "Запрос". Этот метод возвращает другой объект "РезультатЗапроса", содержащий выбранные данные из базы данных.
---
почему выше, в коде написано - "избыточный вызов"?
и когда он таковым не является?
---
Не является - когда не нужна выборка, очевидно.
---
Подскажите, когда правильно использовать метод Пустой, результата запроса?
Когда нужно выполнить действия при пустом результате запроса.
---
Но ведь в той же справке, из которой вы привели код, содержится исчерпывающее объяснение. https://its.1c.ru/db/v8std#content:438:hdoc

1. Проверку того, что результат выполнения запроса не содержит строк следует выполнять с помощью метода Пустой. Поскольку на получение выборки из результата запроса (выгрузка его в таблицу значений) будет затрачиваться дополнительное время.
Неправильно:
```1c
    Выборка = Запрос.Выполнить().Выбрать();
    Если Выборка.Следующий() Тогда
    Возврат Истина;
    Иначе
    Возврат Ложь;
    КонецЕсли;
```

Правильно:
```1c
    Возврат НЕ Запрос.Выполнить().Пустой()
```

2. В то же время если требуется выбрать (или выгрузить) результат запроса, то предварительный вызов метода Пустой не требуется.
Например, вместо:
```1c
    РезультатЗапроса = Запрос.Выполнить();
    Если НЕ РезультатЗапроса.Пустой() Тогда // избыточный вызов
    Выборка = РезультатЗапроса.Выбрать();
    Пока Выборка.Следующий() Цикл
    ...
```

правильно:
```1c
    Выборка = Запрос.Выполнить().Выбрать();
    Пока Выборка.Следующий() Цикл
    ...
```
---
Иногда нужно объяснение объяснения. Я его получил.
---
Выбрать() вообще не ресурсоемкая операция. Легко проверить - создайте запрос который выдаст более миллиона записей и увидите, что Выбрать() выполняется за мгновение.

Стандарты, если их перефразировать на человеческий язык говорят следующее:
Проверку на Пустой() нужно делать когда нам нужен ответ на вопрос - пустой результат или нет. То есть например мы делаем запрос цель которого ответить на вопрос "да/нет?".

Пример:

```1c
    ЕстьОстатки = Не РезультатЗапроса.Пустой();
```

Но если нам интересно само содержание результата запроса то эта проверка избыточна т.к. от нее мы ничего не выиграем, кроме захламления кода лишней проверкой.

Пример: Заполнение табличной части печатной формы. Нам же не интересно пустой результат или нет, мы просто его обходим и добавляем новые строки в табличный документ. Если выборка пустая - будет 0 строк т.к. цикл ни разу не пройдет, ну и ладно.
---
мы просто его обходим и добавляем новые строки в табличный документ.Это избыточно. Есть же СКД )))
---
Выбрать() вообще не ресурсоемкая операция. Легко проверитьСоздай запрос, отдающий не плоскую таблицу, а несколько уровней итогов с дополнением периодов, например. На твой же миллион записей. Замерь. Подумай, почему так.