Моя задача была сгруппировать много строк в дерево, не нашел примера в типовой (не сильно искал). Попался пример только с перебором всех строк и заполнения конкретного поля по условиям. Не хотелось делать постобработку, может, нужно будет переносить запрос в СКД, да и данных много, пусть делается все в базе данных.
Вот что хотелось получить
А вот как получил:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ""Поле1"" КАК Поле1,
| ""Поле2"" КАК Поле2,
| ""Поле3"" КАК Поле3,
| ""Поле3"" КАК ПолеОбщее
|ИТОГИ
| ВЫБОР
| КОГДА НЕ Поле2 ЕСТЬ NULL
| ТОГДА Поле2
| КОГДА НЕ Поле1 ЕСТЬ NULL
| ТОГДА Поле1
| КОНЕЦ КАК ПолеОбщее
|ПО
| Поле1,
| Поле2";
Дерево = Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкам);
Небольшое пояснение к запросу:
Поля три, но последний уровень не группирую, поэтому "ПолеОбщее" приравнял к "Полю3"
Замеры снял, на производительность не повлияло. Может, кто делает иначе, научите.
Тестировалось на версии платформы 8.3.16.1148.