Массивы и коллекции / Дерево значений

//Доступно при выполнении на сервере
Должности = Новый ДеревоЗначений;
Должности.Колонки.Добавить("Должность");
Должности.Колонки.Добавить("Количество");

ГенДир = Должности.Строки.Добавить();
ГенДир.Должность = "Ген. директор";
ГенДир.Количество = 1;

ГлБух = ГенДир.Строки.Добавить();
ГлБух.Должность = "Гл. бухгалтер";
ГлБух.Количество = 1;

ЗамГлБух = ГлБух.Строки.Добавить();
ЗамГлБух.Должность = "Зам. гл. бухгалтера";
ЗамГлБух.Количество = 1;

БухРасчет = ГлБух.Строки.Добавить();
БухРасчет.Должность = "Бух. расч. отдела";
БухРасчет.Количество = 3;

ПоказатьДерево(Должности);
//Сообщает: Ген. директор: 1 ед.
//            Гл. бухгалтер: 1 ед.
//              Зам. гл. бухгалтера: 1 ед.
//              Бух. расч. отдела: 3 ед.

&НаСервере
Процедура ПоказатьДерево(Дерево, Уровень = 1)
    Пробелы = "          ";
    Для Каждого Позиция Из Дерево.Строки Цикл
        Стр = Позиция.Должность + ": " +
            Позиция.Количество + " ед.";
        //Отступ для подчинённых строк
        Отступ = Лев(Пробелы, (Уровень - 1)*2);
        Сообщить(Отступ + Стр);
        ПоказатьДерево(Позиция, Уровень + 1);
    КонецЦикла;
КонецПроцедуры