Skip to main content

Способы обхода результата запроса

Способы обхода выборки: в линейном порядке, в иерархическом порядке или по группировкам. Тип обхода выборки задается значением системного перечисления ОбходРезультатаЗапроса и передается в качестве параметра в метод Выбрать() объекта
РезультатЗапроса. При линейном обходе выборки будут последовательно получаться все записи из результата запроса, при иерархическом обходе получаются только записи результата запроса, находящиеся на одном уровне иерархии, при обходе по 
группировкам будут получены только родительские записи, являющие групповыми итогами. 

Тип выборки Описание Функция в коде
Линейный все записи из результата запроса

Без указания способа или

СпособВыборки = ОбходРезультатаЗапроса.Прямой;

Иерархический только записи результата запроса, находящиеся на одном уровне иерархии СпособВыборки = ОбходРезультатаЗапроса.ПоГруппировкамСИерархией;
По группировкам только родительские записи, являющие групповыми итогами СпособВыборки = ОбходРезультатаЗапроса.ПоГруппировкам;
Запрос = Новый Запрос;
Запрос.Текст = "";
РезультатЗапроса = Запрос.Выполнить();
 
СпособВыборки = ОбходРезультатаЗапроса.Прямой;
ВыборкаЗапроса = РезультатЗапроса.Выбрать(СпособВыборки);
 
Сообщение = Новый СообщениеПользователю;
Пока ВыборкаЗапроса.Следующий() Цикл
  Сообщение.Текст = "Товар: " + ВыборкаЗапроса.Товар.Наименование + 
      " Итого: " + ВыборкаЗапроса.Количество + 
      " Тип записи: " + ВыборкаЗапроса.ТипЗаписи() +
      " Уровень: " + ВыборкаЗапроса.Уровень() + 
      " Группировка: " + ВыборкаЗапроса.Группировка();
  Сообщение.Сообщить();
КонецЦикла
&НаСервереБезКонтекста
Процедура ИерархическийОбходНаСервере()
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	Товары.Товар КАК Товар,
		|	Товары.Количество КАК Количество
		|ИЗ
		|	Документ.ПоступлениеТоваров.ПереченьТоваров КАК Товары
		|
		|УПОРЯДОЧИТЬ ПО
		|	Товар
		|ИТОГИ
		|   СУММА(Количество)
		|ПО
		|   Товар Иерархия
		|";
	РезультатЗапроса = Запрос.Выполнить();
	СпособВыборки = ОбходРезультатаЗапроса.ПоГруппировкамСИерархией;
	ВыборкаЗапроса = РезультатЗапроса.Выбрать(СпособВыборки);
	Сообщение = Новый СообщениеПользователю;
    Пока ИерархическаяВыборка.Следующий() Цикл
      Сообщение.Текст = "Товар: " + ИерархическаяВыборка.Товар.Наименование + 
        " Количество: " + ИерархическаяВыборка.Количество + 
        " Тип записи: " + ИерархическаяВыборка.ТипЗаписи() +
        " Уровень: " + ИерархическаяВыборка.Уровень() + 
        " Группировка: " + ИерархическаяВыборка.Группировка();
       Сообщение.Сообщить();
    КонецЦикла;
КонецПроцедуры

Выгрузка в таблицу значений

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