|   |   | 
| 
 | Дерево значений на форме УФ. Как ускорить операции свернуть и развернуть? | ☑ | ||
|---|---|---|---|---|
| 0
    
        spiller26 01.10.20✎ 11:05 | 
        Есть дерево значений на форме (1 Уровень вложения, данных много). При сворачивании и разворачивании делается ну очень долго. Как ускорить процесс?
 https://prnt.sc/ur31cr &НаКлиенте Процедура РаскрытьВсеВетки(Команда) СтрокиДерева = ДеревоОстатков.ПолучитьЭлементы(); Для Каждого ТекущаяСтрока Из СтрокиДерева Цикл Элементы.ДеревоОстатков.Развернуть(ТекущаяСтрока.ПолучитьИдентификатор(), Истина); КонецЦикла; КонецПроцедуры | |||
| 1
    
        spiller26 01.10.20✎ 11:28 | 
        короче болты.     | |||
| 2
    
        polosov 01.10.20✎ 11:30 | 
        Да, болты. Дерево довольно проблемная коллекция.     | |||
| 3
    
        lEvGl гуру 01.10.20✎ 11:34 | 
        а зачем это программно делать     | |||
| 4
    
        lEvGl гуру 01.10.20✎ 11:35 | 
        ctrl + shift + + развернуть все
 ctrl + shift + - свернуть все должны быть и еще штатные варианты | |||
| 5
    
        oslokot 01.10.20✎ 11:41 | 
        Иногда помогает такой лайфхак, но на сервере и не во всех случаях
 
 | |||
| 6
    
        spiller26 01.10.20✎ 11:49 | 
        (5) Попытался сделать так.
 Смотрю скорость выполнения &НаКлиенте Процедура РазвернутьДерево() //СтрокиДерева = ДеревоОстатков.ПолучитьЭлементы(); //Для Каждого ТекущаяСтрока Из СтрокиДерева Цикл // Элементы.ДеревоОстатков.Развернуть(ТекущаяСтрока.ПолучитьИдентификатор(), Ложь); //КонецЦикла; ДеревоНаСервере(); Если Элементы.ДеревоОстатков.НачальноеОтображениеДерева = НачальноеОтображениеДерева.РаскрыватьВерхнийУровень Тогда Элементы.ДеревоОстатков.НачальноеОтображениеДерева = НачальноеОтображениеДерева.РаскрыватьВсеУровни; Иначе Элементы.ДеревоОстатков.НачальноеОтображениеДерева = НачальноеОтображениеДерева.РаскрыватьВерхнийУровень; КонецЕсли; КонецПроцедуры &НаСервере Процедура ДеревоНаСервере() тДерево = РеквизитФормыВЗначение("ДеревоОстатков"); ЗначениеВРеквизитФормы(тДерево, "ДеревоОстатков"); КонецПроцедуры | |||
| 7
    
        Мойдодыр 01.10.20✎ 11:50 | 
        ссылки отображаются в дереве? замени их на представления, а сами ссылки скрой | |||
| 8
    
        spiller26 01.10.20✎ 11:52 | 
        (7) Ссылки не отображаются, только представления.     | |||
| 9
    
        lEvGl гуру 01.10.20✎ 11:53 | 
        а чем хоткей не подходит     | |||
| 10
    
        spiller26 01.10.20✎ 11:56 | 
        (9) бухам нужна кнопка     | |||
| 11
    
        lEvGl гуру 01.10.20✎ 11:58 | 
        нарисуй на форме красными буквами комбинации, если это важный вопрос     | |||
| 12
    
        spiller26 01.10.20✎ 12:04 | 
        Файловая база (копия): Формирование на сервере дерева ~1 минута
 Полное раскрытие дерева на клиенте: Если код = (6) - ~2 минуты. Если код = (0) - ~4 минуты. | |||
| 13
    
        Мойдодыр 01.10.20✎ 12:08 | 
        а если разворачивать без подчиненных?     | |||
| 14
    
        acht 01.10.20✎ 12:17 | 
        (12) Перебрать рекурсивно от листьев к корню и открыть каждую подветку снизу без подчиненых?     | |||
| 15
    
        spiller26 01.10.20✎ 13:36 | 
        (13) ~4 (Элементы.ДеревоОстатков.Развернуть(ТекущаяСтрока.ПолучитьИдентификатор(), Ложь);)
 (12) На клиенте? | |||
| 16
    
        Cyberhawk 01.10.20✎ 13:39 | 
        Используй дин. список с настроенной группировкой, будет то же дерево, но с порционностью.
 Тем более тебе там интерактивное редактирование в строках не требуется. | |||
| 17
    
        spiller26 01.10.20✎ 13:44 | 
        (16) Динамический не получиться, т.к. нужно редактировать некоторые данные.     | |||
| 18
    
        Cyberhawk 01.10.20✎ 13:59 | 
        (17) Получится, просто для редактирования придется немного попотеть.
 С большим деревом же ты обречен делать порционность самостоятельно, это куда геморнее чем ДС с редактированием. | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |