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

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

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

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

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

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

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

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

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

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


Хреново.

Но не понятно почему прошитый в платформе вариант отрабатывать в десятки раз быстрее чем программный.
И нет даже возможности программно вызвать существующий вариант заложенный в платформе.
SP2000; Live; +2 Ответить
10. ture 606 16.05.15 14:32 Сейчас в теме
(1) хожу по каждому узлу и разворачиваю в рекурсии
3. logos 208 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 215 04.09.18 21:32 Сейчас в теме
(11)
Чуть быстрее, но проблему это не решило. Решил добавлением корневого элемента в дерево. Тогда все дерево мгновенно раскрывается:
Элементы.МоеДерево.Развернуть(0,Истина);
13. bulpi 215 04.09.18 21:57 Сейчас в теме
(11)
П.С.
Увы, мгновенно раскрывается при небольшом числе элементов (до 1000) . А дальше опять плохо.
14. KAV2 156 07.09.20 08:41 Сейчас в теме
(13) Удалось ли в итоге решить проблему?
15. bulpi 215 07.09.20 12:05 Сейчас в теме
16. KAV2 156 15.09.20 09:40 Сейчас в теме
(15) Столкнулся с аналогичной проблемой, написал внешнюю компоненту - https://infostart.ru/public/1293938/
17. bulpi 215 15.09.20 13:51 Сейчас в теме
Оставьте свое сообщение
Вакансии
1С аналитик
Москва
зарплата от 210 000 руб.
Полный день

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

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

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

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)