Skip to main content
Print

Древовидный выбор

kf_forms_24.png С помощью компонента «Древовидный выбор» пользователь может выбирать записи из источника данных, представленные в виде дерева с чекбоксами. Это удобно для выбора нескольких элементов из иерархического справочника: подразделений, категорий, регионов, статей номенклатуры и любых других данных, организованных «родитель — потомок».

Компонент размещается внутри формы (компонент “Форма“). Отмеченные пользователем узлы сохраняются в указанное поле формы в виде списка идентификаторов.

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

 

Структура данных

Источником дерева может быть таблица данных, пользовательский запрос или представление (bview). Чтобы записи выстроились в дерево, а не в плоский список, таблица-источник должна содержать поле-родитель и поле-подпись.

Таблица-источник «Узлы дерева» (пример)

Наименование Описание Тип
1 name Название узла (подпись в дереве) Короткий текст
2 parent_id Ссылка на родительский узел этой же модели Связь с таблицей (тип связи – Иерархическая) на саму себя

Обязательные требования к источнику:

  • Поле-родитель должно называться parent_id и быть само-ссылкой модели на саму себя. Именно по нему строится иерархия. Если поля parent_id нет или оно названо иначе — все записи станут корневыми, и дерево отобразится плоским списком.
  • Поле подписи должно называться name либо быть отмечено как caption-поле. Иначе в узлах будут отображаться идентификаторы вместо названий.
  • Источник не должен быть пустым — при отсутствии записей компонент показывает надпись «Дерево пусто».

 

Добавление компонента на страницу

Для добавления компонента необходимо:

  • предварительно подготовить страницу в Конструкторе форм и разместить на ней компонент «Форма»;
  • внутрь формы перетащить компонент «Древовидный выбор»;
  • выполнить настройку источника и поля формы (см. далее).

 

Настройка компонента

Настройка выполняется через трейт «Настройка дерева» → «Выбрать модель дерева и поле формы». Открываются два последовательных диалога:

  1. Источник дерева — таблица данных, пользовательский запрос или представление, на которые ссылаются “ветви” дерева.
  2. Поле формы — поле, в которое сохраняются отмеченные узлы. Допустимые типы поля: множественная связь / вложенная таблица, связь, короткий текст.

После сохранения на канве появляется плейсхолдер с именем выбранной таблицы-источника данных.

 

Работа в форме

В работающей форме (режим просмотра/Player) компонент:

  • загружает записи источника и строит из них дерево;
  • показывает узлы с чекбоксами; при загрузке отображается индикатор ожидания;
  • при простановке галочек сохраняет в поле формы список идентификаторов отмеченных узлов;
  • при повторном открытии формы восстанавливает ранее сохранённый выбор.

 

Ограничения

Ограничение Описание
1 Отмечаются только “листья” Отметить чекбоксом можно только конечные узлы; родительские узлы (“ветки”) выбрать нельзя
2 Настраивается только источник В диалоге задаются модель-источник и поле формы; поле-родитель, поле-подпись и вложенные поля выбрать нельзя — используются значения по умолчанию (parent_id, name)
3 Лимит записей Загружается не более 1000 записей источника, серверный поиск и постраничная загрузка не поддерживаются
4 Тип поля формы Компонент сохраняет список идентификаторов; для корректного сохранения используйте множественное поле (вложенная таблица / множественная связь), а не одиночную связь

 

Компонент является относительно новым, документация будет дополняться по мере развития функциональности.

Оставить комментарий

Оглавление