```1c
    &После("УстановкаПараметровСеанса")
    Процедура ПМ_УстановкаПараметровСеанса(ИменаПараметровСеанса)
    ПараметрыСеанса.ТекущийПользователь.ПМЗонаДоступа);
    КонецПроцедуры

    не дает результата ошибка при обращении

    Контрагенты ГДЕ (Контрагенты.ПМЗонаДоступа = &ПМЗонаДоступа
    ИЛИ Контрагенты.ЭтоГруппа = ИСТИНА)
```
---
В модуле сеанса своего расширения сделал следующее и заработало!

```1c
    Функция ОпределитьТекущегоПользователя()
    ТекПользователь = Справочники.Пользователи.НайтиПоНаименованию(ИмяПользователя(),Истина);
    Возврат ТекПользователь;
    КонецФункции

    // Установить значения параметров сеанса и возвратить имена установленных параметров сеанса
    // в параметре УстановленныеПараметры.
    //
    // Параметры
    // ИмяПараметра - Строка - имя параметра сеанса, который требуется установить (проинициализировать).
    // УстановленныеПараметры - Массив - массив, в который добавляются имена
    // установленных (проинициализированных) параметров.
    //
    Процедура УстановитьЗначениеПараметраСеанса(Знач ИмяПараметра, УстановленныеПараметры)

    // Если в данном вызове УстановкаПараметровСеанса параметр ИмяПараметра уже
    // был установлен - возврат.
    Если УстановленныеПараметры.Найти(ИмяПараметра) <> Неопределено Тогда
    Возврат;
    КонецЕсли;

    Если ИмяПараметра = "ПМЗонаДоступа" Тогда
    ТП = ОпределитьТекущегоПользователя();

    ПараметрыСеанса.ПМЗонаДоступа = ТП.ПМЗонаДоступа ;

    //ПараметрыСеанса.<другой параметра сеанса> = <значение>;
    УстановленныеПараметры.Добавить(ИмяПараметра);
    Сообщить(ПараметрыСеанса.ТекущийПользователь.ПМЗонаДоступа);
    //Исключение
    // КонецПопытки;
    //УстановленныеПараметры.Добавить("<другой параметра сеанса>");
    КонецЕсли;

    КонецПроцедуры

    &После("УстановкаПараметровСеанса")
    Процедура ПМ_УстановкаПараметровСеанса(ИменаПараметровСеанса)

    // Вставить содержимое метода.
    //Если ПараметрыСеанса.ПМЗонаДоступа<> ПараметрыСеанса.ТекущийПользователь.ПМЗонаДоступа Тогда
    //ПараметрыСеанса.ПМЗонаДоступа = ПараметрыСеанса.ТекущийПользователь.ПМЗонаДоступа;
    //ПМЗонаДоступа = ПараметрыСеанса.ТекущийПользователь.ПМЗонаДоступа;

    //Сообщить(ПМЗонаДоступа);
    //УстановленныеПараметры.Добавить("ПМЗонаДоступа")
    //УстановленныеПараметры
    //МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер");
    //МодульМультиязычностьСервер.УстановкаПараметровСеанса("ПМЗонаДоступа", ПараметрыСеанса.ТекущийПользователь.ПМЗонаДоступа);

    //УстановитьЗначениеПараметраСеанса("ПМЗонаДоступа", ПараметрыСеанса.ТекущийПользователь.ПМЗонаДоступа);
    //КонецЕсли;
    //Сообщить (2);
    Если ИменаПараметровСеанса = Неопределено Тогда
    // Раздел установки параметров сеанса при начале сеанса (ИменаПараметровСеанса = Неопределено)
    // Выполняется установка параметров сеанса, которые можно инициализировать
    // при начале работы системы

    Иначе
    // Установка параметров сеанса "по требованию"

    // Параметры сеанса, инициализация которых требует обращения к одним и тем же данным
    // следует инициализировать сразу группой. Для того, чтобы избежать их повторной инициализации,
    // имена уже установленных параметров сеанса сохраняются в массиве УстановленныеПараметры
    УстановленныеПараметры = Новый Массив;
    //Для Каждого ИмяПараметра Из ИменаПараметровСеанса Цикл
    УстановитьЗначениеПараметраСеанса("ПМЗонаДоступа", УстановленныеПараметры);
    //КонецЦикла;

    КонецЕсли;

    КонецПроцедуры
```
---
ПараметрыСеанса.ПМЗонаДоступа = ПМЗонаДоступа;
---
криво скопировался текст запроса моя процедура следующая
&После("УстановкаПараметровСеанса")
Процедура ПМ_УстановкаПараметровСеанса(ИменаПараметровСеанса)

  ПараметрыСеанса.ПМЗонаДоступа = ПараметрыСеанса.ТекущийПользователь.ПМЗонаДоступа;
  //УстановленныеПараметры.Добавить("ПМЗонаДоступа") //вобще непонятно что за переменная

КонецПроцедуры

(2) Это не параметр запроса , а ограничение на справочник в поле Все ограничения доступа - Ограничение доступа.
(4) Параметр сеанс я свой добавил, права на него установил, но обращение не дает результата

нашел я еще в общем модуле Пользователи вот такую штуку может она дает возвращаемый результат в запросе с Ограничениями &ТекущийПользователь, или там где то есть объявление переменных?

