Ниже представлен блок процедур, для реализации данного механизма, пояснения см. в коментах
//Обрабочика команды формы
&НаКлиенте
Процедура Уровень4(Команда)
ПоказатьУровеньДерева(4);
КонецПроцедуры
//Основная процедура свертки до уровня
//Уровень -число, номер уровня, до которого сворачиваем
&НаКлиенте
Процедура ПоказатьУровеньДерева(Уровень)
//предворительно сворачиваем дерево,
//т.к. если свернуть верхний уровень,
//вложенные останутся неизменными
СвернутьДерево(ДеревоЗначений);
//разварачиваем
//ДеревоЗначений - дерево которое сворачиваем
//Уровень - число
РазвернутьДерево(ДеревоЗначений,Уровень);
КонецПроцедуры
//Сворачивает дерево
//Дерево -дерево значений
&НаКлиенте
Процедура СвернутьДерево(Дерево)
Для Каждого Строка Из Дерево.ПолучитьЭлементы() Цикл
ИдентификаторСтроки=Строка.ПолучитьИдентификатор();
//рекурсивно вызываем эту же процедуру,
//что бы предварительно свернуть все подчиненные уровни
СвернутьДерево(Строка);
Элементы.ДеревоЗначений.Свернуть(ИдентификаторСтроки);
КонецЦикла;
КонецПроцедуры
&НаКлиенте
//Разворачивает дерево
//Дерево -дерево значений
//Уровень - число, передаем значение (не переменную),
//что бы при рекурсивном вызове значение переменной сохранялось
Процедура РазвернутьДерево(Дерево,знач Уровень)
Уровень=Уровень-1;
Для Каждого Строка Из Дерево.ПолучитьЭлементы() Цикл
Если Уровень>=0 Тогда
ИдентификаторСтроки=Строка.ПолучитьИдентификатор();
Элементы.ДеревоЗначений.Развернуть(ИдентификаторСтроки);
//рекурсивно вызываем эту же процедуру,
//что бы развернуть все подчиненные уровни
РазвернутьДерево(Строка,Уровень);
КонецЕсли;
КонецЦикла;
КонецПроцедуры