8.2 Как на форме отобразить ДЕРЕВО? #504938


#0 by jyffswes
Можно создать два реквизита табличной части: НомерСтрокиГруппа И НомерСтрокиСтрока, в которые складывать номер родителя и собственный номер соответственно. Для корневых строк НомерСтрокиГруппа=0. Тогда приходится все операции программно переписывать: при открытии- строить дерево, при добавлении/копировании/удалении- изменять состав строк. Есть какой-нибудь культурный способ отобразить на форме дерево?
#1 by a_alenkin
Самый культурный - динамический список
#2 by jyffswes
можно поподробнее?
#3 by myk0lka
а если документ ещё не записан?
#4 by le_
Табличное поле на форме может иметь тип значения "ДеревоЗначений". И никакие дополнительные реквизиты (как в ) добавлять не потребуется.
#5 by le_
Если форма обычная, не управляемая...
#6 by myk0lka
+Я делал так: При изменениях в ТЧ дока формирую новое дерево на стороне сервера и далее через ЗначениеВРеквизитФормы отдаю данные форме. Может и криво, но реализуется одной простой процедурой.
#7 by jyffswes
слишком накладно
#8 by jyffswes
ап
#9 by le_
Кстати, даже в управляемой форме вместо динамического списка можно использовать таблицу значений, а в её свойствах есть способ отображения - список или дерево.
#10 by jyffswes
как организовать структуру подчиненности? Как мне сохранить в базе дерево, а потом восстановить?
#11 by le_
Как организовать структуру - зависит от того, какие там будут данные. Если создавать структуру дерева на сервере, то оч. просто выгрузить результат запроса в дерево. Как хранить - от задачи, думаю, зависит. Все дерево можно запихнуть в один реквизит объекта, если что.
#12 by jyffswes
Ведь основная задача состоит в сохранении дерева: необходимо ввести какой-то реквизит, который будет задавать родителя и руками его заполнять и руками перестраивать дерево исходя из этого реквизита. Есть какой-то культурный способ (предопределенный реквизит, исходя из значения которого платформа сама строит дерево или еще что-то) чтобы не возится с каждым чихом пользователя над этим деревом?
#13 by le_
Дерево = Запрос.Выполнить.Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);
#14 by le_
+ А потом можно делать с этим деревом всё, что хочешь. Для у строк дерева есть поле Родитель, в котором содержится индекс родительской строки дерева.
#15 by Wingless
Я там и не понял, в чем проблема в , с отображением дерева значений или с его хранением?
#16 by jyffswes
Непонятна какая должна быть структура колонок, чтобы можно было легко строить дерево и легко записывать (и легко добавлять строку и т.д.). Если ввести собственную колонку, отвечающую за значение родителя, то получается очень сложно: все надо делать руками. ВОПРОС: Как сделать, чтобы платформа делала все сама?
#17 by Wingless
2 подхода - хранить дерево в реквизите типа ХранилищеЗначения, или же как в Такой вариант тоже возможен, но придется немного покодить. Колонки добавляются 2 - одна содержит id текущей строки, другая содержит id строки-родителя.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С