Всем привет! есть подозрение что вопрос очень древний, но к сожалению, сломал мозг и в инете ответа не нашел. Итак проблема:
есть иерархический справочник с произвольным уровнем иерархии для каждой группы. есть элементы - и не только на самом нижнем уровне групп.
как через запрос вывести этот справочник в иерархии с группами и элементами? использование ОбходРезультатаЗапроса.ПоГруппировкамСИерархией выводит только самый верхний уровень, даже если есть рекурсия
Запрос.Текст =
"ВЫБРАТЬ
| Магазины.Ссылка КАК Ссылка
|ИЗ
| Справочник.Магазины КАК Магазины
|ГДЕ
| Магазины.Владелец = &Владелец
| И НЕ Магазины.ПометкаУдаления
|ИТОГИ ПО
| Ссылка ТОЛЬКО ИЕРАРХИЯ";
ВыборкаСсылка = Результат.Выбрать(ОбходРезультатаЗапроса.ПРЯМОЙ);
Родитель = ДеревоМагазинов;
ПредидущийУровень = "";
НоваяСтрока = ДеревоМагазинов;
Пока ВыборкаСсылка.Следующий() Цикл
Если ВыборкаСсылка.Уровень() <> ПредидущийУровень Тогда
Если ВыборкаСсылка.Уровень() = 0 Тогда
Родитель = ДеревоМагазинов;
Иначе
Родитель = НоваяСтрока;
КонецЕсли;
КонецЕсли;
Если Родитель <> ДеревоМагазинов И ВыборкаСсылка.Ссылка = Родитель.Магазин Тогда //В группе есть ссылка на саму группу
Продолжить;
КонецЕсли;
НоваяСтрока = Родитель.Строки.Добавить();
НоваяСтрока.Магазин = ВыборкаСсылка.Ссылка;
Если НачальныеМагазины.НайтиПоЗначению(НоваяСтрока.Магазин) <> Неопределено Тогда
НоваяСтрока.Использование = Истина;
КонецЕсли;
Йа русскый школь хадыл, извиняюсь за ошибки. пишу в торопях.
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший