Отображение самого верхнего родителя.

1. mark_oilbass 12.07.19 06:52 Сейчас в теме
Всем привет!

Посоветуйте пожалуйста как поступить в данной ситуации.
Есть справочник с видом иерархии: иерархия элементов, количество уровней иерархии: 3. Попросили отображать самого верхнего родителя элемента справочника. И тут у меня возник вопрос как это лучше всего реализовать. Этот реквизит лучше создать в объекте и хранить его, либо просто на форме создать реквизит формы и заполнять его при открытии формы? Сложность в том что если пользователь возьмет перетащит элемент второго уровня в какой нибудь другой элемент тогда придется перезаписывать этот реквизит у подчиненных элементов. Для чего в дальнейшем этот реквизит пригодится я пока не знаю. Может он в отчетах будет участвовать, может в переносах каких нить или запросах.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
4. TimoninD 12.07.19 07:32 Сейчас в теме
(1)По хорошему, лучше разобраться зачем это нужно. Чтоб понять создавать реквизит объекта или просто на форме отображать. Не понятно как пользователи "блуждают по по элементам справочника (с 3 уровнями иерархии) и теряются". Если это нужно на время для редактирования элементов справочника, то лучше написать механизм для удобства (отчет, обработку), а не изменять объект. Если нужно для постоянной работы, то поступать следует исходя из потребностей в целом, а не текущего желания пользователей. Любое изменение конфигурации должно быть осознанным и хорошо продуманным.
mark_oilbass; user1219528; +2 Ответить
2. platonov.e 158 12.07.19 07:00 Сейчас в теме
так вроде ж вся иерархия отоброжается...
3. Alexei_Siva 182 12.07.19 07:06 Сейчас в теме
Для обработки ситуации с переносом проверять перед записью элемента и менять если верхний родитель поменялся
А так его в запросе вроде не сложно получить, необязательно новый реквизит создавать
Что-то наподобие такого в запросе
ВЫБРАТЬ
	Номенклатура.Ссылка,
	ВЫБОР
		КОГДА Номенклатура.Родитель = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
			ТОГДА Номенклатура.Родитель
		КОГДА Номенклатура.Родитель.Родитель = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
			ТОГДА Номенклатура.Родитель
		КОГДА Номенклатура.Родитель.Родитель.Родитель = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
			ТОГДА Номенклатура.Родитель.Родитель
		КОГДА Номенклатура.Родитель.Родитель.Родитель.Родитель = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
			ТОГДА Номенклатура.Родитель.Родитель.Родитель
	КОНЕЦ КАК ВерхнийРодитель
ИЗ
	Справочник.Номенклатура КАК Номенклатура
Показать
mark_oilbass; +1 Ответить
8. mark_oilbass 12.07.19 09:55 Сейчас в теме
(3) Я на данный момент сделал просто на форме реквизит, который заполняется при открытии формы элемента справочника.
5. user1219528 12.07.19 07:45 Сейчас в теме
Учитывая, что уровней только три, я бы сделал реквизит формы, который вызывает функцию в модуле менеджера этого справочника для получения элемента верхнего уровня. Однако знать бы еще, для чего это в последствии может пригодиться.
mark_oilbass; acanta; +2 Ответить
6. DenisCh 12.07.19 09:15 Сейчас в теме
Реквизит формы без привязки к элементу. При открытии получать Адама (самый верхний уровень) и выводить в этом реквизите. И не ломать голову.
Bene_Valete; mark_oilbass; +2 Ответить
7. VmvLer 12.07.19 09:21 Сейчас в теме
записывать корневого родителя в подчиненных элементах плохая идея.
как минимум это вызовет кучу неопределенностей при изменении структуры иерархии и удалении элементов. Я бы сразу зарубил этот метод и смотрел в сторону динамических методов: реквизит формы заполняемый при создании формы и чтении объекта + поле в динамических списках.
mark_oilbass; +1 Ответить
9. mark_oilbass 12.07.19 10:00 Сейчас в теме
Всем спасибо за участие!
Сделал реквизит на форме с динамическим заполнением.
Оставьте свое сообщение

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