```1c
    #Область ПрограммныйИнтерфейс

    ////////////////////////////////////////////////////////////­////////////////////
    // Основные процедуры и функции.

    // Возвращает текущего пользователя или текущего внешнего пользователя,
    // в зависимости от того, кто выполнил вход в сеанс.
    // Рекомендуется использовать в коде, который поддерживает работу в обоих случаях.
    //
    // Возвращаемое значение:
    // СправочникСсылка.Пользователи, СправочникСсылка.ВнешниеПользователи - пользователь
    // или внешний пользователь.
    //
    Функция АвторизованныйПользователь() Экспорт

    Возврат ПользователиСлужебный.АвторизованныйПользователь();

    КонецФункции

    // Возвращает текущего пользователя.
    // Рекомендуется использовать в коде, который не поддерживает работу с внешними пользователями.
    //
    // Если вход в сеанс выполнил внешний пользователь, тогда будет вызвано исключение.
    //
    // Возвращаемое значение:
    // СправочникСсылка.Пользователи - пользователь.
    //
    Функция ТекущийПользователь() Экспорт
```
---
а кто вам про такой способ обращения рассказал? Ставьте параметр запроса.
---
Как ругается? МБ типы не совпадают. Ну да и обращаясь к ТекущийПользователь.ПМЗонаДоступа ты как бы обращаешься к самому реквизиту записи, соглашусь с (1). Если уж так нужно, сделай новый параметр сеанса и туда пихай что хочешь.
---
+
---
Зеленое Работает, Красное Нет
---
В модуле сеанса своего расширения сделал следующее и заработало!

```1c
    Функция ОпределитьТекущегоПользователя()
    ТекПользователь = Справочники.Пользователи.НайтиПоНаименованию(ИмяПользователя(),Истина);
    Возврат ТекПользователь;
    КонецФункции

    // Установить значения параметров сеанса и возвратить имена установленных параметров сеанса
    // в параметре УстановленныеПараметры.
    //
    // Параметры
    // ИмяПараметра - Строка - имя параметра сеанса, который требуется установить (проинициализировать).
    // УстановленныеПараметры - Массив - массив, в который добавляются имена
    // установленных (проинициализированных) параметров.
    //
    Процедура УстановитьЗначениеПараметраСеанса(Знач ИмяПараметра, УстановленныеПараметры)

    // Если в данном вызове УстановкаПараметровСеанса параметр ИмяПараметра уже
    // был установлен - возврат.
    Если УстановленныеПараметры.Найти(ИмяПараметра) <> Неопределено Тогда
    Возврат;
    КонецЕсли;

    Если ИмяПараметра = "ПМЗонаДоступа" Тогда
    ТП = ОпределитьТекущегоПользователя();

    ПараметрыСеанса.ПМЗонаДоступа = ТП.ПМЗонаДоступа ;

    //ПараметрыСеанса.<другой параметра сеанса> = <значение>;
    УстановленныеПараметры.Добавить(ИмяПараметра);
    Сообщить(ПараметрыСеанса.ТекущийПользователь.ПМЗонаДоступа);
    //Исключение
    // КонецПопытки;
    //УстановленныеПараметры.Добавить("<другой параметра сеанса>");
    КонецЕсли;

    КонецПроцедуры

    &После("УстановкаПараметровСеанса")
    Процедура ПМ_УстановкаПараметровСеанса(ИменаПараметровСеанса)

    // Вставить содержимое метода.
    //Если ПараметрыСеанса.ПМЗонаДоступа<> ПараметрыСеанса.ТекущийПользователь.ПМЗонаДоступа Тогда
    //ПараметрыСеанса.ПМЗонаДоступа = ПараметрыСеанса.ТекущийПользователь.ПМЗонаДоступа;
    //ПМЗонаДоступа = ПараметрыСеанса.ТекущийПользователь.ПМЗонаДоступа;

    //Сообщить(ПМЗонаДоступа);
    //УстановленныеПараметры.Добавить("ПМЗонаДоступа")
    //УстановленныеПараметры
    //МодульМультиязычностьСервер = ОбщегоНазначения.ОбщийМодуль("МультиязычностьСервер");
    //МодульМультиязычностьСервер.УстановкаПараметровСеанса("ПМЗонаДоступа", ПараметрыСеанса.ТекущийПользователь.ПМЗонаДоступа);

    //УстановитьЗначениеПараметраСеанса("ПМЗонаДоступа", ПараметрыСеанса.ТекущийПользователь.ПМЗонаДоступа);
    //КонецЕсли;
    //Сообщить (2);
    Если ИменаПараметровСеанса = Неопределено Тогда
    // Раздел установки параметров сеанса при начале сеанса (ИменаПараметровСеанса = Неопределено)
    // Выполняется установка параметров сеанса, которые можно инициализировать
    // при начале работы системы

    Иначе
    // Установка параметров сеанса "по требованию"

    // Параметры сеанса, инициализация которых требует обращения к одним и тем же данным
    // следует инициализировать сразу группой. Для того, чтобы избежать их повторной инициализации,
    // имена уже установленных параметров сеанса сохраняются в массиве УстановленныеПараметры
    УстановленныеПараметры = Новый Массив;
    //Для Каждого ИмяПараметра Из ИменаПараметровСеанса Цикл
    УстановитьЗначениеПараметраСеанса("ПМЗонаДоступа", УстановленныеПараметры);
    //КонецЦикла;

    КонецЕсли;

    КонецПроцедуры
```