Когда предпочтительнее получать запрос через ВыполнитьПакет?

1. user1194102 14.03.20 10:19 Сейчас в теме
Перелистываю иногда выборочно новые типовые конфигурации для саморазвития и попал на код
ПакетРезультатов = Запрос.ВыполнитьПакет();
в упп мне такой код не попадался и я чаще пишу такой код
Запрос = Новый Запрос("ВЫБРАТЬ
         | НДФЛДоходы.Ссылка
         |ИЗ
         | Справочник.ДоходыНДФЛ КАК НДФЛДоходы
         |
         |ГДЕ
         | (НДФЛДоходы.Предопределенный)");
Выборка = Запрос.Выполнить().Выбрать();

    
 Пока Выборка.Следующий() Цикл 
Показать

СП прочитал
Описание:
Последовательно выполняет все запросы и возвращает массив результатов для каждого запроса из пакета. Результаты помещаются в массив в ...

Правильно я понимаю, что Запрос.ВыполнитьПакет() сохраняет все временные таблицы пакета в массив, и можно потом к этим временным таблицам обращаться через созданный на выходе массив?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. uriah 18 14.03.20 10:40 Сейчас в теме
Использование пакетных запросов и временных таблиц значительно повышает читаемость всего отрезка данного кода. Сложные запросы, содержащие в себе еще и вложенные запросы, бывают очень трудными к восприятию. Однако если разбить длинный сложный запрос на несколько, да еще и использовать временные таблицы, то это позволит добиться не только повышения восприятия, но и в большинстве случаев приводит к повышению производительности.

Еще одна важная деталь в пользу пакетных запросов в 1С – это то, что в отличие от вложенных запросов мы можем получить отдельно результат каждого запроса в пакете.
user1194102; +1 Ответить
3. user1194102 14.03.20 10:53 Сейчас в теме
(2) Интуитивно понятно, что временные таблицы использовать в программе удобно, что бы вторично использовать полученные ранее данные, но появляются новые функции решения похожих задач, в том числе и по временным таблицам и интересно понять в чем разница между эти методами. Из СП это не совсем однозначно понятно, пробовать тоже все не успеть, а тк на форуме люди делятся тем что применяли и информация становится более понятна. Так что спасибо за ответ.
Вот нашел еще интересную реализацию работы с временными таблицами, тоже интересно было бы разобраться как это работает.
Результат = Новый Соответствие;
	
	СписокЗапросов = Новый СписокЗначений;
	
	СписокЗапросов.Добавить(
		"ВЫБРАТЬ РАЗЛИЧНЫЕ
		|	ШтрихкодыУпаковок.Ссылка КАК ШтрихкодСсылка,
		|	ШтрихкодыУпаковок.Номенклатура,
		|	ШтрихкодыУпаковок.Характеристика,
		|	ШтрихкодыУпаковок.Серия
		|ПОМЕСТИТЬ ДанныеШтрихкодовУпаковок
		|ИЗ
		|	Справочник.ШтрихкодыУпаковокТоваров КАК ШтрихкодыУпаковок
		|ГДЕ
		|	ШтрихкодыУпаковок.Ссылка В (&ШтрихкодыУпаковок)
		|	И ШтрихкодыУпаковок.Номенклатура <> &ПустаяНоменклатура
		|");
	
	СписокЗапросов.Добавить(
		ШтрихкодированиеИС.ОпределитьТекстЗапросаСвойстваМаркируемойПродукции());
	
	СписокЗапросов.Добавить(
		"ВЫБРАТЬ
		|	ДанныеШтрихкодовУпаковок.ШтрихкодСсылка   КАК ШтрихкодСсылка,
		|	СвойстваМаркируемойПродукции.ВидПродукции КАК ВидПродукции
		|ИЗ
		|	ДанныеШтрихкодовУпаковок КАК ДанныеШтрихкодовУпаковок
		|		ЛЕВОЕ СОЕДИНЕНИЕ СвойстваМаркируемойПродукции КАК СвойстваМаркируемойПродукции
		|		ПО ДанныеШтрихкодовУпаковок.Номенклатура = СвойстваМаркируемойПродукции.Номенклатура",
		"ВидыПродукцииПоШтрихкодам");
	
	Запрос = Новый Запрос;
	Запрос.УстановитьПараметр("ШтрихкодыУпаковок",  ШтрихкодыУпаковок);
	Запрос.УстановитьПараметр("ПустаяНоменклатура", ИнтеграцияИС.ПустоеЗначениеОпределяемогоТипа("Номенклатура"));
	
	РезультатыЗапроса = ИнтеграцияИС.ВыполнитьПакетЗапросов(Запрос, СписокЗапросов, Ложь);
Показать

Интересно начиная с какой платформы данная функция работает РезультатыЗапроса = ИнтеграцияИС.ВыполнитьПакетЗапросов
4. user1194102 14.03.20 19:28 Сейчас в теме
А вот есть еще разновидность получения значения запроса, как интересно
МассивРезультатов = Запрос.ВыполнитьПакетСПромежуточнымиДанными();
Trier777; adhocprog; +2 Ответить
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот