Имеется запрос

```1c
    ВЫБРАТЬ РАЗРЕШЕННЫЕ
    СтруктураПредприятия.Ссылка КАК Ссылка
    ИЗ
    Справочник.СтруктураПредприятия КАК СтруктураПредприятия
    ГДЕ
    СтруктураПредприятия.Ссылка В ИЕРАРХИИ(&ПодразделениеУправленческое)
    И НЕ СтруктураПредприятия.ПометкаУдаления
```

У пользователя установлено ограничение доступа к справочнику СтруктураПредприятия.
Если в параметр &ПодразделениеУправленческое передать пустую ссылку, то запрос выдает пустой результат. Это правильное поведение? Если убрать условие "СтруктураПредприятия.Ссылка В ИЕРАРХИИ(&ПодразделениеУправленческое)", то запрос возвращает доступные подразделения.
---
Решение - сначала в привилегированном режиме получить подразделения в иерархии, а потом из них выбрать доступные пользователю:

```1c
    // Получает доступные пользователю подразделения

    БылУстановленПривилегированныйРежим = ПривилегированныйРежим();

    Если Не БылУстановленПривилегированныйРежим Тогда
    УстановитьПривилегированныйРежим(Истина);
    КонецЕсли;

    Запрос.Текст = "ВЫБРАТЬ
    | СтруктураПредприятия.Ссылка КАК Ссылка
    |ПОМЕСТИТЬ ВТ_ПодразделенияВИерархии
    |ИЗ
    | Справочник.СтруктураПредприятия КАК СтруктураПредприятия
    |ГДЕ
    | НЕ СтруктураПредприятия.ПометкаУдаления
    | И СтруктураПредприятия.Ссылка В ИЕРАРХИИ(&ПодразделениеУправленческое)";

    Запрос.Выполнить();

    Если Не БылУстановленПривилегированныйРежим Тогда
    УстановитьПривилегированныйРежим(Ложь);
    КонецЕсли;

    Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
    | СтруктураПредприятия.Ссылка КАК Ссылка
    |ПОМЕСТИТЬ ВТ_УправленческиеПодразделения
    |ИЗ
    | Справочник.СтруктураПредприятия КАК СтруктураПредприятия
    | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_ПодразделенияВИерархии КАК ВТ_ПодразделенияВИерархии
    | ПО СтруктураПредприятия.Ссылка = ВТ_ПодразделенияВИерархии.Ссылка";

    Запрос.Выполнить();
```
---
А как сам думаешь? Много существует подчиненных элементов у пустой ссылки иерархического справочника?
---
В подчиненных элементах у пустой ссылки - весь справочник.
И если ограничений доступа нет, то запрос возвращает весь справочник.

Я думаю, дело в том, что нет доступа к промежуточным уровням иерархии. А движок 1С в запросе с условием В ИЕРАРХИИ скорее всего спускается по уровням. Нет доступа к узлу - он останавливается и глубже уже не смотрит (не может посмотреть)
---
Решение - сначала в привилегированном режиме получить подразделения в иерархии, а потом из них выбрать доступные пользователю:

```1c
    // Получает доступные пользователю подразделения

    БылУстановленПривилегированныйРежим = ПривилегированныйРежим();

    Если Не БылУстановленПривилегированныйРежим Тогда
    УстановитьПривилегированныйРежим(Истина);
    КонецЕсли;

    Запрос.Текст = "ВЫБРАТЬ
    | СтруктураПредприятия.Ссылка КАК Ссылка
    |ПОМЕСТИТЬ ВТ_ПодразделенияВИерархии
    |ИЗ
    | Справочник.СтруктураПредприятия КАК СтруктураПредприятия
    |ГДЕ
    | НЕ СтруктураПредприятия.ПометкаУдаления
    | И СтруктураПредприятия.Ссылка В ИЕРАРХИИ(&ПодразделениеУправленческое)";

    Запрос.Выполнить();

    Если Не БылУстановленПривилегированныйРежим Тогда
    УстановитьПривилегированныйРежим(Ложь);
    КонецЕсли;

    Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
    | СтруктураПредприятия.Ссылка КАК Ссылка
    |ПОМЕСТИТЬ ВТ_УправленческиеПодразделения
    |ИЗ
    | Справочник.СтруктураПредприятия КАК СтруктураПредприятия
    | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_ПодразделенияВИерархии КАК ВТ_ПодразделенияВИерархии
    | ПО СтруктураПредприятия.Ссылка = ВТ_ПодразделенияВИерархии.Ссылка";

    Запрос.Выполнить();
```