Выполнение запроса в цикле (CreateQueryInCycle)¶
| Тип | Поддерживаются языки | Важность | Включена по умолчанию | Время на исправление (мин) | Теги |
|---|---|---|---|---|---|
Ошибка | BSLOS | Критичный | Да | 20 | performance |
Описание диагностики¶
Исполнение запроса в цикле.
Примеры¶
Неправильно
СписокДокументов = Новый Массив; СуммаДокументов = 0; Для индекс = 0 По СписокДокументов.ВГраница() Цикл Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ПоступлениеТоваровУслуг.СуммаДокумента |ИЗ | Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг |ГДЕ | ПоступлениеТоваровУслуг.Ссылка = &Ссылка"; Запрос.УстановитьПараметр("Ссылка", СписокДокументов[индекс]); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл СуммаДокументов = СуммаДокументов + ВыборкаДетальныеЗаписи.СуммаДокумента; КонецЦикла; КонецЦикла; Правильно
СписокДокументов = Новый Массив; СуммаДокументов = 0; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | СУММА(ПоступлениеТоваровУслуг.СуммаДокумента) КАК СуммаДокумента |ИЗ | Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг |ГДЕ | ПоступлениеТоваровУслуг.Ссылка В(&СписокДокументов)"; Запрос.УстановитьПараметр("Ссылка", СписокДокументов); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл СуммаДокументов = ВыборкаДетальныеЗаписи.СуммаДокумента; КонецЦикла; Сниппеты¶
Экранирование кода¶
// BSLLS:CreateQueryInCycle-off // BSLLS:CreateQueryInCycle-on Параметр конфигурационного файла¶
"CreateQueryInCycle": false