Перейти к основному содержимому

Иерархический справочник

важно

В текущей версии «1С:Шины» поддерживается создание только одного справочника, что ограничивает функциональность работы с иерархиями — доступна только иерархия по умолчанию, настройка дополнительных иерархий невозможна.

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

Выберите Вид иерархии:

  • ИерархияГруппИЭлементов — значение по умолчанию,
  • ИерархияЭлементов.

Иерархия групп и элементов​

При выборе вида иерархии ИерархияГруппИЭлементов автоматически создается справочник групп {ИмяСправочника}.Группы с иерархией, в которой в качестве родителя выступает элемент справочника групп, а в качество потомка — элемент иерархического справочника, по которому порождается справочник групп.

Настройки справочника групп задаются в разделе СправочникГрупп панели свойств.

Пример иерархического справочника с группами
ВидЭлемента: Справочник
Ид: 43bb178c-1f7c-4e42-a5c8-14f9722e2e89
Имя: Товары
ОбластьВидимости: ВПодсистеме
Иерархический: Истина
РежимУдаления: Немедленно
Иерархия:
Вид: ИерархияГруппИЭлементов
СправочникГрупп:
Автонумерация:
ДлинаНумерации: 3
Постфикс: Гр
Префикс: ПС
Формат:
ДлинаПостфикса: 2
ДлинаПрефикса: 2
РазделительПостфикса: "-"
РазделительПрефикса: "-"
Представление:
Объект: Товары (Группа)
Список: Товары (Группы)
Реквизиты:
-
Имя: Наименование
-
Имя: Код
Длина: 9

Иерархический справочник с группами

важно

Для справочника групп формы не включаются в интерфейс автоматически. При необходимости вы можете задать автоматическое включение форм в настройке справочника групп ВключатьВАвтоИнтерфейс или указать их самостоятельно. Например:

ТипФормы: Товары.Группы.АвтоматическаяФормаСписка

Для справочника с иерархией групп и элементов:

  • автоматически создается реквизит Родитель,
  • порождаются следующие таблицы языка запросов:
    • ИмяСправочника.Группы,
    • ИмяСправочника.Группы.Иерархия,
    • ИмяСправочника.Группы.Иерархия.Циклы,
    • ИмяСправочника.ИерархияГруппИЭлементов,
    • ИмяСправочника.ИерархияГруппИЭлементов.Циклы.

Иерархия элементов​

На автоматические формы объекта и списка такого справочника добавляется поле Родитель. Динамический список начинает работать в иерархическом режиме:

Форма списка иерархического справочника «Подразделения»

Для иерархических справочников:

Реквизит «Родитель»​

Если для справочника устанавливается свойство Иерархический, то для него автоматически создается реквизит с именем Родитель, который имеет тип ИмяСправочника.Ссылка?. Если у справочника был собственный реквизит с именем Родитель, то при установке флажка Иерархический:

  • этот реквизит удаляется и заменяется на системный;
  • начинают действовать следующие требования:
    • отсутствие свойств реквизита Ид и Тип,
    • отсутствие каких-либо ограничений типа.

Реквизит «Владелец»​

Если у справочника есть поле Владелец, то его значение должно быть одинаковым для всех дочерних элементов и быть таким же, как у родительского элемента. В противном случае возникает ИсключениеНесоответствияВладельцевИерархии.

примечание

Проверка значения поля Владелец отключена в контексте загрузки (РежимЗагрузкиДанных = Истина).

Таблицы языка запросов с информацией об иерархических связях​

Для иерархических справочников и дополнительных иерархий порождаются следующие таблицы языка запросов:

  • ИмяСправочника.Иерархия — таблица для иерархического справочника с информацией о связях;
  • ИмяСправочника.Иерархия.Циклы — таблица для иерархического справочника с информацией о циклах;
  • ИмяСправочника.ИмяИерархии — таблица для дополнительной иерархии с информацией о связях;
  • ИмяСправочника.ИмяИерархии.Циклы — таблица для дополнительной иерархии с информацией о циклах.

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

примечание

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

Примеры получения данных с помощью языка запросов​

Получение всех родительских элементов
ВЫБРАТЬ
Подразделения.Ссылка,
Подразделения.Код,
Подразделения.Наименование
ИЗ
Подразделения как Подразделения
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Подразделения.Иерархия КАК ТаблицаИерархии
ПО Подразделения.Ссылка == ТаблицаИерархии.Родитель И ТаблицаИерархии.Ребенок == %Ребенок
Получение всех дочерних элементов в определенной иерархии
ВЫБРАТЬ
Ссылка,
Код,
Наименование
ИЗ
Сотрудники
ГДЕ
Ссылка В ИЕРАРХИИ Сотрудники.Подразделения (%Подразделение)
Получение уровня элемента в иерархии
ВЫБРАТЬ
Подразделения.Ссылка,
Подразделения.Код,
Подразделения.Наименование,
Подразделения.Уровень
ИЗ
Подразделения КАК Подразделения
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Подразделения.Иерархия КАК ТаблицаИерархии
ПО Подразделения.Ссылка == ТаблицаИерархии.Ребенок