Иерархический справочник - это также многоуровневый справочник, или справочник с группами.
Группа справочника в 1С часто называется "родитель".
Назначение иерархических справочников
Список элементов справочника в системе 1С:Предприятие может быть многоуровневым. В этом случае все строки справочника будут разделяться на 2 вида: «просто» элементы справочника и группы справочника. Группы позволяют переходить на нижележащие уровни многоуровневого справочника. Возможное количество уровней вложенности справочника задается в Конфигураторе.
Использование многоуровневых справочников позволяет организовать ввод информации в справочник с нужной степенью детализации. Элементы и группы элементов в многоуровневом справочнике можно переносить из одной группы в другую.
Программное создание группы
СпрСотр = СоздатьОбъект("Справочник.Сотрудники");
СпрСотр.НоваяГруппа();
СпрСотр.Наименование = "Работающие";
СпрСотр.Записать();
СпрСотр.НоваяГруппа();
СпрСотр.Наименование = "Уволенные";
СпрСотр.Записать();
Внимание!В Конфигураторе можно задать для реквизита то, что он действителен только для элемента, только для группы или для обоих. Например, поле ДатаПриема не имеет смысла для группы Работающие. Поэтому не стоит обращаться к реквизитам элементов, если вы работаете с группой и наоборот.
Установка текущей группы
СпрСотр = СоздатьОбъект("Справочник.Сотрудники");
СпрСотр.ИспользоватьРодителя(грпРаботающие); //теперь мы внутри группы Работающие
СпрСотр.ВыбратьЭлементы(); //открыть выборку элементов группы Работающие
СпрСотр = СоздатьОбъект("Справочник.Сотрудники");
СпрСотр.ИспользоватьРодителя(грпРаботающие);
СпрСотр.Новый(); //создание нового элемента в группе Работающие
Информация о текущем элементе
Если справочник многоуровневый, то будет полезным применение следующих методов и атрибутов, которые позволяют получить информацию о текущем элементе справочника:
Возможность выбора группы в реквизите диалога
Часто бывает удобно для реквизитов на форме, имеющих тип Справочник, отключить возможность выбора группы. Тогда в данное поле может быть выбран только элемент и не может быть выбрана группа. В общем, проще один раз попробовать, чем несколько раз объяснять.
Форма.ВыбрСотрудник.ВыборГруппы(0); //отключить возможность выбора группы
Справочник-владелец, это также справочник-хозяин.
Справочник-владелец и подчиненный справочник также называются связанными справочниками.
В терминах реляционных баз данных справочник-владелец - это родительская таблица, подчиненный справочник - это дочерняя таблица.
Назначение подчиненных справочников
Любой справочник может использоваться как сам по себе, так и быть подчиненным какому-либо другому справочнику. Например, справочник договоров может использоваться отдельно, а может быть связан со справочником организаций.
Чтобы подчинить справочник какому-либо из справочников, уже существующих в системе, в поле «Подчинен» следует выбрать наименование этого справочника. Такой справочник в системе 1С:Предприятие называется владельцем.
В отличие от многоуровневого справочника, в котором все элементы имеют одинаковую структуру, использование механизма подчиненных справочников позволяет связать элементы разной структуры. В этом случае каждый элемент подчиненного справочника будет связан с одним из элементов справочника-владельца.
Внешне работа с подчиненным справочником в системе 1С:Предприятие будет выглядеть следующим образом. Если для подчиненного справочника установлен режим показа в виде иерархического списка, то перед использованием справочника сначала должен быть выбран элемент справочника-владельца. При показе на экране подчиненный справочник будет содержать в своем заголовке наименование элемента-владельца, а список элементов подчиненного справочника будет содержать только элементы, относящие к элементу-владельцу. При смене элемента-владельца информация в окне подчиненного справочника будет соответствующим образом обновлена.
Если открыть подчиненный справочник, не выбрав элемент-владелец, то в окне подчиненного справочника не будет отображаться ни одного элемента, а в заголовке окна будет выдано сообщение «Не задан элемент-владелец».
При работе с системой 1С:Преднриятие для подчиненного справочника может быть отключен показ в виде иерархического списка. В этом случае в окне подчиненного справочника будут отображаться все элементы этого справочника, то есть элементы, починенные разным владельцам, будут показываться вперемешку. Тем не менее, любой элемент подчиненного справочника «знает» своего владельца: если для справочника включен режим «Редактировать в диалоге» (см. ниже п. «Создание форм справочника»), наименование элемента-владельца будет выдаваться в заголовке окна редактирования элемента справочника.
Установка текущего владельца
СпрДоговоры = СоздатьОбъект("Справочник.Договоры");
СпрДоговоры.ИспользоватьВладельца(ВыбрКонтрагент);
СпрДоговоры.ВыбратьЭлементы(); //открываем выборку по договорам выбранного контрагента <...>
Информация о текущем элементе
Если справочник подчиненный, то будет полезным применение следующих методов и атрибутов, которые позволяют получить информацию о текущем элементе справочника:
Strazik