Публикации

БСП
Разработки

Найдено результатов: 1


ТаблицаЗначений из кроны ДереваЗначений

Функция - Возвращает ТаблицуЗначений из "бездетных" (листья всех ветвей/крона/конечные узлы) строк Дерева. Включена вспомогательная рекурсивная процедура
1 SDV 28 5
// Функция - Возвращает ТаблицЗначений из "бездетных" (листья всех ветвей/крона/конечные узлы) строк Дерева
//  Зависит от ЗаполнитьТаблицуЛистьямиВетви()
//
// Параметры:
//  Дерево      - ДеревоЗначений
//
// Возвращаемое значение:
//  ТаблицаЗначений -
//
Функция ТаблицаЗначенийИзКроныДереваЗначений(Дерево) Экспорт
     Таблица = Новый ТаблицаЗначений;
     Для каждого КолонкаДерева из Дерево.Колонки Цикл
          КолонкаТаблицы = Таблица.Колонки.Добавить(КолонкаДерева.Имя, КолонкаДерева.ТипЗначения);
     КонецЦикла;
     
     Для каждого Ветвь Из Дерево.Строки Цикл
          ЗаполнитьТаблицуЛистьямиВетви(Таблица, Ветвь);
     КонецЦикла;
     Возврат Таблица;
КонецФункции

// Процедура - Заполнить таблицу листьями ветви.
//  Рекурсивная вспомогательная функция для ТаблицаЗначенийИзКроныДереваЗначений()
//
// Параметры:
//  Таблица     - ТаблицаЗначений -
//  Ветвь     - СтрокаДереваЗначений -
//
Процедура ЗаполнитьТаблицуЛистьямиВетви(Таблица, Ветвь)
    ЭтоЛист = (Ветвь.Строки.Количество() = 0);
    Если ЭтоЛист Тогда
        Лист = Ветвь;
        ЗаполнитьЗначенияСвойств(Таблица.Добавить(), Лист);
    Иначе
        Для Каждого Подветвь из Ветвь.Строки Цикл
            ЗаполнитьТаблицуЛистьямиВетви(Таблица, Подветвь);
        КонецЦикла;
    КонецЕсли;
КонецПроцедуры