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

Предназначение

В системе объектов 1С:Предприятия ключевое место занимают справочники, бухгалтерские счета (в меньшей степени с планы видов характеристик), главной особенностью которых является иерархическая структура.

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

ierarhiya-spravochnika

Стоит заметить, что это не новый функционал – появился он еще до 7.7. Например в 6.0 максимум могло быть 3 уровней иерархии.

В 8.0 появилась не только иерархия групп, но и иерархия элементов.

Данный функционал не является, чем то сложным – просто у каждого такого элемента, группы появляется свойство “Родитель”, т.е. таблицы имеет ту же двумерную структуру:

  • У родителя может произвольное количество подчиненных элементов, если уровни не ограничены, то и произвольное количество групп (с содержимым)
  • У подчиненного элемента может быть всегда 1 родитель – это упрощает, но ограничивает возможности 1С. Например, для сайтов интернет-магазинов свойственна более сложная, многоиерархичная структура, которую одним справочников в 1С реализовать нельзя.

Использование

Простой пример:

ВЫБРАТЬ
    Ссылка,
    Родитель
ИЗ     
    Справочник.Контрагенты
ГДЕ
    Ссылка В ИЕРАРХИИ (&НекаяГруппа)
 

Получим подчиненные счета из плана счетов для предопределенного элемента

ВЫБРАТЬ
    Хозрасчетный.Ссылка
ИЗ
    ПланСчетов.Хозрасчетный КАК Хозрасчетный
ГДЕ
    Хозрасчетный.Ссылка В ИЕРАРХИИ (ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.Материалы))

Что происходит в реальности

Система преобразует такую команду в цепочку запросов, что негативно сказывается на производительности.
Использование данной команды для больших справочников не рекомендуется, особенно в явных условиях виртуальных таблиц (вложенные более оптимальные).
Если справочник имеет заранее известную вложенность, то использование цепочки соединений, может быть более оправдано для таких запросов, но является не универсальным и “некрасивым”.

Следует организовывать алгоритм так, чтобы подобные запросы запросы производились редко, не циклично, по возможности “кешировались”.

Дополнительная информация

В конструкторе запроса задается на вкладке условия:

v-ierrahii-v-konstruktore-zaprosa

В отчетах СКД и в механизмах отбора системы/отчетов существует аналог:

  • “В группе”.
  • “В группе из списка”.

 

Если в качестве параметра передать пустую ссылку, то данный запрос выдаст все элементы (истина),  это следует иметь ввиду

ВЫБРАТЬ
    Ссылка,
    Родитель
ИЗ
    Справочник.Контрагенты
ГДЕ
    Ссылка В ИЕРАРХИИ
    (Значение(Справочник.Контрагенты.ПустаяСсылка))

Эту особенность можно использовать в фильтрах, т.е. если значение не выбрано  считается, что фильтр не действует.

Вот такой полезный, удобный, но особенный условный оператор “В ИЕРАРХИИ()”.

Вести бизнес без рекламы все равно, что подмигивать девушкам в полной темноте

— Стюарт Хендерсон Бритт