bsl-language-server icon indicating copy to clipboard operation
bsl-language-server copied to clipboard

[NEW] [Запросы] Проверка на пустой результат запроса

Open artbear opened this issue 5 years ago • 5 comments

Описание проблемы, ошибки, которую надо диагностировать

Разработчики нередко выполняют неточную проверку результатов запросов на пустоту\заполненность.

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

Неправильно:

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

Правильно:

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

Ссылка на источник, подтверждающее нарушение либо обоснование наличия проблемы

https://its.1c.ru/db/v8std/content/438/hdoc

Параметры диагностики

Тип Статья на русском

  • [ ] :ant: Ошибка
  • [ ] :cop: Уязвимость
  • [ ] :guardsman: Потенциальная уязвимость
  • [x] :poop: Качество кода
  • [ ] :trollface: Другое

Важность Статья на русском

  • [ ] :broken_heart: Блокирующая / Blocker
  • [ ] :heart: Критическая / Critical
  • [x] :yellow_heart: Важная / Major
  • [ ] :blue_heart: Незначительная / Minor
  • [ ] :green_heart: Информационная / Info
  • [ ] :revolving_hearts: Другое

Тэги Статья на русском

  • [x] STANDARD - "Нарушение стандартов 1С"
  • [ ] LOCKINOS - "Не будет работать в другой ОС"
  • [ ] SQL - "Проблема с запросом"
  • [x] PERFORMANCE - "Проблема производительности"
  • [ ] BRAINOVERLOAD - "Непонятный код"
  • [ ] BADPRACTICE - "Плохая практика программирования"
  • [x] CLUMSY - "Излишние действия"
  • [ ] DESIGN - "Ошибка в проектировании"
  • [ ] SUSPICIOUS - "Подозрительный код"
  • [ ] UNPREDICTABLE - "Непредсказуемо работающий код"
  • [ ] DEPRECATED - "Устаревшая функциональность"
  • [ ] ERROR - "Ошибочная конструкция"
  • [ ] LOCALIZE - "Проблемы локализации"

Время на исправление (минут)

1 минута

Дополнительная информация

artbear avatar Nov 13 '20 16:11 artbear

~частный случай~ #200

п.с. нет

asosnoviy avatar Nov 14 '20 17:11 asosnoviy

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

asosnoviy avatar Nov 14 '20 17:11 asosnoviy

Так же встречаются разновидности

Выборка.Выгрузить().Количество() > 0

asosnoviy avatar Nov 14 '20 17:11 asosnoviy

я бы проверял на Выполнить(), а затем на .Выгрузить() и .Выбрать() такие варианты встречаются только у объекта Запрос

artbear avatar Nov 15 '20 13:11 artbear

Свежий пример, буквально сегодня обновление упало с ошибкой а причина в коде image

artbear avatar Jul 27 '22 15:07 artbear