Использование запросов внутри циклов
Рекомендуется получать все необходимые однотипные данные одним запросом вместо выполнения серии запросов.
Правильно:
// БанкиДляОбработки - содержит массив банков, счета в которых необходимо обработать
ОбщийЗапрос = Новый Запрос("
|ВЫБРАТЬ
| БанковскиеСчета.Ссылка КАК Счет
|ИЗ
| Справочник.БанковскиеСчета КАК БанковскиеСчета
|ГДЕ
| БанковскиеСчета.Банк В(&БанкиДляОбработки)");
ОбщийЗапрос.УстановитьПараметр("БанкиДляОбработки", БанкиДляОбработки);
ВыборкаСчетов = ОбщийЗапрос.Выполнить().Выбрать();
Пока ВыборкаСчетов.Следующий() Цикл
ОбработатьСчетаВБанке(ВыборкаСчетов.Счет);
КонецЦикла;
Неправильно:
// БанкиДляОбработки - содержит массив банков, счета в которых необходимо обработать
ЧастныйЗапрос = Новый Запрос("
|ВЫБРАТЬ
| БанковскиеСчета.Ссылка КАК Счет
|ИЗ
| Справочник.БанковскиеСчета КАК БанковскиеСчета
|ГДЕ
| БанковскиеСчета.Банк = &Банк");
Для каждого Банк Из БанкиДляОбработки Цикл
ЧастныйЗапрос.УстановитьПараметр("Банк", Банк);
ВыборкаСчетов = ЧастныйЗапрос.Выполнить().Выбрать();
Пока ВыборкаСчетов.Следующий() Цикл
ОбработатьСчетаВБанке(ВыборкаСчетов.Счет);
КонецЦикла;
КонецЦикла;
См также: + Многократное выполнение однотипных запросов - стандарт 1С + п. "Не использовать запросы в цикле" главы "Язык запросов 1С" из книги Язык запросов «1С:Предприятия 8»
Экранирование кода
// sonar:UseQueryInALoop:off
// sonar:UseQueryInALoop:on