Skip to content

Latest commit

 

History

History
54 lines (41 loc) · 2.21 KB

File metadata and controls

54 lines (41 loc) · 2.21 KB

Запрос в цикле

Рекомендуется получать все необходимые однотипные данные одним запросом, вместо выполнения серии запросов.

Неправильно

// БанкиДляОбработки - содержит массив банков, счета в которых необходимо обработать

ЧастныйЗапрос = Новый Запрос;
ЧастныйЗапрос.Текст =
"ВЫБРАТЬ
|	БанковскиеСчета.Ссылка КАК Счет
|ИЗ
|	Справочник.БанковскиеСчета КАК БанковскиеСчета
|ГДЕ
|	БанковскиеСчета.Банк = &Банк";

Для Каждого Банк Из БанкиДляОбработки Цикл
	ЧастныйЗапрос.УстановитьПараметр("Банк", Банк);
	ВыборкаСчетов = ЧастныйЗапрос.Выполнить().Выбрать();
	Пока ВыборкаСчетов.Следующий() Цикл
		ОбработатьСчетаВБанке(ВыборкаСчетов.Счет);
	КонецЦикла;
КонецЦикла;

Правильно

// БанкиДляОбработки - содержит массив банков, счета в которых необходимо обработать

ОбщийЗапрос = Новый Запрос;
ОбщийЗапрос.Текст =
"ВЫБРАТЬ
|	БанковскиеСчета.Ссылка КАК Счет
|ИЗ
|	Справочник.БанковскиеСчета КАК БанковскиеСчета
|ГДЕ
|	БанковскиеСчета.Банк В(&БанкиДляОбработки)";

ОбщийЗапрос.УстановитьПараметр("БанкиДляОбработки", БанкиДляОбработки);

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

См.

https://its.1c.ru/db/v8std/content/436/hdoc

https://its.1c.ru/db/pubqlang#content:150:hdoc