Скопировать()
В отличие от Скопировать() ТаблицыЗначений, у дерева параметров нет вообще — либо копия целиком, либо ничего:
Копия = Дерево.Скопировать();Скопировать только часть дерева (поддерево одной строки, отбор по условию, часть колонок) — только вручную, рекурсивным обходом с созданием строк в новом дереве.
Передача по ссылке
ДеревоЗначений — ссылочный тип, как и остальные коллекции значений. Передано в процедуру/функцию — та же ссылка, не копия: изменение строк видно и снаружи, Знач защищает только от переприсвоения параметра целиком.
Сравнение и проверка типа
Дерево1 = Дерево2; // сравнение ссылок, не содержимого
ТипЗнч(Дерево) = Тип("ДеревоЗначений"); // Истина, если Дерево — именно ДеревоЗначенийЧего нет по сравнению с ТаблицейЗначений
| Есть у ТаблицыЗначений | У ДеревоЗначений |
|---|---|
| Свернуть() — группировка с суммированием | нет такого метода вообще |
| Индексы — ускорение поиска | нет, Найти()/НайтиСтроки() — всегда перебор |
| Скопировать(Строки, Колонки) с параметрами | только Скопировать() целиком |
| ЗаполнитьЗначения() | нет — только циклом (с рекурсией, если нужны все уровни) |
«Свернуть строки дерева» в статьях про формы — это не про этот метод: там речь про визуальное сворачивание узлов дерева в элементе управления формы, а не про группировку данных с суммированием, как у Свернуть() таблицы значений. У самого объекта ДеревоЗначений, в отрыве от формы, такой операции нет.
Когда дерево, а не таблица
Иерархия нужна только тогда, когда данные реально многоуровневые — план счетов, дерево номенклатурных групп, структура подчинённости. Если уровень вложенности всегда один и тот же (например, «группа → элементы» ровно в два уровня) — часто проще смоделировать это двумя обычными таблицами значений или одной таблицей с колонкой-ссылкой на «родителя» и обходом через НайтиСтроки(), не заводя дерево вообще.