Перейти к содержанию

Неверная проверка на пустой результат выполнения запроса

Проверку того, что результат выполнения запроса не содержит строк, следует выполнять с помощью метода Пустой. Поскольку на получение выборки из результата запроса (выгрузка его в таблицу значений) будет затрачиваться дополнительное время.

Подозрительный код

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

или

Таблица = Запрос.Выполнить().Выгрузить();
Если ЗначениеЗаполнено(Таблица) Тогда
  Возврат Истина;
Иначе
  Возврат Ложь;
КонецЕсли;

Исправленный вариант

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

В то же время если требуется выбрать (или выгрузить) результат запроса, то предварительный вызов метода Пустой не требуется. Например, вместо:

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

правильно:

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

См. также

Экранирование кода

// sonar:WrongVerifyEmptyQueryResult:off
// sonar:WrongVerifyEmptyQueryResult:on