|
Быстро скопировать узел дерева значений
| ☑ |
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) а если это УФ?
|
|