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

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

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

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

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

//По всем колонкам и подчинённым строкам
Найдено = Должности.Строки.Найти("Продавец",
    НеопределеноИстина);
//Найдено = Продавец : 3
Сообщить("Найдено = " + Представление(Найдено));

//По колонке "Должность", с подчинёнными
Найдено = Должности.Строки.Найти("Продавец",
    "Должность"Истина);
//Найдено = Продавец : 3
Сообщить("Найдено = " + Представление(Найдено));

//По колонке "Количество", с подчинёнными
Найдено = Должности.Строки.Найти("Продавец",
    "Количество"Истина);
//Найдено = Неопределено
Сообщить("Найдено = " + Представление(Найдено));

//Только по строкам верхнего уровня
Найдено = Должности.Строки.Найти("Продавец",
    "Должность");
//Найдено = Неопределено
Сообщить("Найдено = " + Представление(Найдено));

//По подчинённым строкам Директора
Найдено = Директор.Строки.Найти("Продавец");
//Найдено = Продавец : 3
Сообщить("Найдено = " + Представление(Найдено));

Отбор = Новый Структура;
Отбор.Вставить("Количество"1);
НайденныеСтроки = Должности.Строки.НайтиСтроки(
    Отбор, Истина);
//НайденныеСтроки = [Директор, Бухгалтер]
Части = Новый Массив;
Для Каждого Строка Из НайденныеСтроки Цикл
    Части.Добавить(Строка.Должность);
КонецЦикла;
Сообщить("НайденныеСтроки = [" +
    СтрСоединить(Части, ", ") + "]");

Функция Представление(Строка)
    Если Строка = Неопределено Тогда
        Возврат "Неопределено";
    КонецЕсли;
    Возврат Строка.Должность + " : " +
        Строка.Количество;
КонецФункции