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

Выполнение запроса в цикле (CreateQueryInCycle)

  • Тип: Ошибка
  • Важность: Критичный
  • Включена по умолчанию: Да
  • Теги: performance

Описание диагностики

Исполнение запроса в цикле.

Примеры

Неправильно

СписокДокументов = Новый Массив;
СуммаДокументов = 0;
Для индекс = 0 По СписокДокументов.ВГраница() Цикл
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |   ПоступлениеТоваровУслуг.СуммаДокумента
        |ИЗ
        |   Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
        |ГДЕ
        |   ПоступлениеТоваровУслуг.Ссылка = &Ссылка";

    Запрос.УстановитьПараметр("Ссылка", СписокДокументов[индекс]);

    РезультатЗапроса = Запрос.Выполнить();

    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

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

Правильно

СписокДокументов = Новый Массив;
СуммаДокументов = 0;

Запрос = Новый Запрос;
Запрос.Текст =
    "ВЫБРАТЬ
    |   СУММА(ПоступлениеТоваровУслуг.СуммаДокумента) КАК СуммаДокумента
    |ИЗ
    |   Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
    |ГДЕ
    |   ПоступлениеТоваровУслуг.Ссылка В(&СписокДокументов)";

Запрос.УстановитьПараметр("Ссылка", СписокДокументов);

РезультатЗапроса = Запрос.Выполнить();

ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

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

Соответствие стандартам

Нет подтверждённых связей со стандартами.

Источник диагностики