Дерево в таблицу

Компонент преобразует данные, представленные в иерархической древовидной форме, в таблицу. Отмеченные узлы будут выведены в колонки выходного набора данных.

Вход

Входное дерево — набор данных в иерархической древовидной форме.

Выход

Выходной набор данных — таблица данных.

Мастер настройки

Настройка входного набора

Данные во входном порте узла представлены в виде входного и выходного наборов.

В списке Входное дерево отображаются поля принятого портом набора данных, которые следует сопоставить с полями набора, подаваемого портом на обработку — Выходное дерево (подробнее см. Порты).

Структуру набора, подаваемого на обработку, можно задать вручную или загрузить из файла *.xsd.

Задание структуры узлов вручную

При ручном формировании структуры набора, который впоследствии будет подан на обработку, используются команды панели инструментов или контекстного меню.

Панель инструментов и контекстное меню списка Входное дерево содержит команды:

  • Выбрать все — помечает все узлы.
  • Снять выделение со всех — снимает выделение со всех узлов.
  • Инвертировать выделение — поменять выбранные узлы на невыбранные и наоборот.

Для списка Выходное дерево на панели инструментов и в контекстном меню доступны команды:

  • Добавить дочерний узел — позволяет добавить к корневому узлу дочерний узел.
  • Добавить соседний узел — позволяет создать узел того же уровня иерархии, что и выбранный.
  • Редактировать... — позволяет вызвать окно редактирования и изменить значения полей для выбранного узла (команду также можно вызвать горячей клавишей F2).
  • Переместить вверх и Переместить вниз — позволяют менять порядок узлов, при этом корневой узел Root переместить нельзя (команды также доступны по комбинации горячих клавиш Ctrl+Up и Ctrl+Down соответственно).
  • Загрузить из XSD... - загружает структуру узлов выходного дерева из файла формата XSD.
  • Синхронизировать поля — синхронизируется список выходных полей порта со списком входных (алгоритм синхронизации см. автоматическая синхронизация полей).
  • Автоматическая синхронизация — при включении данного режима команда Синхронизировать поля будет выполняться автоматически при выполнении узла (включена по умолчанию).
  • Удалить — удаляет дочерний узел дерева, иконка этой команды высвечивается при наведении курсора на узел (команду также можно вызвать горячей клавишей Delete).
  • Удалить все... — удаляет все дочерние узлы (комбинация горячих клавиш Shift+Delete).

Примечание: Удалить корневой узел Root нельзя.

При выполнении команд Добавить дочерний узел, Добавить соседний узел, Редактировать... задаются значения полей:

  • Имя — уникальное наименование столбца в рамках одного набора данных. Может состоять из:
    • Заглавных или строчных латинских букв;
    • Символов подчеркивания;
    • Цифр (не может быть первым символом).
  • Метка — произвольное описание поля.
  • Тип данных — один из возможных типов данных.
  • Вид данных — один из возможных видов данных .

Кроме того, можно установить следующие признаки:

  • Массив — при установке флага выбранный дочерний узел будет определен как упорядоченное множество (массив) данных одного типа.
  • Контейнер — если флаг установлен, выбранный дочерний узел будет являться корневым узлом для других создаваемых дочерних узлов разных типов.

Записи в списках Входное дерево и Выходное дерево можно отфильтровать с помощью команды Фильтрация на соответствующей панели инструментов.

Загрузка структуры узлов из XSD схемы

Структуру выходного дерева можно загрузить из файла формата XSD с помощью команды Загрузить из XSD...

В появившемся диалоговом окне необходимо заполнить поля:

  • XSD файл — поле для выбора файла (не редактируемое).
  • Пространство имен — выбор пространства имен из списка всех пространств имен описанных в файле XSD, ограничивает выбор корневого элемента только указанным пространством. По умолчанию принимает значение Все пространства имен.
  • Корневой элемент — выбор корневого узла из списка в загруженном файле. По умолчанию имеет значение первого корневого узла выбранного файла.
  • Глубина рекурсии — максимальное число рекурсий при раскрытии рекурсивных узлов. Выбирается в диапазоне от 0 до 3. По умолчанию равно 1, что означает: каждый рекурсивный узел будет раскрыт автоматически, но рекурсивные узлы внутри этих узлов останутся нераскрытыми. Дополнительно раскрытие рекурсивных узлов можно проводить вручную после построения дерева. При значении 0 все рекурсивные узлы не будут раскрыты автоматически.

После заполнения всех полей необходимо нажать кнопку Загрузить и XSD схема будет загружена для дальнейшей работы.

Сопоставление полей

Для сопоставления полей входного и выходного дерева необходимо задать между ними связи. Это можно сделать нажав кнопку Связать автоматически. Входные и выходные поля будут связаны, если у них совпадают имена и тип данных. Связи также можно установить вручную, с помощью метода Drag-and-drop путем перетаскивания элемента из левого списка на элемент из правого списка. В этом случае имена полей не важны, однако типы данных должны совпадать.

Связи между узлами можно удалять:

  • с помощью кнопки Удалить все связи — удаляет все связи;
  • нажатием на кнопку Удалить связь на линии связи (при наведении курсора кнопка меняет вид на Удалить связь).

Выбор узлов дерева

Мастер настройки узла представляет собой отображение дерева (дерево, поданное на выход входного порта) с возможностью выбора некоторых или всех узлов. Отмеченные узлы будут выведены в колонки выходного набора данных.

Доступные действия представлены в виде кнопок на панели инструментов и в контекстном меню:

  • Выбрать все – помечает все узлы.
  • Снять выделение со всех – снимает выделение со всех узлов.
  • Инвертировать выделение – меняет выбранные узлы на невыбранные и наоборот.

Пометить выделенный узел можно нажав клавишу Enter, повторное нажатие Enter снимает выделение.

Логика выбора узлов:

  • При выборе узла выбираются так же и его родители, вплоть до корня.
  • При снятии выделения с ветки выделение снимается и со всех потомков.
  • Глобальный индекс узла - узел отсутствует в древовидной структуре данных, однако он появляется в отображении дерева и указывает на индекс, используемый в узле-массиве. Его можно выбрать, при этом также выбирается и узел массива. Узел получает индекс -1, который учитывается при сортировке. При выборе узла для него формируется колонка с именем узла массива с добавлением "_global_index" и меткой узла массива с добавлением "|Глобальный индекс".

Важно: Компонент будет выдавать ошибку при выходе со страницы настройки или при выполнении, если у него нет ни одного выбранного узла.

Дублировать значения родительских узлов – если в структуре имеется родительский узел и последовательность потомков, значение родительского узла будет продублировано для каждой строки, образованной из последовательности потомков.

Генерировать составные метки полей – при наличии данного флага используется составная метка узла массива: в метках полей будет отражена иерархия относительно корневого элемента.