bsl-language-server
bsl-language-server copied to clipboard
[NEW] [Запросы] Проверка на пустой результат запроса
Описание проблемы, ошибки, которую надо диагностировать
Разработчики нередко выполняют неточную проверку результатов запросов на пустоту\заполненность.
Проверку того, что результат выполнения запроса не содержит строк, следует выполнять с помощью метода Пустой. Поскольку на получение выборки из результата запроса (выгрузка его в таблицу значений) будет затрачиваться дополнительное время.
Неправильно:
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Возврат Истина;
Иначе
Возврат Ложь;
КонецЕсли;
Правильно:
Возврат НЕ Запрос.Выполнить().Пустой()
Ссылка на источник, подтверждающее нарушение либо обоснование наличия проблемы
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 минута
Дополнительная информация
~частный случай~ #200
п.с. нет
Выборка = Запрос.Выполнить().Выбрать();
Возврат Выборка.Следующий();
Так же встречаются разновидности
Выборка.Выгрузить().Количество() > 0
я бы проверял на Выполнить(), а затем на .Выгрузить() и .Выбрать() такие варианты встречаются только у объекта Запрос
Свежий пример, буквально сегодня обновление упало с ошибкой
а причина в коде 