Дерево и сохранение/восстановление открытых узлов #383231


#0 by foxey
Есть дерево с иерархией документов на табличном поле на форме. При изменении какого-либо документа через оповещение выполняется запрос и дерево перерисовывается. Вот как перед началом изменения дерева запомнить какие узлы открыты, а какие закрыты, чтобы после попытаться отобразить дерево в том же виде? Есть методы Развернут и Развернуть у строк табличного поля. Как бы их покрасивее использовать? Есть у кого-нить готовые решения?
#1 by Stepa86
Храни в дереве признак развернутости, при обновлении дерева по признакам разворачивай
#2 by foxey
При выполнении запроса дерево обновляется. Может надо в список значений закинуть пару - Документ.Ссылка и Признак развернутости? А потом при отрисовке найти выводимый документ из текущего узла в этом списке и выставить ему прежний признак развернутости?
#3 by Stepa86
Тогда хватит массива тех документов, строки у которых развернуты, и для каждого цЭл Из МассивДоков Цикл  СтрокаДляРазворачивания = Дерево.Строки.Найти(цЭл, "Док", Истина); КонецЦикла;
#4 by foxey
МассивДоков - это кто? Что в нем хранится и как он заполняется?
#5 by foxey
В общем что-то я запутался... Как пробежаться по строкам табличного поля?
#6 by Stepa86
хм... Перед обновлением дерева как то так
#7 by foxey
- А как мне запихнуть в "ПризнаРазвернутости" значения? Ловить все ПередРазворачиванием и ПередСворачиванием? По другому вроде бы никак...
#8 by Stepa86
а разве сложно?
#9 by foxey
Да вроде нет. И тут опачки... Ошибка при получении значения атрибута контекста (Ссылка): Выполнение операции невозможно, т.к. строка была удалена.
#10 by foxey
Ах ну да... Я же дерево старое убил... Надо доки было выгрузить, а не строки.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

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