Как быстро программно свернуть/развернуть дерева значений в управляемых формах?

1. 21.08.13 17:58 Сейчас в теме
на форму вынесен объект "Дерево значений"

заполняется он запросом, так что порядок и количество уровней может быть различное и довольно большое (несколько тысяч строк)

по кнопкам Ctrl+Shift++ И Ctrl+Shift+- Происходит практически мгновенное разворачивание и сворачивание дерева.

А как эти действия выполнить программно.

Известный мне метод

ИдентификаторСтроки=Строка.ПолучитьИдентификатор();
ДеревоНаФорме.Развернуть(ИдентификаторСтроки);

Для больших объемов дерева оооочень медленно работает.

В идеале разворачивать дерево до N-ого уровня.
Ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. Поручик 4529 21.08.13 23:07 Сейчас в теме
(1) Других альтернатив, кроме Развернуть() нет.
4. AntExec 22.08.13 16:57 Сейчас в теме
(2) Поручик,

Других альтернатив, кроме Развернуть() нет.


Хреново.

Но не понятно почему прошитый в платформе вариант отрабатывать в десятки раз быстрее чем программный.
И нет даже возможности программно вызвать существующий вариант заложенный в платформе.
SP2000; Live; +2 Ответить
10. ture 590 16.05.15 14:32 Сейчас в теме
(1) хожу по каждому узлу и разворачиваю в рекурсии
3. logos 197 22.08.13 11:50 Сейчас в теме
Ну почему же нет? Кто мешает эмулировать нажатие клавиш Ctrl+Shift++ И Ctrl+Shift+-? Например внешней компонентой :)
5. Fatman 10.02.15 12:35 Сейчас в теме
Есть еще вариант программно:
ЭлементыФормы.ИмяВашегоТабличногоПоляДерево.НачальноеОтображениеДерева = НачальноеОтображениеДерева.РаскрыватьВсеУровни
6. Prisian 29.04.15 11:27 Сейчас в теме
(5) Fatman,

Есть еще вариант программно:
ЭлементыФормы.ИмяВашегоТабличногоПоляДерево.НачальноеОтображениеДерева = НачальноеОтображениеДерева.РаскрыватьВсеУровни

Не всегда срабатывает, лучше делать обход так:
КоллекцияЭлементовДерева=ДеревоНоменклатуры.ПолучитьЭлементы();
Для Каждого Строка Из КоллекцияЭлементовДерева Цикл    
    ИдентификаторСтроки=Строка.ПолучитьИдентификатор();
    Элементы.ДеревоНоменклатуры.Развернуть(ИдентификаторСтроки, Истина);
КонецЦикла;
7. Fatman 16.05.15 14:19 Сейчас в теме
Этот метод работает медленно на больших деревьях. см. первый пост
8. Chameleon1980 16.05.15 14:29 Сейчас в теме
9. Chameleon1980 16.05.15 14:30 Сейчас в теме
11. denis_r 12.12.17 12:16 Сейчас в теме
Используйте для оптимизации следующий код (отключение текущей строки)

// для оптимизации отключаем тек. строку
ИдентификаторТекСтроки = Элементы.ДеревоСправочника.ТекущаяСтрока;
Элементы.ДеревоСправочника.ТекущаяСтрока = Неопределено;

КоллекцияЭлементовДерева = ДеревоСправочника.ПолучитьЭлементы();

//Развернуть дерево
Для Каждого Строка Из КоллекцияЭлементовДерева Цикл

ИдентификаторСтроки = Строка.ПолучитьИдентификатор();
Элементы.ДеревоСправочника.Развернуть(ИдентификаторСтроки, Истина);

КонецЦикла;

// включаем тек. строку
Элементы.ДеревоСправочника.ТекущаяСтрока = ИдентификаторТекСтроки;
buy_sale; crypto; +2 Ответить
12. bulpi 185 04.09.18 21:32 Сейчас в теме
(11)
Чуть быстрее, но проблему это не решило. Решил добавлением корневого элемента в дерево. Тогда все дерево мгновенно раскрывается:
Элементы.МоеДерево.Развернуть(0,Истина);
13. bulpi 185 04.09.18 21:57 Сейчас в теме
(11)
П.С.
Увы, мгновенно раскрывается при небольшом числе элементов (до 1000) . А дальше опять плохо.
14. KAV2 126 07.09.20 08:41 Сейчас в теме
(13) Удалось ли в итоге решить проблему?
15. bulpi 185 07.09.20 12:05 Сейчас в теме
16. KAV2 126 15.09.20 09:40 Сейчас в теме
(15) Столкнулся с аналогичной проблемой, написал внешнюю компоненту - https://infostart.ru/public/1293938/
17. bulpi 185 15.09.20 13:51 Сейчас в теме
Оставьте свое сообщение
Вопросы с вознаграждением
Вакансии
Программист 1С
Воронеж
зарплата от 140 000 руб.
Полный день

Программист 1С
Москва
зарплата от 130 000 руб. до 180 000 руб.
Полный день

Руководитель проектов 1С
Москва
Полный день

Программист 1С
Москва
зарплата до 200 000 руб.
Полный день

Программист-аналитик 1С:Управление автотранспортом
Тюмень
зарплата от 100 000 руб.
Полный день