Имя: Пароль:
1C
1С v8
Быстро скопировать узел дерева значений
0 organizm
 
06.05.15
15:18
Есть дерево значений. В нем находится узел. Как его скопировать другому родителю быстро? Есть вариант рекурсивно добавлять, но это в случае больших объемов тормозит обработку.
1 organizm
 
06.05.15
15:18
вот как у меня:
Процедура РекурсивноеДобавлениеНайденногоУзла(Получатель, Источник)
    
    Для Каждого СтрокаИсточника Из Источник.Строки Цикл
        
        ТекущаяСтрока = Получатель.Строки.Добавить();
        ЗаполнитьЗначенияСвойств(ТекущаяСтрока, СтрокаИсточника);
        ТекущаяСтрока.Уровень = Получатель.Уровень()+1;
        
        Если СтрокаИсточника.Строки.Количество() > 0 Тогда
            РекурсивноеДобавлениеНайденногоУзла(ТекущаяСтрока, СтрокаИсточника);
        КонецЕсли;
        
    КонецЦикла;
    
КонецПроцедуры
2 kosts
 
06.05.15
15:27
ЗаполнитьЗначенияСвойств может слегка тормозить, попробуй свойства явно присваивать, может быть слегка ускорится...
3 organizm
 
06.05.15
15:41
а стандартных нет методов?
4 hhhh
 
06.05.15
15:51
(3) у дерева всего два стандартных метода: добавить и удалить. Так что губы потихоньку закатывайте.
5 DrShad
 
06.05.15
15:56
не ну если надо извратиться, то можно конвертнуть в XML там скопировать узел и назад конвертнуть
6 organizm
 
06.05.15
15:59
(5) о, хорошая мысля!
7 rabbidX
 
06.05.15
16:04
(5) разве при обратной конвертации не будут рекурсивно обходиться все узлы и заполняться значения? Где профит?
8 DrShad
 
06.05.15
16:19
через сериализатор разве не пролезет
9 МихаилМ
 
06.05.15
16:38
ЗначениеВСтрокуВнутр будет быстрее
10 DrShad
 
06.05.15
17:40
(9) а если это УФ?