Мне нужно сделать иерархический реестр, у которого иерархия строится не по паренту текущего источника данных, а по другому полю. Есть ли такие возможности в конструкторе? Или нужно полностью строить свою вьюху? И если второй вариант, то интересно, как полностью написанная мной вьюха впиливается в общую рмсную архитектуру. Или она начинает полностью жить своей жизнью? И вообще возможно ли это.
Попробую описать пример. Есть плоские данные, у которых одно из полей является объектом. И этот объект уже можно сгруппировать по парентам. Ну и соответственно задача - чтобы текущие плоские данные отображались в виде дерева.
Предположим что плоская сущность называется Х, а деревянная (ссылка на которую есть в Х) - У.
Есть несколько вариантов:
-
в сущности У сделать формульное поле, которое будет вести на Х (например c помощью sql-функции) - тогда вы сможете организовать дерево по У, но при этом по ссылке выводить поля Х
-
создать в рмс sql-представление Ц, которое возвращает набор данных из Х и У, и содержит родительское поле того же типа Ц которое заполняется по нужным условиям - тут главное чтобы идентификаторы записи Ц были с одной стороны уникальными, с друго стороны - предсказуемыми (например хеш-код от ключевых полей Х и У)
По этой вьюхе можно будет создать дерево -
создать пустую sql-вьюху Й вида
select 0 as id, 0 as parent
и в качестве типа для parent указать Й.
далее - создать дерево по этой вьюхе и добавить в него любое количество Свободных колонок (не привязанных к источнику данных) - для колонок будут созданы поля в DTO.
После этого вы сможете оверайднуть сервис дерева и заполнить его по любым нужным вам условиям. Помните, что стандартная фильтрация не распространяется на свободные колонки