Skip to content

Latest commit

 

History

History
85 lines (59 loc) · 3.34 KB

CreateQueryInCycle.md

File metadata and controls

85 lines (59 loc) · 3.34 KB

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

Тип Поддерживаются
языки
Важность Включена
по умолчанию
Время на
исправление (мин)
Теги
Ошибка BSL
OS
Критичный Да 20 performance

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

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

Примеры

Неправильно

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

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

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

Правильно

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

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

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

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

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

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

Сниппеты

Экранирование кода

// BSLLS:CreateQueryInCycle-off
// BSLLS:CreateQueryInCycle-on

Параметр конфигурационного файла

"CreateQueryInCycle": false