Вход | Регистрация
 

Дерево значений на форме УФ. Как ускорить операции свернуть и развернуть?

Дерево значений на форме УФ. Как ускорить операции свернуть и развернуть?
Я
   spiller26
 
01.10.20 - 11:05
Есть дерево значений на форме (1 Уровень вложения, данных много). При сворачивании и разворачивании делается ну очень долго. Как ускорить процесс?

https://prnt.sc/ur31cr

&НаКлиенте
Процедура РаскрытьВсеВетки(Команда)
    СтрокиДерева = ДеревоОстатков.ПолучитьЭлементы();
    Для Каждого ТекущаяСтрока Из СтрокиДерева Цикл
        Элементы.ДеревоОстатков.Развернуть(ТекущаяСтрока.ПолучитьИдентификатор(), Истина);
    КонецЦикла;
КонецПроцедуры
   spiller26
 
1 - 01.10.20 - 11:28
короче болты.
   polosov
 
2 - 01.10.20 - 11:30
Да, болты. Дерево довольно проблемная коллекция.
   lEvGl
 
3 - 01.10.20 - 11:34
а зачем это программно делать
   lEvGl
 
4 - 01.10.20 - 11:35
ctrl + shift + + развернуть все
ctrl + shift + - свернуть все
должны быть и еще штатные варианты
   oslokot
 
5 - 01.10.20 - 11:41
Иногда помогает такой лайфхак, но на сервере и не во всех случаях

    // Развернуть все узлы дерева

    Элементы.ДеревоРабот.НачальноеОтображениеДерева = НачальноеОтображениеДерева.НеРаскрывать;
    Элементы.ДеревоРабот.НачальноеОтображениеДерева = НачальноеОтображениеДерева.РаскрыватьВсеУровни;


   spiller26
 
6 - 01.10.20 - 11:49
(5) Попытался сделать так.
Смотрю скорость выполнения

&НаКлиенте 
Процедура РазвернутьДерево()
    
    //СтрокиДерева = ДеревоОстатков.ПолучитьЭлементы();

    //Для Каждого ТекущаяСтрока Из СтрокиДерева Цикл

    //    Элементы.ДеревоОстатков.Развернуть(ТекущаяСтрока.ПолучитьИдентификатор(), Ложь);

    //КонецЦикла;

    
    ДеревоНаСервере();
    Если Элементы.ДеревоОстатков.НачальноеОтображениеДерева = НачальноеОтображениеДерева.РаскрыватьВерхнийУровень Тогда
        Элементы.ДеревоОстатков.НачальноеОтображениеДерева = НачальноеОтображениеДерева.РаскрыватьВсеУровни;
    Иначе
        Элементы.ДеревоОстатков.НачальноеОтображениеДерева = НачальноеОтображениеДерева.РаскрыватьВерхнийУровень;
    КонецЕсли;    

    
КонецПроцедуры    

&НаСервере
Процедура ДеревоНаСервере()
    
    тДерево = РеквизитФормыВЗначение("ДеревоОстатков");
    ЗначениеВРеквизитФормы(тДерево, "ДеревоОстатков");
    
КонецПроцедуры
   Мойдодыр
 
7 - 01.10.20 - 11:50
ссылки отображаются в дереве?
замени их на представления, а сами ссылки скрой
   spiller26
 
8 - 01.10.20 - 11:52
(7) Ссылки не отображаются, только представления.
   lEvGl
 
9 - 01.10.20 - 11:53
а чем хоткей не подходит
   spiller26
 
10 - 01.10.20 - 11:56
(9) бухам нужна кнопка
   lEvGl
 
11 - 01.10.20 - 11:58
нарисуй на форме красными буквами комбинации, если это важный вопрос
   spiller26
 
12 - 01.10.20 - 12:04
Файловая база (копия): Формирование на сервере дерева ~1 минута
Полное раскрытие дерева на клиенте:
Если код = (6) - ~2 минуты.
Если код = (0) - ~4 минуты.
   Мойдодыр
 
13 - 01.10.20 - 12:08
а если разворачивать без подчиненных?
   acht
 
14 - 01.10.20 - 12:17
(12) Перебрать рекурсивно от листьев к корню и открыть каждую подветку снизу без подчиненых?
   spiller26
 
15 - 01.10.20 - 13:36
(13) ~4 (Элементы.ДеревоОстатков.Развернуть(ТекущаяСтрока.ПолучитьИдентификатор(), Ложь);)
(12) На клиенте?
   Cyberhawk
 
16 - 01.10.20 - 13:39
Используй дин. список с настроенной группировкой, будет то же дерево, но с порционностью.
Тем более тебе там интерактивное редактирование в строках не требуется.
   spiller26
 
17 - 01.10.20 - 13:44
(16) Динамический не получиться, т.к. нужно редактировать некоторые данные.
   Cyberhawk
 
18 - 01.10.20 - 13:59
(17) Получится, просто для редактирования придется немного попотеть.
С большим деревом же ты обречен делать порционность самостоятельно, это куда геморнее чем ДС с редактированием.

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.