Есть динамический список, в котором отражается результат выполнения запроса. Под полными правами пользователь видит значение измерения "организация" этого регистра на форме.
Есть пользователи, у которых стоит ограничение на все организации, кроме своей. Нужно, чтобы пользователи, с ограниченными правами могли видеть наименование организации в этом списке.
Пробовал сделать так: в настройках дин. списка убираю галку "динам. считывание данных". Далее в пр-ре на форме ПриСозданииНаСервере

```1c
    УстановитьПривилегированныйРежим(Истина);
    ЭтаФорма.КадровыйРезерв.ОсновнаяТаблица = "РегистрСведений.лнт_КадровыйРезерв";
    ЭтаФорма.КадровыйРезерв.ПроизвольныйЗапрос = Истина;
    ЭтаФорма.КадровыйРезерв.ТекстЗапроса = "ВЫБРАТЬ
    | РегистрСведенийлнт_КадровыйРезерв.Кандидат,
    | РегистрСведенийлнт_КадровыйРезерв.ДатаНачала,
    | РегистрСведенийлнт_КадровыйРезерв.ДатаОкончания,
    | РегистрСведенийлнт_КадровыйРезерв.Организация,
    | РегистрСведенийлнт_КадровыйРезерв.Подразделение,
    | РегистрСведенийлнт_КадровыйРезерв.Конкурс,
    | РегистрСведенийлнт_КадровыйРезерв.ГруппаДолжности,
    | РегистрСведенийлнт_КадровыйРезерв.КатегорияДолжности,
    | РегистрСведенийлнт_КадровыйРезерв.ФизЛицо,
    | РегистрСведенийлнт_КадровыйРезерв.Организация.Наименование КАК ОИВ
    |ИЗ
    | РегистрСведений.лнт_КадровыйРезерв КАК РегистрСведенийлнт_КадровыйРезерв
    |ГДЕ
    | РегистрСведенийлнт_КадровыйРезерв.ФизЛицо = &ФизЛицо";

    ЭтаФорма.КадровыйРезерв.Параметры.УстановитьЗначениеПараметра("ФизЛицо", Объект.Физлицо);
    Элементы.КадровыйРезерв.Обновить();
    УстановитьПривилегированныйРежим(Ложь);
```

В результат выполнения запросе на сервере - наим. организации в отладчике есть. Однако при переходе с сервера на клиент оно почему то теряется( под пользователем с ограниченными правами. Под полными - все ок(.
Как еще можно выполнить даный запрос для дин.списка, чтобы вывести наим. организации для пользователя с урезанными правами ?
---
Manticor, я без шаблона делал) с шаблонами сами разбирайтесь )) ПоЗначениям не подойдет помоему, там надо ПоЗначениямРасширенный шаблон вам брать ) но и с шаблоном возможно сделать тоже самое, только с параметрами разобраться)
---
Manticor, разрешенные
---
DJDUH, если это использовать то в поле пишет - объект не обнаружен и мега строка из символов)
---
Manticor, тогда хз(
---
Manticor, я так понимаю, что проблема в
| РегистрСведенийлнт_КадровыйРезерв.Организация,

т.е. по прежнему тащится ссылка, на организацию, но на нее запрет.
Так что, надо либо убрать это поле, оставить только
РегистрСведенийлнт_КадровыйРезерв.Организация.Наименование КАК ОИВ

либо в самом запросе, исключить, каким то параметром, это ссылочное поле.
Т.е. организацию в параметр и передаем.
---
Boneman, насколько я понимаю, если установить УстановитьПривилегированныйРежим(Истина) - то запрос должен притянуть и запрещенную организацию))
---
Manticor, привелигированный режим то не навсегда установлен, а в рамках процедурки, и когда оно выполнится,
привелигированному режиму придет конец, - а в результате запроса у нас есть запрещенные элементы, что должно вызвать ошибку.
Для этого и нужно, пока включен режим бога, сформировать результат в таком виде, чтобы он был нормально захаван пользователем с любыми правами.
---
Решил немного проще. Не шаблонами. Перед запросом установил привилегированный режим.

```1c
    Процедура ПодготовитьДанные()

    // Код подготовки запроса

    УстановитьПривилегированныйРежим(Истина);
    Выборка = Запрос.Выполнить().Выбрать();
    УстановитьПривилегированныйРежим(Ложь);

    // Обработка результатов запроса
```

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

Понимаю, что апнул тему 5-тилетней давности, но поиском только эту более-менее подходящую тему нашел. Вот и решил тут отписаться, может кому поможет.
---
Я уже не помню точно, но мне этот способ не подошел, так как после возврата с сервера на клиент не было значения организации.
 У вас по видимому нет вызова сервера с клиента?
---
у меня при получении данных с сервера в динамической списке надо было получить данные из регистра по измерения, которые не доступные по РЛС. Технически все на сервере, но были траблы с тем, что событие на сервере без контекста. Нашёл статью где можно указать нужные данные формы в настройки компоновщика. Так и решил задачу.
---
Не пробовал написать
"| РегистрСведенийлнт_КадровыйРезерв.Организация.Наименование КАК Организация,"
?
---
Выполняйте запрос в Общем Модуле "Полные права"

Пишите не хитрую функцию там

```1c
    Функция ВыполнитьЗапрос(ТекстЗапроса)

    Возврат ТекстЗапроса.Выполнить().Выгрузить();

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

И на выхлопе уже получаете таблицу со всеми данными без ограничений
---
делается параметр сеанса, скажем "ЧтениеВсехОрганизаций" - булево.. при установке сеанса инициализируем его в = Ложь.. делаем новую роль, или на вашу пользовательскую ограниченную роль цепляем RLS на справочник организации - чтение, типа "ГДЕ &ЧтениеВсехОрганизаций".. ну и в нужном месте (ну скажем в вашем случае при создании на сервере ставим ЧтениеВсехОрганизаций= истина" и все ) не забудьте только сбросить потом параметр сеанса ЧтениеВсехОрганизаций= ложь, когда форму закроют)
---
AllexSoft, а как установить данный параметр в ограничениях прав? Тоесть мы его установим данный параметр в истину или ложь при инициализации сеанса, затем в шаблоне ограничения нужно к нему обратиться.
Текст шаблона начинается так:

```1c
    // ПоЗначениям ( Таблица, Право, Модификатор, В1,П1, В2,Р2, ..., В(n), П(n)).
    // № параметра: 1, 2, 3, 4, 5, 6, 7, ..., 2+n*2,3+n*2 .
    // Читается так: "ограничение доступа по значениям".
    // Параметры:
    // Таблица - Имя текущей таблицы, например "Документ.ПоступлениеТоваровИУслуг".
    // Право - Одна из строк "Чтение", "Добавление", "Изменение", "Удаление".
    // Модификатор - изменяет шаблон.
    // 1-й модификтор - строка "НеОграничиватьДоступКГруппам" указывает
    // безусловно выбирать группы иерархического справочника.
    // Других модификаторов в этой версии шаблона не предусмотрено.
    // В(n) - Вид доступа (имя предопределённого элемента ПланВидовХарактеристик.ВидыДоступа).
    // Когда В(n) = "Условие" (или "), тогда Р(n) содержит строку условия на языке запросов, например
    // "Т.Автор = &ТекущийПользователь",
    // "ТипЗначения(Т.Владелец) = Тип(Справочник.Организации)", где Т - псевдоним текущей таблицы.
    // Если по объекту с таблицей Таблица будет выполняться запись наборов значений доступа,
    // то условие должно проверять значения только из объекта и/или параметров сеанса, например, &ТекущийПользователь.
    // Когда В(n) = "ПравоЧтения" ИЛИ "ПравоДобавления" ИЛИ "ПравоИзменения",
    // выполняется проверка наличия права на таблицу значения Т.Р(n).
    // П(n) - Поле значения, проверяемого по виду доступа, кроме случая В(n) = "Условие" (или ").
    // Примечение: максимальное количество одновременно проверяемых значений полей можно увеличить, изменив шаблон, но
    // необходимо будет указывать все параметры шаблона, т.е. указывать пустые строки, когда количество полей меньше максимального.
    // Шаблон имеет структуру:
    // <Общая часть условий> <Условие по группе параметров 1> И <Условие по группе параметров 2> И ... <Условие по группе параметров(n)>
    // Пример:
    // ПоЗначениям("Документ.ПоступлениеТоваровИУслуг", "Чтение", ",
    // "Организации","Организация",
    // "Поставщики","Контрагент", ",", ...)

    // Проверка правильности параметра Модификатор.
    #Если НЕ ("#Параметр(3)" = "НеОграничиватьДоступКГруппам" ИЛИ "#Параметр(3)" = ") #Тогда
    // Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
    НеверныйМодификатор: #Параметр(3)
    #КонецЕсли
    // Проверка правильности параметра Право.
    #Если НЕ ("#Параметр(2)" = "Чтение" ИЛИ "#Параметр(2)" = "Добавление" ИЛИ
    "#Параметр(2)" = "Изменение" ИЛИ "#Параметр(2)" = "Удаление") #Тогда
    // Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
    НеверноеПраво: #Параметр(2)
    #КонецЕсли
```
---
Manticor, я без шаблона делал) с шаблонами сами разбирайтесь )) ПоЗначениям не подойдет помоему, там надо ПоЗначениямРасширенный шаблон вам брать ) но и с шаблоном возможно сделать тоже самое, только с параметрами разобраться)
---
AllexSoft, как можно перевести мани? В личке это отключено?
---
Можешь пояснить подробней? Пытаюсь понять, не могу. Куда условие досовывать
 "ГДЕ &ЧтениеВсехОрганизаций"
---
Владимир, доброго дня. Да.... Теме 5 лет, а до сих пор актуально. Хорошо, что кому то понадобилась)
ГДЕ &ЧтениеВсехОрганизаций я помещал в RLS роли, которая есть у пользователя с неполными правами.
Сам параметр ЧтениеВсехОрганизаций сначала добавлял в параметры сеанса затем устанавливал в модуле сеанса в пр-ре УстановитьЗначениеПараметраСеанса
Постараюсь привести текст RLS. Он довольно болшой, но добавлялась всего одна строчка кода:

```1c
    #Если &ЧтениеВсехОрганизаций = Истина #Тогда
    Истина ИЛИ
    #КонецЕсли

    // ПоЗначениям ( Таблица, Право, Модификатор, В1,П1, В2,Р2, ..., В(n), П(n)).
    // № параметра: 1, 2, 3, 4, 5, 6, 7, ..., 2+n*2,3+n*2 .
    // Читается так: "ограничение доступа по значениям".
    // Параметры:
    // Таблица - Имя текущей таблицы, например "Документ.ПоступлениеТоваровИУслуг".
    // Право - Одна из строк "Чтение", "Добавление", "Изменение", "Удаление".
    // Модификатор - изменяет шаблон.
    // 1-й модификтор - строка "НеОграничиватьДоступКГруппам" указывает
    // безусловно выбирать группы иерархического справочника.
    // Других модификаторов в этой версии шаблона не предусмотрено.
    // В(n) - Вид доступа (имя предопределённого элемента ПланВидовХарактеристик.ВидыДоступа).
    // Когда В(n) = "Условие" (или "), тогда Р(n) содержит строку условия на языке запросов, например
    // "Т.Автор = &ТекущийПользователь",
    // "ТипЗначения(Т.Владелец) = Тип(Справочник.Организации)", где Т - псевдоним текущей таблицы.
    // Если по объекту с таблицей Таблица будет выполняться запись наборов значений доступа,
    // то условие должно проверять значения только из объекта и/или параметров сеанса, например, &ТекущийПользователь.
    // Когда В(n) = "ПравоЧтения" ИЛИ "ПравоДобавления" ИЛИ "ПравоИзменения",
    // выполняется проверка наличия права на таблицу значения Т.Р(n).
    // П(n) - Поле значения, проверяемого по виду доступа, кроме случая В(n) = "Условие" (или ").
    // Примечение: максимальное количество одновременно проверяемых значений полей можно увеличить, изменив шаблон, но
    // необходимо будет указывать все параметры шаблона, т.е. указывать пустые строки, когда количество полей меньше максимального.
    // Шаблон имеет структуру:
    // <Общая часть условий> <Условие по группе параметров 1> И <Условие по группе параметров 2> И ... <Условие по группе параметров(n)>
    // Пример:
    // ПоЗначениям("Документ.ПоступлениеТоваровИУслуг", "Чтение", ",
    // "Организации","Организация",
    // "Поставщики","Контрагент", ",", ...)

    // Проверка правильности параметра Модификатор.
    #Если НЕ ("#Параметр(3)" = "НеОграничиватьДоступКГруппам" ИЛИ "#Параметр(3)" = ") #Тогда
    // Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
    НеверныйМодификатор: #Параметр(3)
    #КонецЕсли
    // Проверка правильности параметра Право.
    #Если НЕ ("#Параметр(2)" = "Чтение" ИЛИ "#Параметр(2)" = "Добавление" ИЛИ
    "#Параметр(2)" = "Изменение" ИЛИ "#Параметр(2)" = "Удаление") #Тогда
    // Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
    НеверноеПраво: #Параметр(2)
    #КонецЕсли

    // Общая проверка использования ограничений доступа на уровне записей.
    #Если НЕ &ОграничиватьДоступПоВиду = " #Тогда

    Т ИЗ Т // Т - псевдоним текущей таблицы (выбран коротким, чтобы сократить количество символов в тексте параметра-условия на языке запросов).

    ГДЕ

    // Безусловная выборка групп в иерархическом объекте метаданных (если нужно).
    #Если "#Параметр(3)" = "НеОграничиватьДоступКГруппам" #Тогда
    Т.ЭтоГруппа ИЛИ
    #КонецЕсли
```

```1c
    //++ВСТАВКА ПАРАМЕТРА!!!+ 29.01.2015
    #Если &ЧтениеВсехОрганизаций = Истина #Тогда
    Истина ИЛИ
    #КонецЕсли
    //--ВСТАВКА ПАРАМЕТРА!!!+ 29.01.2015

    Истина В
    ( // Проверка права пользователя на текущую таблицу в целом.
    // Права на таблицы формируются по составу ролей профиля группы доступа.
    Выбрать Первые 1 Истина
    ИЗ
    (
    Выбрать РАЗЛИЧНЫЕ
    ТаблицыГруппДоступа.Таблица,
    ТаблицыГруппДоступа.ГруппаДоступа
    ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступа
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГруппыЗначенийДоступа КАК ПользователиИГруппыПользователей
    ПО
    ТаблицыГруппДоступа.Таблица = "#Параметр(1)"
    #Если НЕ "#Параметр(2)" = "Чтение" #Тогда
    И ТаблицыГруппДоступа.#Параметр(2)
    #КонецЕсли
    #Если &ТекущийВнешнийПользователь = Значение(Справочник.ВнешниеПользователи.ПустаяСсылка) #Тогда
    И ПользователиИГруппыПользователей.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка)
    И ПользователиИГруппыПользователей.ЗначениеДоступа = &ТекущийПользователь
    #Иначе
    И ПользователиИГруппыПользователей.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка)
    И ПользователиИГруппыПользователей.ЗначениеДоступа = &ТекущийВнешнийПользователь
    #КонецЕсли
    И ПользователиИГруппыПользователей.ГруппаДоступа = ТаблицыГруппДоступа.Пользователь
    ) КАК ТаблицыГруппДоступа
    ГДЕ
    ( // Поиск значений заданных полей в группах доступа (пользователей) по заданным видам доступа.

    //// Проверка значения поля группы параметров 1.
    #Если "#Параметр(4)" = "Условие" ИЛИ "#Параметр(4)" = " #Тогда
    // Когда имя вида доступа "Условие" (или "), тогда вместо имени поля задано условие.
    ( #Параметр(5) )
    #ИначеЕсли "#Параметр(4)" = "ПравоЧтения" ИЛИ "#Параметр(4)" = "ПравоДобавления" ИЛИ "#Параметр(4)" = "ПравоИзменения" #Тогда
    #Параметр(5) <> Неопределено
    И Истина В
    ( // Проверка права пользователя на таблицу Значения, установленного в поле.
    Выбрать Первые 1 Истина
    ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
    ГДЕ
    ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ТаблицыГруппДоступа.ГруппаДоступа
    И ТипЗначения(ТаблицыГруппДоступаПроверкаПрава.ТипТаблицы) = ТипЗначения(#Параметр(5))
    #Если "#Параметр(4)" = "ПравоДобавления" #Тогда
    И ТаблицыГруппДоступаПроверкаПрава.Добавление
    #ИначеЕсли "#Параметр(4)" = "ПравоИзменения" #Тогда
    И ТаблицыГруппДоступаПроверкаПрава.Изменение
    #КонецЕсли
    )
    #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(4) = " #Тогда

    #Если &ОграничиватьДоступПоВиду#Параметр(4) = "ЧерезПраваПоЗначениямДоступа" #Тогда
    (
    НЕ Истина В // Проверка, что по виду доступа пользователь ограничивается.
    (
    Выбрать Истина
    ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Виды
    ГДЕ
    Виды.ГруппаДоступа = ТаблицыГруппДоступа.ГруппаДоступа
    И Виды.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.#Параметр(4))
    И Виды.ТолькоВидДоступа = Истина
    )
    ИЛИ
    Истина В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
    (
    Выбрать Первые 1 Истина
    ИЗ РегистрСведений.ПраваПоЗначениямДоступа КАК ПраваПоЗначениям
    Внутреннее Соединение РегистрСведений.ГруппыЗначенийДоступа КАК ИерархияЗначений
    ПО
    ИерархияЗначений.ИспользоватьПраваСсылки
    И ИерархияЗначений.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.#Параметр(4))
    И ИерархияЗначений.ЗначениеДоступа = Т.#Параметр(5)
    И ПраваПоЗначениям.Таблица = "#Параметр(1)"
    И ПраваПоЗначениям.ЗначениеДоступа = ИерархияЗначений.ГруппаДоступа
    И ПраваПоЗначениям.#Параметр(2)
    И ПраваПоЗначениям.РаспространяетсяВИерархии >= ИерархияЗначений.СвязьСРодителем
    Внутреннее Соединение РегистрСведений.ГруппыЗначенийДоступа КАК ПользователиИГруппыПользователей
    ПО
    #Если &ТекущийВнешнийПользователь = Значение(Справочник.ВнешниеПользователи.ПустаяСсылка) #Тогда
    ПользователиИГруппыПользователей.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка)
    И ПользователиИГруппыПользователей.ЗначениеДоступа = &ТекущийПользователь
    #Иначе
    ПользователиИГруппыПользователей.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка)
    И ПользователиИГруппыПользователей.ЗначениеДоступа = &ТекущийВнешнийПользователь
    #КонецЕсли
    И ПользователиИГруппыПользователей.ГруппаДоступа = ПраваПоЗначениям.Пользователь
    )
    И НЕ Ложь В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено
    (
    Выбрать Первые 1 Ложь
    ИЗ РегистрСведений.ПраваПоЗначениямДоступа КАК ПраваПоЗначениям
    Внутреннее Соединение РегистрСведений.ГруппыЗначенийДоступа КАК ИерархияЗначений
    ПО
    ИерархияЗначений.ИспользоватьПраваСсылки
    И ИерархияЗначений.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.#Параметр(4))
    И ИерархияЗначений.ЗначениеДоступа = Т.#Параметр(5)
    И ПраваПоЗначениям.Таблица = "#Параметр(1)"
    И ПраваПоЗначениям.ЗначениеДоступа = ИерархияЗначений.ГруппаДоступа
    И ПраваПоЗначениям.#Параметр(2)Запрещено
    И ПраваПоЗначениям.РаспространяетсяВИерархии >= ИерархияЗначений.СвязьСРодителем
    Внутреннее Соединение РегистрСведений.ГруппыЗначенийДоступа КАК ПользователиИГруппыПользователей
    ПО
    #Если &ТекущийВнешнийПользователь = Значение(Справочник.ВнешниеПользователи.ПустаяСсылка) #Тогда
    ПользователиИГруппыПользователей.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка)
    И ПользователиИГруппыПользователей.ЗначениеДоступа = &ТекущийПользователь
    #Иначе
    ПользователиИГруппыПользователей.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка)
    И ПользователиИГруппыПользователей.ЗначениеДоступа = &ТекущийВнешнийПользователь
    #КонецЕсли
    И ПользователиИГруппыПользователей.ГруппаДоступа = ПраваПоЗначениям.Пользователь
    )
    )
    #Иначе
    (
    #Если "#Параметр(4)" = "Пользователи" #Тогда
    #Если &ТекущийВнешнийПользователь = Значение(Справочник.ВнешниеПользователи.ПустаяСсылка) #Тогда
    #Если НЕ &ДобавлятьРуководителямДоступПодчиненных #Тогда
    Истина В
    (
    Выбрать Первые 1 Истина
    ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ПользователиИГруппыПользователей
    ГДЕ
    ПользователиИГруппыПользователей.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.Пользователи)
    И ПользователиИГруппыПользователей.ЗначениеДоступа = Т.#Параметр(5)
    И ПользователиИГруппыПользователей.ГруппаДоступа = &ТекущийПользователь
    )
    #Иначе
    Истина В
    (
    Выбрать Первые 1 Истина
    ИЗ РегистрСведений.ПодчиненныеПользователи КАК ПодчиненныеПользователи
    ГДЕ
    ПодчиненныеПользователи.Пользователь = &ТекущийПользователь
    И ПодчиненныеПользователи.ПодчиненныйПользователь = Т.#Параметр(5)
    И ПодчиненныеПользователи.ГруппаДоступа = ТаблицыГруппДоступа.ГруппаДоступа
    )
    #КонецЕсли
    ИЛИ
    #КонецЕсли
    #ИначеЕсли "#Параметр(4)" = "ВнешниеПользователи" #Тогда
    #Если НЕ (&ТекущийВнешнийПользователь = Значение(Справочник.ВнешниеПользователи.ПустаяСсылка)) #Тогда
    #Если НЕ &ДобавлятьРуководителямДоступПодчиненных #Тогда
    Истина В
    (
    Выбрать Первые 1 Истина
    ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ПользователиИГруппыПользователей
    ГДЕ
    ПользователиИГруппыПользователей.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.ВнешниеПользователи)
    И ПользователиИГруппыПользователей.ЗначениеДоступа = Т.#Параметр(5)
    И ПользователиИГруппыПользователей.ГруппаДоступа = &ТекущийВнешнийПользователь
    )
    #Иначе
    Истина В
    (
    Выбрать Первые 1 Истина
    ИЗ РегистрСведений.ПодчиненныеПользователи КАК ПодчиненныеПользователи
    ГДЕ
    ПодчиненныеПользователи.Пользователь = &ТекущийВнешнийПользователь
    И ПодчиненныеПользователи.ПодчиненныйПользователь = Т.#Параметр(5)
    И ПодчиненныеПользователи.ГруппаДоступа = ТаблицыГруппДоступа.ГруппаДоступа
    )
    #КонецЕсли
    ИЛИ
    #КонецЕсли
    // Если ВидПоТипуЗначенияОдинИзМногих, тогда проверка возможности доступа к значению через вид доступа.
    #ИначеЕсли &ОграничиватьДоступПоВиду#Параметр(4) = "ОдинИзМногихВидов,БезГрупп" ИЛИ
    &ОграничиватьДоступПоВиду#Параметр(4) = "ОдинИзМногихВидов,ОднаГруппа" ИЛИ
    &ОграничиватьДоступПоВиду#Параметр(4) = "ОдинИзМногихВидов,МножествоГрупп" #Тогда
    (
    #Если "Т.#Параметр(5)" = "Т.Ссылка" #Тогда
    Т.ВидДоступа#Параметр(4)
    #Иначе
    НЕ Истина В
    (
    Выбрать Истина
    ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ВидыЗначения
    ГДЕ
    ВидыЗначения.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.#Параметр(4))
    И ВидыЗначения.ЗначениеДоступа = Т.#Параметр(5)
    И ВидыЗначения.ТолькоВидДоступа = Истина
    )
    #КонецЕсли
    ) И
    #КонецЕсли
    Выбор
    Когда Истина В // Поиск значения в группе доступа (пользователей) непосредственно или через группы доступа значений.
    (
    #Если &ОграничиватьДоступПоВиду#Параметр(4) = "ЕдинственныйВид, БезГрупп" ИЛИ
    &ОграничиватьДоступПоВиду#Параметр(4) = "ОдинИзМногихВидов,БезГрупп" #Тогда
    Выбрать Истина
    ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
    ГДЕ
    Значения.ГруппаДоступа = ТаблицыГруппДоступа.ГруппаДоступа
    И Значения.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.#Параметр(4))
    И Значения.ТолькоВидДоступа = Ложь
    И Значения.ЗначениеДоступа = Т.#Параметр(5)
    #ИначеЕсли "Т.#Параметр(5)" = "Т.Ссылка" #Тогда
    #Если &ОграничиватьДоступПоВиду#Параметр(4) = "ЕдинственныйВид, ОднаГруппа" #Тогда
    Выбрать Истина
    ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
    ГДЕ
    Значения.ГруппаДоступа = ТаблицыГруппДоступа.ГруппаДоступа
    И Значения.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.#Параметр(4))
    И Значения.ТолькоВидДоступа = Ложь
    И Значения.ЗначениеДоступа = Т.ГруппаДоступа
    #ИначеЕсли &ОграничиватьДоступПоВиду#Параметр(4) = "ОдинИзМногихВидов,ОднаГруппа" #Тогда
    Выбрать Истина
    ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
    ГДЕ
    Значения.ГруппаДоступа = ТаблицыГруппДоступа.ГруппаДоступа
    И Значения.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.#Параметр(4))
    И Значения.ТолькоВидДоступа = Ложь
    И Значения.ЗначениеДоступа = Т.ГруппаДоступа#Параметр(4)
    #ИначеЕсли &ОграничиватьДоступПоВиду#Параметр(4) = "ЕдинственныйВид ,МножествоГрупп" #Тогда
    Выбрать Первые 1 Истина
    ИЗ #Параметр(1).ГруппыДоступа КАК ГруппыЗначений
    Внутреннее Соединение РегистрСведений.ЗначенияГруппДоступа КАК Значения
    ПО
    ГруппыЗначений.Ссылка = Т.#Параметр(5)
    И Значения.ГруппаДоступа = ТаблицыГруппДоступа.ГруппаДоступа
    И Значения.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.#Параметр(4))
    И Значения.ТолькоВидДоступа = Ложь
    И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаДоступа
    #Иначе // &ОграничиватьДоступПоВиду##Параметр(4) = "ОдинИзМногихВидов,МножествоГрупп"
```

```1c
    Выбрать Первые 1 Истина
    ИЗ #Параметр(1).ГруппыДоступа#Параметр(4) КАК ГруппыЗначений
    Внутреннее Соединение РегистрСведений.ЗначенияГруппДоступа КАК Значения
    ПО
    ГруппыЗначений.Ссылка = Т.#Параметр(5)
    И Значения.ГруппаДоступа = ТаблицыГруппДоступа.ГруппаДоступа
    И Значения.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.#Параметр(4))
    И Значения.ТолькоВидДоступа = Ложь
    И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаДоступа#Параметр(4)
    #КонецЕсли
    #Иначе // "Т.##Параметр(5)" <> "Т.Ссылка"
    Выбрать Первые 1 Истина
    ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначений
    Внутреннее Соединение РегистрСведений.ЗначенияГруппДоступа КАК Значения
    ПО
    ГруппыЗначений.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.#Параметр(4))
    И ГруппыЗначений.ЗначениеДоступа = Т.#Параметр(5)
    И Значения.ГруппаДоступа = ТаблицыГруппДоступа.ГруппаДоступа
    И Значения.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.#Параметр(4))
    И Значения.ТолькоВидДоступа = ГруппыЗначений.ТолькоВидДоступа
    И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаДоступа
    #КонецЕсли
    )
    Тогда Истина
    Иначе Ложь
    Конец
    =
    Выбор
    Когда Истина В // Проверка наличия ограничения по виду доступа для значений.
    (
    Выбрать Истина
    ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Виды
    ГДЕ
    Виды.ГруппаДоступа = ТаблицыГруппДоступа.ГруппаДоступа
    И Виды.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.#Параметр(4))
    И Виды.ТолькоВидДоступа = Истина
    )
    Тогда Истина
    Иначе Ложь
    Конец
    )
    #КонецЕсли
    #Иначе
    Истина
    #КонецЕсли

    //// Проверка значения поля группы параметров 2.
    #Если "#Параметр(6)" = " И "#Параметр(7)" = " #Тогда
    // Группа параметров не используется.
    #ИначеЕсли "#Параметр(6)" = "Условие" ИЛИ "#Параметр(6)" = " #Тогда
    // Когда имя вида доступа "Условие" (или "), тогда вместо имени поля задано условие.
    И ( #Параметр(7) )
    #ИначеЕсли "#Параметр(6)" = "ПравоЧтения" ИЛИ "#Параметр(6)" = "ПравоДобавления" ИЛИ "#Параметр(6)" = "ПравоИзменения" #Тогда
    И #Параметр(7) <> Неопределено
    И Истина В
    ( // Проверка права пользователя на таблицу Значения, установленного в поле.
    Выбрать Первые 1 Истина
    ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
    ГДЕ
    ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ТаблицыГруппДоступа.ГруппаДоступа
    И ТипЗначения(ТаблицыГруппДоступаПроверкаПрава.ТипТаблицы) = ТипЗначения(#Параметр(7))
    #Если "#Параметр(6)" = "ПравоДобавления" #Тогда
    И ТаблицыГруппДоступаПроверкаПрава.Добавление
    #ИначеЕсли "#Параметр(6)" = "ПравоИзменения" #Тогда
    И ТаблицыГруппДоступаПроверкаПрава.Изменение
    #КонецЕсли
    )
    #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(6) = " #Тогда
    И
    #Если &ОграничиватьДоступПоВиду#Параметр(6) = "ЧерезПраваПоЗначениямДоступа" #Тогда
    (
    НЕ Истина В // Проверка, что по виду доступа пользователь ограничивается.
    (
    Выбрать Истина
    ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Виды
    ГДЕ
    Виды.ГруппаДоступа = ТаблицыГруппДоступа.ГруппаДоступа
    И Виды.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.#Параметр(6))
    И Виды.ТолькоВидДоступа = Истина
    )
    ИЛИ
    Истина В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
    (
    Выбрать Первые 1 Истина
    ИЗ РегистрСведений.ПраваПоЗначениямДоступа КАК ПраваПоЗначениям
    Внутреннее Соединение РегистрСведений.ГруппыЗначенийДоступа КАК ИерархияЗначений
    ПО
    ИерархияЗначений.ИспользоватьПраваСсылки
    И ИерархияЗначений.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.#Параметр(6))
    И ИерархияЗначений.ЗначениеДоступа = Т.#Параметр(7)
    И ПраваПоЗначениям.Таблица = "#Параметр(1)"
    И ПраваПоЗначениям.ЗначениеДоступа = ИерархияЗначений.ГруппаДоступа
    И ПраваПоЗначениям.#Параметр(2)
    И ПраваПоЗначениям.РаспространяетсяВИерархии >= ИерархияЗначений.СвязьСРодителем
    Внутреннее Соединение РегистрСведений.ГруппыЗначенийДоступа КАК ПользователиИГруппыПользователей
    ПО
    #Если &ТекущийВнешнийПользователь = Значение(Справочник.ВнешниеПользователи.ПустаяСсылка) #Тогда
    ПользователиИГруппыПользователей.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка)
    И ПользователиИГруппыПользователей.ЗначениеДоступа = &ТекущийПользователь
    #Иначе
    ПользователиИГруппыПользователей.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка)
    И ПользователиИГруппыПользователей.ЗначениеДоступа = &ТекущийВнешнийПользователь
    #КонецЕсли
    И ПользователиИГруппыПользователей.ГруппаДоступа = ПраваПоЗначениям.Пользователь
    )
    И НЕ Ложь В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено
    (
    Выбрать Первые 1 Ложь
    ИЗ РегистрСведений.ПраваПоЗначениямДоступа КАК ПраваПоЗначениям
    Внутреннее Соединение РегистрСведений.ГруппыЗначенийДоступа КАК ИерархияЗначений
    ПО
    ИерархияЗначений.ИспользоватьПраваСсылки
    И ИерархияЗначений.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.#Параметр(6))
    И ИерархияЗначений.ЗначениеДоступа = Т.#Параметр(7)
    И ПраваПоЗначениям.Таблица = "#Параметр(1)"
    И ПраваПоЗначениям.ЗначениеДоступа = ИерархияЗначений.ГруппаДоступа
    И ПраваПоЗначениям.#Параметр(2)Запрещено
    И ПраваПоЗначениям.РаспространяетсяВИерархии >= ИерархияЗначений.СвязьСРодителем
    Внутреннее Соединение РегистрСведений.ГруппыЗначенийДоступа КАК ПользователиИГруппыПользователей
    ПО
    #Если &ТекущийВнешнийПользователь = Значение(Справочник.ВнешниеПользователи.ПустаяСсылка) #Тогда
    ПользователиИГруппыПользователей.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка)
    И ПользователиИГруппыПользователей.ЗначениеДоступа = &ТекущийПользователь
    #Иначе
    ПользователиИГруппыПользователей.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка)
    И ПользователиИГруппыПользователей.ЗначениеДоступа = &ТекущийВнешнийПользователь
    #КонецЕсли
    И ПользователиИГруппыПользователей.ГруппаДоступа = ПраваПоЗначениям.Пользователь
    )
    )
    #Иначе
    (
    #Если "#Параметр(6)" = "Пользователи" #Тогда
    #Если &ТекущийВнешнийПользователь = Значение(Справочник.ВнешниеПользователи.ПустаяСсылка) #Тогда
    #Если НЕ &ДобавлятьРуководителямДоступПодчиненных #Тогда
    Истина В
    (
    Выбрать Первые 1 Истина
    ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ПользователиИГруппыПользователей
    ГДЕ
    ПользователиИГруппыПользователей.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.Пользователи)
    И ПользователиИГруппыПользователей.ЗначениеДоступа = Т.#Параметр(7)
    И ПользователиИГруппыПользователей.ГруппаДоступа = &ТекущийПользователь
    )
    #Иначе
    Истина В
    (
    Выбрать Первые 1 Истина
    ИЗ РегистрСведений.ПодчиненныеПользователи КАК ПодчиненныеПользователи
    ГДЕ
    ПодчиненныеПользователи.Пользователь = &ТекущийПользователь
    И ПодчиненныеПользователи.ПодчиненныйПользователь = Т.#Параметр(7)
    И ПодчиненныеПользователи.ГруппаДоступа = ТаблицыГруппДоступа.ГруппаДоступа
    )
    #КонецЕсли
    ИЛИ
    #КонецЕсли
    #ИначеЕсли "#Параметр(6)" = "ВнешниеПользователи" #Тогда
    #Если НЕ (&ТекущийВнешнийПользователь = Значение(Справочник.ВнешниеПользователи.ПустаяСсылка)) #Тогда
    #Если НЕ &ДобавлятьРуководителямДоступПодчиненных #Тогда
    Истина В
    (
    Выбрать Первые 1 Истина
    ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ПользователиИГруппыПользователей
    ГДЕ
    ПользователиИГруппыПользователей.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.ВнешниеПользователи)
    И ПользователиИГруппыПользователей.ЗначениеДоступа = Т.#Параметр(7)
    И ПользователиИГруппыПользователей.ГруппаДоступа = &ТекущийВнешнийПользователь
    )
    #Иначе
    Истина В
    (
    Выбрать Первые 1 Истина
    ИЗ РегистрСведений.ПодчиненныеПользователи КАК ПодчиненныеПользователи
    ГДЕ
    ПодчиненныеПользователи.Пользователь = &ТекущийВнешнийПользователь
    И ПодчиненныеПользователи.ПодчиненныйПользователь = Т.#Параметр(7)
    И ПодчиненныеПользователи.ГруппаДоступа = ТаблицыГруппДоступа.ГруппаДоступа
    )
    #КонецЕсли
    ИЛИ
    #КонецЕсли
    // Если ВидПоТипуЗначенияОдинИзМногих, тогда проверка возможности доступа к значению через вид доступа.
    #ИначеЕсли &ОграничиватьДоступПоВиду#Параметр(6) = "ОдинИзМногихВидов,БезГрупп" ИЛИ
    &ОграничиватьДоступПоВиду#Параметр(6) = "ОдинИзМногихВидов,ОднаГруппа" ИЛИ
    &ОграничиватьДоступПоВиду#Параметр(6) = "ОдинИзМногихВидов,МножествоГрупп" #Тогда
    (
    #Если "Т.#Параметр(7)" = "Т.Ссылка" #Тогда
    Т.ВидДоступа#Параметр(6)
    #Иначе
    НЕ Истина В
    (
    Выбрать Истина
    ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ВидыЗначения
    ГДЕ
    ВидыЗначения.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.#Параметр(6))
    И ВидыЗначения.ЗначениеДоступа = Т.#Параметр(7)
    И ВидыЗначения.ТолькоВидДоступа = Истина
    )
    #КонецЕсли
    ) И
    #КонецЕсли
    Выбор
    Когда Истина В // Поиск значения в группе доступа (пользователей) непосредственно или через группы доступа значений.
    (
    #Если &ОграничиватьДоступПоВиду#Параметр(6) = "ЕдинственныйВид, БезГрупп" ИЛИ
    &ОграничиватьДоступПоВиду#Параметр(6) = "ОдинИзМногихВидов,БезГрупп" #Тогда
    Выбрать Истина
    ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
    ГДЕ
    Значения.ГруппаДоступа = ТаблицыГруппДоступа.ГруппаДоступа
    И Значения.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.#Параметр(6))
    И Значения.ТолькоВидДоступа = Ложь
    И Значения.ЗначениеДоступа = Т.#Параметр(7)
    #ИначеЕсли "Т.#Параметр(7)" = "Т.Ссылка" #Тогда
    #Если &ОграничиватьДоступПоВиду#Параметр(6) = "ЕдинственныйВид, ОднаГруппа" #Тогда
    Выбрать Истина
    ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
    ГДЕ
    Значения.ГруппаДоступа = ТаблицыГруппДоступа.ГруппаДоступа
    И Значения.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.#Параметр(6))
    И Значения.ТолькоВидДоступа = Ложь
    И Значения.ЗначениеДоступа = Т.ГруппаДоступа
    #ИначеЕсли &ОграничиватьДоступПоВиду#Параметр(6) = "ОдинИзМногихВидов,ОднаГруппа" #Тогда
    Выбрать Истина
    ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
    ГДЕ
    Значения.ГруппаДоступа = ТаблицыГруппДоступа.ГруппаДоступа
    И Значения.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.#Параметр(6))
    И Значения.ТолькоВидДоступа = Ложь
    И Значения.ЗначениеДоступа = Т.ГруппаДоступа#Параметр(6)
    #ИначеЕсли &ОграничиватьДоступПоВиду#Параметр(6) = "ЕдинственныйВид ,МножествоГрупп" #Тогда
    Выбрать Первые 1 Истина
    ИЗ #Параметр(1).ГруппыДоступа КАК ГруппыЗначений
    Внутреннее Соединение РегистрСведений.ЗначенияГруппДоступа КАК Значения
    ПО
    ГруппыЗначений.Ссылка = Т.#Параметр(7)
    И Значения.ГруппаДоступа = ТаблицыГруппДоступа.ГруппаДоступа
    И Значения.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.#Параметр(6))
    И Значения.ТолькоВидДоступа = Ложь
    И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаДоступа
    #Иначе // &ОграничиватьДоступПоВиду##Параметр(6) = "ОдинИзМногихВидов,МножествоГрупп"
    Выбрать Первые 1 Истина
    ИЗ #Параметр(1).ГруппыДоступа#Параметр(6) КАК ГруппыЗначений
    Внутреннее Соединение РегистрСведений.ЗначенияГруппДоступа КАК Значения
    ПО
    ГруппыЗначений.Ссылка = Т.#Параметр(7)
    И Значения.ГруппаДоступа = ТаблицыГруппДоступа.ГруппаДоступа
    И Значения.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.#Параметр(6))
    И Значения.ТолькоВидДоступа = Ложь
    И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаДоступа#Параметр(6)
    #КонецЕсли
    #Иначе // "Т.##Параметр(7)" <> "Т.Ссылка"
    Выбрать Первые 1 Истина
    ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначений
    Внутреннее Соединение РегистрСведений.ЗначенияГруппДоступа КАК Значения
    ПО
    ГруппыЗначений.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.#Параметр(6))
    И ГруппыЗначений.ЗначениеДоступа = Т.#Параметр(7)
    И Значения.ГруппаДоступа = ТаблицыГруппДоступа.ГруппаДоступа
    И Значения.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.#Параметр(6))
    И Значения.ТолькоВидДоступа = ГруппыЗначений.ТолькоВидДоступа
    И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаДоступа
    #КонецЕсли
    )
    Тогда Истина
    Иначе Ложь
    Конец
    =
    Выбор
    Когда Истина В // Проверка наличия ограничения по виду доступа для значений.
    (
    Выбрать Истина
    ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Виды
    ГДЕ
    Виды.ГруппаДоступа = ТаблицыГруппДоступа.ГруппаДоступа
    И Виды.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.#Параметр(6))
    И Виды.ТолькоВидДоступа = Истина
    )
    Тогда Истина
    Иначе Ложь
    Конец
    )
    #КонецЕсли
    #КонецЕсли
```

```1c
    //// Проверка значения поля группы параметров 3.
    #Если "#Параметр(8)" = " И "#Параметр(9)" = " #Тогда
    // Группа параметров не используется.
    #ИначеЕсли "#Параметр(8)" = "Условие" ИЛИ "#Параметр(8)" = " #Тогда
    // Когда имя вида доступа "Условие" (или "), тогда вместо имени поля задано условие.
    И ( #Параметр(9) )
    #ИначеЕсли "#Параметр(8)" = "ПравоЧтения" ИЛИ "#Параметр(8)" = "ПравоДобавления" ИЛИ "#Параметр(8)" = "ПравоИзменения" #Тогда
    И #Параметр(9) <> Неопределено
    И Истина В
    ( // Проверка права пользователя на таблицу Значения, установленного в поле.
    Выбрать Первые 1 Истина
    ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
    ГДЕ
    ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ТаблицыГруппДоступа.ГруппаДоступа
    И ТипЗначения(ТаблицыГруппДоступаПроверкаПрава.ТипТаблицы) = ТипЗначения(#Параметр(9))
    #Если "#Параметр(8)" = "ПравоДобавления" #Тогда
    И ТаблицыГруппДоступаПроверкаПрава.Добавление
    #ИначеЕсли "#Параметр(8)" = "ПравоИзменения" #Тогда
    И ТаблицыГруппДоступаПроверкаПрава.Изменение
    #КонецЕсли
    )
    #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(8) = " #Тогда
    И
    #Если &ОграничиватьДоступПоВиду#Параметр(8) = "ЧерезПраваПоЗначениямДоступа" #Тогда
    (
    НЕ Истина В // Проверка, что по виду доступа пользователь ограничивается.
    (
    Выбрать Истина
    ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Виды
    ГДЕ
    Виды.ГруппаДоступа = ТаблицыГруппДоступа.ГруппаДоступа
    И Виды.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.#Параметр(8))
    И Виды.ТолькоВидДоступа = Истина
    )
    ИЛИ
    Истина В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
    (
    Выбрать Первые 1 Истина
    ИЗ РегистрСведений.ПраваПоЗначениямДоступа КАК ПраваПоЗначениям
    Внутреннее Соединение РегистрСведений.ГруппыЗначенийДоступа КАК ИерархияЗначений
    ПО
    ИерархияЗначений.ИспользоватьПраваСсылки
    И ИерархияЗначений.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.#Параметр(8))
    И ИерархияЗначений.ЗначениеДоступа = Т.#Параметр(9)
    И ПраваПоЗначениям.Таблица = "#Параметр(1)"
    И ПраваПоЗначениям.ЗначениеДоступа = ИерархияЗначений.ГруппаДоступа
    И ПраваПоЗначениям.#Параметр(2)
    И ПраваПоЗначениям.РаспространяетсяВИерархии >= ИерархияЗначений.СвязьСРодителем
    Внутреннее Соединение РегистрСведений.ГруппыЗначенийДоступа КАК ПользователиИГруппыПользователей
    ПО
    #Если &ТекущийВнешнийПользователь = Значение(Справочник.ВнешниеПользователи.ПустаяСсылка) #Тогда
    ПользователиИГруппыПользователей.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка)
    И ПользователиИГруппыПользователей.ЗначениеДоступа = &ТекущийПользователь
    #Иначе
    ПользователиИГруппыПользователей.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка)
    И ПользователиИГруппыПользователей.ЗначениеДоступа = &ТекущийВнешнийПользователь
    #КонецЕсли
    И ПользователиИГруппыПользователей.ГруппаДоступа = ПраваПоЗначениям.Пользователь
    )
    И НЕ Ложь В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено
    (
    Выбрать Первые 1 Ложь
    ИЗ РегистрСведений.ПраваПоЗначениямДоступа КАК ПраваПоЗначениям
    Внутреннее Соединение РегистрСведений.ГруппыЗначенийДоступа КАК ИерархияЗначений
    ПО
    ИерархияЗначений.ИспользоватьПраваСсылки
    И ИерархияЗначений.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.#Параметр(8))
    И ИерархияЗначений.ЗначениеДоступа = Т.#Параметр(9)
    И ПраваПоЗначениям.Таблица = "#Параметр(1)"
    И ПраваПоЗначениям.ЗначениеДоступа = ИерархияЗначений.ГруппаДоступа
    И ПраваПоЗначениям.#Параметр(2)Запрещено
    И ПраваПоЗначениям.РаспространяетсяВИерархии >= ИерархияЗначений.СвязьСРодителем
    Внутреннее Соединение РегистрСведений.ГруппыЗначенийДоступа КАК ПользователиИГруппыПользователей
    ПО
    #Если &ТекущийВнешнийПользователь = Значение(Справочник.ВнешниеПользователи.ПустаяСсылка) #Тогда
    ПользователиИГруппыПользователей.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка)
    И ПользователиИГруппыПользователей.ЗначениеДоступа = &ТекущийПользователь
    #Иначе
    ПользователиИГруппыПользователей.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка)
    И ПользователиИГруппыПользователей.ЗначениеДоступа = &ТекущийВнешнийПользователь
    #КонецЕсли
    И ПользователиИГруппыПользователей.ГруппаДоступа = ПраваПоЗначениям.Пользователь
    )
    )
    #Иначе
    (
    #Если "#Параметр(8)" = "Пользователи" #Тогда
    #Если &ТекущийВнешнийПользователь = Значение(Справочник.ВнешниеПользователи.ПустаяСсылка) #Тогда
    #Если НЕ &ДобавлятьРуководителямДоступПодчиненных #Тогда
    Истина В
    (
    Выбрать Первые 1 Истина
    ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ПользователиИГруппыПользователей
    ГДЕ
    ПользователиИГруппыПользователей.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.Пользователи)
    И ПользователиИГруппыПользователей.ЗначениеДоступа = Т.#Параметр(9)
    И ПользователиИГруппыПользователей.ГруппаДоступа = &ТекущийПользователь
    )
    #Иначе
    Истина В
    (
    Выбрать Первые 1 Истина
    ИЗ РегистрСведений.ПодчиненныеПользователи КАК ПодчиненныеПользователи
    ГДЕ
    ПодчиненныеПользователи.Пользователь = &ТекущийПользователь
    И ПодчиненныеПользователи.ПодчиненныйПользователь = Т.#Параметр(9)
    И ПодчиненныеПользователи.ГруппаДоступа = ТаблицыГруппДоступа.ГруппаДоступа
    )
    #КонецЕсли
    ИЛИ
    #КонецЕсли
    #ИначеЕсли "#Параметр(8)" = "ВнешниеПользователи" #Тогда
    #Если НЕ (&ТекущийВнешнийПользователь = Значение(Справочник.ВнешниеПользователи.ПустаяСсылка)) #Тогда
    #Если НЕ &ДобавлятьРуководителямДоступПодчиненных #Тогда
    Истина В
    (
    Выбрать Первые 1 Истина
    ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ПользователиИГруппыПользователей
    ГДЕ
    ПользователиИГруппыПользователей.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.ВнешниеПользователи)
    И ПользователиИГруппыПользователей.ЗначениеДоступа = Т.#Параметр(9)
    И ПользователиИГруппыПользователей.ГруппаДоступа = &ТекущийВнешнийПользователь
    )
    #Иначе
    Истина В
    (
    Выбрать Первые 1 Истина
    ИЗ РегистрСведений.ПодчиненныеПользователи КАК ПодчиненныеПользователи
    ГДЕ
    ПодчиненныеПользователи.Пользователь = &ТекущийВнешнийПользователь
    И ПодчиненныеПользователи.ПодчиненныйПользователь = Т.#Параметр(9)
    И ПодчиненныеПользователи.ГруппаДоступа = ТаблицыГруппДоступа.ГруппаДоступа
    )
    #КонецЕсли
    ИЛИ
    #КонецЕсли
    // Если ВидПоТипуЗначенияОдинИзМногих, тогда проверка возможности доступа к значению через вид доступа.
    #ИначеЕсли &ОграничиватьДоступПоВиду#Параметр(8) = "ОдинИзМногихВидов,БезГрупп" ИЛИ
    &ОграничиватьДоступПоВиду#Параметр(8) = "ОдинИзМногихВидов,ОднаГруппа" ИЛИ
    &ОграничиватьДоступПоВиду#Параметр(8) = "ОдинИзМногихВидов,МножествоГрупп" #Тогда
    (
    #Если "Т.#Параметр(9)" = "Т.Ссылка" #Тогда
    Т.ВидДоступа#Параметр(8)
    #Иначе
    НЕ Истина В
    (
    Выбрать Истина
    ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ВидыЗначения
    ГДЕ
    ВидыЗначения.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.#Параметр(8))
    И ВидыЗначения.ЗначениеДоступа = Т.#Параметр(9)
    И ВидыЗначения.ТолькоВидДоступа = Истина
    )
    #КонецЕсли
    ) И
    #КонецЕсли
    Выбор
    Когда Истина В // Поиск значения в группе доступа (пользователей) непосредственно или через группы доступа значений.
    (
    #Если &ОграничиватьДоступПоВиду#Параметр(8) = "ЕдинственныйВид, БезГрупп" ИЛИ
    &ОграничиватьДоступПоВиду#Параметр(8) = "ОдинИзМногихВидов,БезГрупп" #Тогда
    Выбрать Истина
    ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
    ГДЕ
    Значения.ГруппаДоступа = ТаблицыГруппДоступа.ГруппаДоступа
    И Значения.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.#Параметр(8))
    И Значения.ТолькоВидДоступа = Ложь
    И Значения.ЗначениеДоступа = Т.#Параметр(9)
    #ИначеЕсли "Т.#Параметр(9)" = "Т.Ссылка" #Тогда
    #Если &ОграничиватьДоступПоВиду#Параметр(8) = "ЕдинственныйВид, ОднаГруппа" #Тогда
    Выбрать Истина
    ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
    ГДЕ
    Значения.ГруппаДоступа = ТаблицыГруппДоступа.ГруппаДоступа
    И Значения.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.#Параметр(8))
    И Значения.ТолькоВидДоступа = Ложь
    И Значения.ЗначениеДоступа = Т.ГруппаДоступа
    #ИначеЕсли &ОграничиватьДоступПоВиду#Параметр(8) = "ОдинИзМногихВидов,ОднаГруппа" #Тогда
    Выбрать Истина
    ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
    ГДЕ
    Значения.ГруппаДоступа = ТаблицыГруппДоступа.ГруппаДоступа
    И Значения.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.#Параметр(8))
    И Значения.ТолькоВидДоступа = Ложь
    И Значения.ЗначениеДоступа = Т.ГруппаДоступа#Параметр(8)
    #ИначеЕсли &ОграничиватьДоступПоВиду#Параметр(8) = "ЕдинственныйВид ,МножествоГрупп" #Тогда
    Выбрать Первые 1 Истина
    ИЗ #Параметр(1).ГруппыДоступа КАК ГруппыЗначений
    Внутреннее Соединение РегистрСведений.ЗначенияГруппДоступа КАК Значения
    ПО
    ГруппыЗначений.Ссылка = Т.#Параметр(9)
    И Значения.ГруппаДоступа = ТаблицыГруппДоступа.ГруппаДоступа
    И Значения.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.#Параметр(8))
    И Значения.ТолькоВидДоступа = Ложь
    И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаДоступа
    #Иначе // &ОграничиватьДоступПоВиду##Параметр(8) = "ОдинИзМногихВидов,МножествоГрупп"
    Выбрать Первые 1 Истина
    ИЗ #Параметр(1).ГруппыДоступа#Параметр(8) КАК ГруппыЗначений
    Внутреннее Соединение РегистрСведений.ЗначенияГруппДоступа КАК Значения
    ПО
    ГруппыЗначений.Ссылка = Т.#Параметр(9)
    И Значения.ГруппаДоступа = ТаблицыГруппДоступа.ГруппаДоступа
    И Значения.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.#Параметр(8))
    И Значения.ТолькоВидДоступа = Ложь
    И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаДоступа#Параметр(8)
    #КонецЕсли
    #Иначе // "Т.##Параметр(9)" <> "Т.Ссылка"
    Выбрать Первые 1 Истина
    ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначений
    Внутреннее Соединение РегистрСведений.ЗначенияГруппДоступа КАК Значения
    ПО
    ГруппыЗначений.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.#Параметр(8))
    И ГруппыЗначений.ЗначениеДоступа = Т.#Параметр(9)
    И Значения.ГруппаДоступа = ТаблицыГруппДоступа.ГруппаДоступа
    И Значения.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.#Параметр(8))
    И Значения.ТолькоВидДоступа = ГруппыЗначений.ТолькоВидДоступа
    И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаДоступа
    #КонецЕсли
    )
    Тогда Истина
    Иначе Ложь
    Конец
    =
    Выбор
    Когда Истина В // Проверка наличия ограничения по виду доступа для значений.
    (
    Выбрать Истина
    ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Виды
    ГДЕ
    Виды.ГруппаДоступа = ТаблицыГруппДоступа.ГруппаДоступа
    И Виды.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.#Параметр(8))
    И Виды.ТолькоВидДоступа = Истина
    )
    Тогда Истина
    Иначе Ложь
    Конец
    )
    #КонецЕсли
    #КонецЕсли
```

```1c
    //// Проверка значения поля группы параметров 4.
    #Если "#Параметр(10)" = " И "#Параметр(11)" = " #Тогда
    // Группа параметров не используется.
    #ИначеЕсли "#Параметр(10)" = "Условие" ИЛИ "#Параметр(10)" = " #Тогда
    // Когда имя вида доступа "Условие" (или "), тогда вместо имени поля задано условие.
    И ( #Параметр(11) )
    #ИначеЕсли "#Параметр(10)" = "ПравоЧтения" ИЛИ "#Параметр(10)" = "ПравоДобавления" ИЛИ "#Параметр(10)" = "ПравоИзменения" #Тогда
    И #Параметр(11) <> Неопределено
    И Истина В
    ( // Проверка права пользователя на таблицу Значения, установленного в поле.
    Выбрать Первые 1 Истина
    ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
    ГДЕ
    ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ТаблицыГруппДоступа.ГруппаДоступа
    И ТипЗначения(ТаблицыГруппДоступаПроверкаПрава.ТипТаблицы) = ТипЗначения(#Параметр(11))
    #Если "#Параметр(10)" = "ПравоДобавления" #Тогда
    И ТаблицыГруппДоступаПроверкаПрава.Добавление
    #ИначеЕсли "#Параметр(10)" = "ПравоИзменения" #Тогда
    И ТаблицыГруппДоступаПроверкаПрава.Изменение
    #КонецЕсли
    )
    #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(10) = " #Тогда
    И
    #Если &ОграничиватьДоступПоВиду#Параметр(10) = "ЧерезПраваПоЗначениямДоступа" #Тогда
    (
    НЕ Истина В // Проверка, что по виду доступа пользователь ограничивается.
    (
    Выбрать Истина
    ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Виды
    ГДЕ
    Виды.ГруппаДоступа = ТаблицыГруппДоступа.ГруппаДоступа
    И Виды.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.#Параметр(10))
    И Виды.ТолькоВидДоступа = Истина
    )
    ИЛИ
    Истина В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
    (
    Выбрать Первые 1 Истина
    ИЗ РегистрСведений.ПраваПоЗначениямДоступа КАК ПраваПоЗначениям
    Внутреннее Соединение РегистрСведений.ГруппыЗначенийДоступа КАК ИерархияЗначений
    ПО
    ИерархияЗначений.ИспользоватьПраваСсылки
    И ИерархияЗначений.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.#Параметр(10))
    И ИерархияЗначений.ЗначениеДоступа = Т.#Параметр(11)
    И ПраваПоЗначениям.Таблица = "#Параметр(1)"
    И ПраваПоЗначениям.ЗначениеДоступа = ИерархияЗначений.ГруппаДоступа
    И ПраваПоЗначениям.#Параметр(2)
    И ПраваПоЗначениям.РаспространяетсяВИерархии >= ИерархияЗначений.СвязьСРодителем
    Внутреннее Соединение РегистрСведений.ГруппыЗначенийДоступа КАК ПользователиИГруппыПользователей
    ПО
    #Если &ТекущийВнешнийПользователь = Значение(Справочник.ВнешниеПользователи.ПустаяСсылка) #Тогда
    ПользователиИГруппыПользователей.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка)
    И ПользователиИГруппыПользователей.ЗначениеДоступа = &ТекущийПользователь
    #Иначе
    ПользователиИГруппыПользователей.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка)
    И ПользователиИГруппыПользователей.ЗначениеДоступа = &ТекущийВнешнийПользователь
    #КонецЕсли
    И ПользователиИГруппыПользователей.ГруппаДоступа = ПраваПоЗначениям.Пользователь
    )
    И НЕ Ложь В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено
    (
    Выбрать Первые 1 Ложь
    ИЗ РегистрСведений.ПраваПоЗначениямДоступа КАК ПраваПоЗначениям
    Внутреннее Соединение РегистрСведений.ГруппыЗначенийДоступа КАК ИерархияЗначений
    ПО
    ИерархияЗначений.ИспользоватьПраваСсылки
    И ИерархияЗначений.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.#Параметр(10))
    И ИерархияЗначений.ЗначениеДоступа = Т.#Параметр(11)
    И ПраваПоЗначениям.Таблица = "#Параметр(1)"
    И ПраваПоЗначениям.ЗначениеДоступа = ИерархияЗначений.ГруппаДоступа
    И ПраваПоЗначениям.#Параметр(2)Запрещено
    И ПраваПоЗначениям.РаспространяетсяВИерархии >= ИерархияЗначений.СвязьСРодителем
    Внутреннее Соединение РегистрСведений.ГруппыЗначенийДоступа КАК ПользователиИГруппыПользователей
    ПО
    #Если &ТекущийВнешнийПользователь = Значение(Справочник.ВнешниеПользователи.ПустаяСсылка) #Тогда
    ПользователиИГруппыПользователей.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка)
    И ПользователиИГруппыПользователей.ЗначениеДоступа = &ТекущийПользователь
    #Иначе
    ПользователиИГруппыПользователей.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка)
    И ПользователиИГруппыПользователей.ЗначениеДоступа = &ТекущийВнешнийПользователь
    #КонецЕсли
    И ПользователиИГруппыПользователей.ГруппаДоступа = ПраваПоЗначениям.Пользователь
    )
    )
    #Иначе
    (
    #Если "#Параметр(10)" = "Пользователи" #Тогда
    #Если &ТекущийВнешнийПользователь = Значение(Справочник.ВнешниеПользователи.ПустаяСсылка) #Тогда
    #Если НЕ &ДобавлятьРуководителямДоступПодчиненных #Тогда
    Истина В
    (
    Выбрать Первые 1 Истина
    ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ПользователиИГруппыПользователей
    ГДЕ
    ПользователиИГруппыПользователей.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.Пользователи)
    И ПользователиИГруппыПользователей.ЗначениеДоступа = Т.#Параметр(11)
    И ПользователиИГруппыПользователей.ГруппаДоступа = &ТекущийПользователь
    )
    #Иначе
    Истина В
    (
    Выбрать Первые 1 Истина
    ИЗ РегистрСведений.ПодчиненныеПользователи КАК ПодчиненныеПользователи
    ГДЕ
    ПодчиненныеПользователи.Пользователь = &ТекущийПользователь
    И ПодчиненныеПользователи.ПодчиненныйПользователь = Т.#Параметр(11)
    И ПодчиненныеПользователи.ГруппаДоступа = ТаблицыГруппДоступа.ГруппаДоступа
    )
    #КонецЕсли
    ИЛИ
    #КонецЕсли
    #ИначеЕсли "#Параметр(10)" = "ВнешниеПользователи" #Тогда
    #Если НЕ (&ТекущийВнешнийПользователь = Значение(Справочник.ВнешниеПользователи.ПустаяСсылка)) #Тогда
    #Если НЕ &ДобавлятьРуководителямДоступПодчиненных #Тогда
    Истина В
    (
    Выбрать Первые 1 Истина
    ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ПользователиИГруппыПользователей
    ГДЕ
    ПользователиИГруппыПользователей.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.ВнешниеПользователи)
    И ПользователиИГруппыПользователей.ЗначениеДоступа = Т.#Параметр(11)
    И ПользователиИГруппыПользователей.ГруппаДоступа = &ТекущийВнешнийПользователь
    )
    #Иначе
    Истина В
    (
    Выбрать Первые 1 Истина
    ИЗ РегистрСведений.ПодчиненныеПользователи КАК ПодчиненныеПользователи
    ГДЕ
    ПодчиненныеПользователи.Пользователь = &ТекущийВнешнийПользователь
    И ПодчиненныеПользователи.ПодчиненныйПользователь = Т.#Параметр(11)
    И ПодчиненныеПользователи.ГруппаДоступа = ТаблицыГруппДоступа.ГруппаДоступа
    )
    #КонецЕсли
    ИЛИ
    #КонецЕсли
    // Если ВидПоТипуЗначенияОдинИзМногих, тогда проверка возможности доступа к значению через вид доступа.
    #ИначеЕсли &ОграничиватьДоступПоВиду#Параметр(10) = "ОдинИзМногихВидов,БезГрупп" ИЛИ
    &ОграничиватьДоступПоВиду#Параметр(10) = "ОдинИзМногихВидов,ОднаГруппа" ИЛИ
    &ОграничиватьДоступПоВиду#Параметр(10) = "ОдинИзМногихВидов,МножествоГрупп" #Тогда
    (
    #Если "Т.#Параметр(11)" = "Т.Ссылка" #Тогда
    Т.ВидДоступа#Параметр(10)
    #Иначе
    НЕ Истина В
    (
    Выбрать Истина
    ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ВидыЗначения
    ГДЕ
    ВидыЗначения.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.#Параметр(10))
    И ВидыЗначения.ЗначениеДоступа = Т.#Параметр(11)
    И ВидыЗначения.ТолькоВидДоступа = Истина
    )
    #КонецЕсли
    ) И
    #КонецЕсли
    Выбор
    Когда Истина В // Поиск значения в группе доступа (пользователей) непосредственно или через группы доступа значений.
    (
    #Если &ОграничиватьДоступПоВиду#Параметр(10) = "ЕдинственныйВид, БезГрупп" ИЛИ
    &ОграничиватьДоступПоВиду#Параметр(10) = "ОдинИзМногихВидов,БезГрупп" #Тогда
    Выбрать Истина
    ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
    ГДЕ
    Значения.ГруппаДоступа = ТаблицыГруппДоступа.ГруппаДоступа
    И Значения.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.#Параметр(10))
    И Значения.ТолькоВидДоступа = Ложь
    И Значения.ЗначениеДоступа = Т.#Параметр(11)
    #ИначеЕсли "Т.#Параметр(11)" = "Т.Ссылка" #Тогда
    #Если &ОграничиватьДоступПоВиду#Параметр(10) = "ЕдинственныйВид, ОднаГруппа" #Тогда
    Выбрать Истина
    ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
    ГДЕ
    Значения.ГруппаДоступа = ТаблицыГруппДоступа.ГруппаДоступа
    И Значения.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.#Параметр(10))
    И Значения.ТолькоВидДоступа = Ложь
    И Значения.ЗначениеДоступа = Т.ГруппаДоступа
    #ИначеЕсли &ОграничиватьДоступПоВиду#Параметр(10) = "ОдинИзМногихВидов,ОднаГруппа" #Тогда
    Выбрать Истина
    ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
    ГДЕ
    Значения.ГруппаДоступа = ТаблицыГруппДоступа.ГруппаДоступа
    И Значения.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.#Параметр(10))
    И Значения.ТолькоВидДоступа = Ложь
    И Значения.ЗначениеДоступа = Т.ГруппаДоступа#Параметр(10)
    #ИначеЕсли &ОграничиватьДоступПоВиду#Параметр(10) = "ЕдинственныйВид ,МножествоГрупп" #Тогда
    Выбрать Первые 1 Истина
    ИЗ #Параметр(1).ГруппыДоступа КАК ГруппыЗначений
    Внутреннее Соединение РегистрСведений.ЗначенияГруппДоступа КАК Значения
    ПО
    ГруппыЗначений.Ссылка = Т.#Параметр(11)
    И Значения.ГруппаДоступа = ТаблицыГруппДоступа.ГруппаДоступа
    И Значения.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.#Параметр(10))
    И Значения.ТолькоВидДоступа = Ложь
    И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаДоступа
    #Иначе // &ОграничиватьДоступПоВиду##Параметр(10) = "ОдинИзМногихВидов,МножествоГрупп"
    Выбрать Первые 1 Истина
    ИЗ #Параметр(1).ГруппыДоступа#Параметр(10) КАК ГруппыЗначений
    Внутреннее Соединение РегистрСведений.ЗначенияГруппДоступа КАК Значения
    ПО
    ГруппыЗначений.Ссылка = Т.#Параметр(11)
    И Значения.ГруппаДоступа = ТаблицыГруппДоступа.ГруппаДоступа
    И Значения.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.#Параметр(10))
    И Значения.ТолькоВидДоступа = Ложь
    И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаДоступа#Параметр(10)
    #КонецЕсли
    #Иначе // "Т.##Параметр(11)" <> "Т.Ссылка"
    Выбрать Первые 1 Истина
    ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначений
    Внутреннее Соединение РегистрСведений.ЗначенияГруппДоступа КАК Значения
    ПО
    ГруппыЗначений.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.#Параметр(10))
    И ГруппыЗначений.ЗначениеДоступа = Т.#Параметр(11)
    И Значения.ГруппаДоступа = ТаблицыГруппДоступа.ГруппаДоступа
    И Значения.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.#Параметр(10))
    И Значения.ТолькоВидДоступа = ГруппыЗначений.ТолькоВидДоступа
    И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаДоступа
    #КонецЕсли
    )
    Тогда Истина
    Иначе Ложь
    Конец
    =
    Выбор
    Когда Истина В // Проверка наличия ограничения по виду доступа для значений.
    (
    Выбрать Истина
    ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Виды
    ГДЕ
    Виды.ГруппаДоступа = ТаблицыГруппДоступа.ГруппаДоступа
    И Виды.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.#Параметр(10))
    И Виды.ТолькоВидДоступа = Истина
    )
    Тогда Истина
    Иначе Ложь
    Конец
    )
    #КонецЕсли
    #КонецЕсли
```

```1c
    //// Проверка значения поля группы параметров 5.
    #Если "#Параметр(12)" = " И "#Параметр(13)" = " #Тогда
    // Группа параметров не используется.
    #ИначеЕсли "#Параметр(12)" = "Условие" ИЛИ "#Параметр(12)" = " #Тогда
    // Когда имя вида доступа "Условие" (или "), тогда вместо имени поля задано условие.
    И ( #Параметр(13) )
    #ИначеЕсли "#Параметр(12)" = "ПравоЧтения" ИЛИ "#Параметр(12)" = "ПравоДобавления" ИЛИ "#Параметр(12)" = "ПравоИзменения" #Тогда
    И #Параметр(13) <> Неопределено
    И Истина В
    ( // Проверка права пользователя на таблицу Значения, установленного в поле.
    Выбрать Первые 1 Истина
    ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
    ГДЕ
    ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ТаблицыГруппДоступа.ГруппаДоступа
    И ТипЗначения(ТаблицыГруппДоступаПроверкаПрава.ТипТаблицы) = ТипЗначения(#Параметр(13))
    #Если "#Параметр(12)" = "ПравоДобавления" #Тогда
    И ТаблицыГруппДоступаПроверкаПрава.Добавление
    #ИначеЕсли "#Параметр(12)" = "ПравоИзменения" #Тогда
    И ТаблицыГруппДоступаПроверкаПрава.Изменение
    #КонецЕсли
    )
    #ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(12) = " #Тогда
    И
    #Если &ОграничиватьДоступПоВиду#Параметр(12) = "ЧерезПраваПоЗначениямДоступа" #Тогда
    (
    НЕ Истина В // Проверка, что по виду доступа пользователь ограничивается.
    (
    Выбрать Истина
    ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Виды
    ГДЕ
    Виды.ГруппаДоступа = ТаблицыГруппДоступа.ГруппаДоступа
    И Виды.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.#Параметр(12))
    И Виды.ТолькоВидДоступа = Истина
    )
    ИЛИ
    Истина В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
    (
    Выбрать Первые 1 Истина
    ИЗ РегистрСведений.ПраваПоЗначениямДоступа КАК ПраваПоЗначениям
    Внутреннее Соединение РегистрСведений.ГруппыЗначенийДоступа КАК ИерархияЗначений
    ПО
    ИерархияЗначений.ИспользоватьПраваСсылки
    И ИерархияЗначений.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.#Параметр(12))
    И ИерархияЗначений.ЗначениеДоступа = Т.#Параметр(13)
    И ПраваПоЗначениям.Таблица = "#Параметр(1)"
    И ПраваПоЗначениям.ЗначениеДоступа = ИерархияЗначений.ГруппаДоступа
    И ПраваПоЗначениям.#Параметр(2)
    И ПраваПоЗначениям.РаспространяетсяВИерархии >= ИерархияЗначений.СвязьСРодителем
    Внутреннее Соединение РегистрСведений.ГруппыЗначенийДоступа КАК ПользователиИГруппыПользователей
    ПО
    #Если &ТекущийВнешнийПользователь = Значение(Справочник.ВнешниеПользователи.ПустаяСсылка) #Тогда
    ПользователиИГруппыПользователей.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка)
    И ПользователиИГруппыПользователей.ЗначениеДоступа = &ТекущийПользователь
    #Иначе
    ПользователиИГруппыПользователей.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка)
    И ПользователиИГруппыПользователей.ЗначениеДоступа = &ТекущийВнешнийПользователь
    #КонецЕсли
    И ПользователиИГруппыПользователей.ГруппаДоступа = ПраваПоЗначениям.Пользователь
    )
    И НЕ Ложь В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено
    (
    Выбрать Первые 1 Ложь
    ИЗ РегистрСведений.ПраваПоЗначениямДоступа КАК ПраваПоЗначениям
    Внутреннее Соединение РегистрСведений.ГруппыЗначенийДоступа КАК ИерархияЗначений
    ПО
    ИерархияЗначений.ИспользоватьПраваСсылки
    И ИерархияЗначений.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.#Параметр(12))
    И ИерархияЗначений.ЗначениеДоступа = Т.#Параметр(13)
    И ПраваПоЗначениям.Таблица = "#Параметр(1)"
    И ПраваПоЗначениям.ЗначениеДоступа = ИерархияЗначений.ГруппаДоступа
    И ПраваПоЗначениям.#Параметр(2)Запрещено
    И ПраваПоЗначениям.РаспространяетсяВИерархии >= ИерархияЗначений.СвязьСРодителем
    Внутреннее Соединение РегистрСведений.ГруппыЗначенийДоступа КАК ПользователиИГруппыПользователей
    ПО
    #Если &ТекущийВнешнийПользователь = Значение(Справочник.ВнешниеПользователи.ПустаяСсылка) #Тогда
    ПользователиИГруппыПользователей.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка)
    И ПользователиИГруппыПользователей.ЗначениеДоступа = &ТекущийПользователь
    #Иначе
    ПользователиИГруппыПользователей.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.ПустаяСсылка)
    И ПользователиИГруппыПользователей.ЗначениеДоступа = &ТекущийВнешнийПользователь
    #КонецЕсли
    И ПользователиИГруппыПользователей.ГруппаДоступа = ПраваПоЗначениям.Пользователь
    )
    )
    #Иначе
    (
    #Если "#Параметр(12)" = "Пользователи" #Тогда
    #Если &ТекущийВнешнийПользователь = Значение(Справочник.ВнешниеПользователи.ПустаяСсылка) #Тогда
    #Если НЕ &ДобавлятьРуководителямДоступПодчиненных #Тогда
    Истина В
    (
    Выбрать Первые 1 Истина
    ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ПользователиИГруппыПользователей
    ГДЕ
    ПользователиИГруппыПользователей.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.Пользователи)
    И ПользователиИГруппыПользователей.ЗначениеДоступа = Т.#Параметр(13)
    И ПользователиИГруппыПользователей.ГруппаДоступа = &ТекущийПользователь
    )
    #Иначе
    Истина В
    (
    Выбрать Первые 1 Истина
    ИЗ РегистрСведений.ПодчиненныеПользователи КАК ПодчиненныеПользователи
    ГДЕ
    ПодчиненныеПользователи.Пользователь = &ТекущийПользователь
    И ПодчиненныеПользователи.ПодчиненныйПользователь = Т.#Параметр(13)
    И ПодчиненныеПользователи.ГруппаДоступа = ТаблицыГруппДоступа.ГруппаДоступа
    )
    #КонецЕсли
    ИЛИ
    #КонецЕсли
    #ИначеЕсли "#Параметр(12)" = "ВнешниеПользователи" #Тогда
    #Если НЕ (&ТекущийВнешнийПользователь = Значение(Справочник.ВнешниеПользователи.ПустаяСсылка)) #Тогда
    #Если НЕ &ДобавлятьРуководителямДоступПодчиненных #Тогда
    Истина В
    (
    Выбрать Первые 1 Истина
    ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ПользователиИГруппыПользователей
    ГДЕ
    ПользователиИГруппыПользователей.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.ВнешниеПользователи)
    И ПользователиИГруппыПользователей.ЗначениеДоступа = Т.#Параметр(13)
    И ПользователиИГруппыПользователей.ГруппаДоступа = &ТекущийВнешнийПользователь
    )
    #Иначе
    Истина В
    (
    Выбрать Первые 1 Истина
    ИЗ РегистрСведений.ПодчиненныеПользователи КАК ПодчиненныеПользователи
    ГДЕ
    ПодчиненныеПользователи.Пользователь = &ТекущийВнешнийПользователь
    И ПодчиненныеПользователи.ПодчиненныйПользователь = Т.#Параметр(13)
    И ПодчиненныеПользователи.ГруппаДоступа = ТаблицыГруппДоступа.ГруппаДоступа
    )
    #КонецЕсли
    ИЛИ
    #КонецЕсли
    // Если ВидПоТипуЗначенияОдинИзМногих, тогда проверка возможности доступа к значению через вид доступа.
    #ИначеЕсли &ОграничиватьДоступПоВиду#Параметр(12) = "ОдинИзМногихВидов,БезГрупп" ИЛИ
    &ОграничиватьДоступПоВиду#Параметр(12) = "ОдинИзМногихВидов,ОднаГруппа" ИЛИ
    &ОграничиватьДоступПоВиду#Параметр(12) = "ОдинИзМногихВидов,МножествоГрупп" #Тогда
    (
    #Если "Т.#Параметр(13)" = "Т.Ссылка" #Тогда
    Т.ВидДоступа#Параметр(12)
    #Иначе
    НЕ Истина В
    (
    Выбрать Истина
    ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ВидыЗначения
    ГДЕ
    ВидыЗначения.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.#Параметр(12))
    И ВидыЗначения.ЗначениеДоступа = Т.#Параметр(13)
    И ВидыЗначения.ТолькоВидДоступа = Истина
    )
    #КонецЕсли
    ) И
    #КонецЕсли
    Выбор
    Когда Истина В // Поиск значения в группе доступа (пользователей) непосредственно или через группы доступа значений.
    (
    #Если &ОграничиватьДоступПоВиду#Параметр(12) = "ЕдинственныйВид, БезГрупп" ИЛИ
    &ОграничиватьДоступПоВиду#Параметр(12) = "ОдинИзМногихВидов,БезГрупп" #Тогда
    Выбрать Истина
    ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
    ГДЕ
    Значения.ГруппаДоступа = ТаблицыГруппДоступа.ГруппаДоступа
    И Значения.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.#Параметр(12))
    И Значения.ТолькоВидДоступа = Ложь
    И Значения.ЗначениеДоступа = Т.#Параметр(13)
    #ИначеЕсли "Т.#Параметр(13)" = "Т.Ссылка" #Тогда
    #Если &ОграничиватьДоступПоВиду#Параметр(12) = "ЕдинственныйВид, ОднаГруппа" #Тогда
    Выбрать Истина
    ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
    ГДЕ
    Значения.ГруппаДоступа = ТаблицыГруппДоступа.ГруппаДоступа
    И Значения.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.#Параметр(12))
    И Значения.ТолькоВидДоступа = Ложь
    И Значения.ЗначениеДоступа = Т.ГруппаДоступа
    #ИначеЕсли &ОграничиватьДоступПоВиду#Параметр(12) = "ОдинИзМногихВидов,ОднаГруппа" #Тогда
    Выбрать Истина
    ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
    ГДЕ
    Значения.ГруппаДоступа = ТаблицыГруппДоступа.ГруппаДоступа
    И Значения.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.#Параметр(12))
    И Значения.ТолькоВидДоступа = Ложь
    И Значения.ЗначениеДоступа = Т.ГруппаДоступа#Параметр(12)
    #ИначеЕсли &ОграничиватьДоступПоВиду#Параметр(12) = "ЕдинственныйВид ,МножествоГрупп" #Тогда
    Выбрать Первые 1 Истина
    ИЗ #Параметр(1).ГруппыДоступа КАК ГруппыЗначений
    Внутреннее Соединение РегистрСведений.ЗначенияГруппДоступа КАК Значения
    ПО
    ГруппыЗначений.Ссылка = Т.#Параметр(13)
    И Значения.ГруппаДоступа = ТаблицыГруппДоступа.ГруппаДоступа
    И Значения.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.#Параметр(12))
    И Значения.ТолькоВидДоступа = Ложь
    И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаДоступа
    #Иначе // &ОграничиватьДоступПоВиду##Параметр(12) = "ОдинИзМногихВидов,МножествоГрупп"
    Выбрать Первые 1 Истина
    ИЗ #Параметр(1).ГруппыДоступа#Параметр(12) КАК ГруппыЗначений
    Внутреннее Соединение РегистрСведений.ЗначенияГруппДоступа КАК Значения
    ПО
    ГруппыЗначений.Ссылка = Т.#Параметр(13)
    И Значения.ГруппаДоступа = ТаблицыГруппДоступа.ГруппаДоступа
    И Значения.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.#Параметр(12))
    И Значения.ТолькоВидДоступа = Ложь
    И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаДоступа#Параметр(12)
    #КонецЕсли
    #Иначе // "Т.##Параметр(13)" <> "Т.Ссылка"
    Выбрать Первые 1 Истина
    ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначений
    Внутреннее Соединение РегистрСведений.ЗначенияГруппДоступа КАК Значения
    ПО
    ГруппыЗначений.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.#Параметр(12))
    И ГруппыЗначений.ЗначениеДоступа = Т.#Параметр(13)
    И Значения.ГруппаДоступа = ТаблицыГруппДоступа.ГруппаДоступа
    И Значения.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.#Параметр(12))
    И Значения.ТолькоВидДоступа = ГруппыЗначений.ТолькоВидДоступа
    И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаДоступа
    #КонецЕсли
    )
    Тогда Истина
    Иначе Ложь
    Конец
    =
    Выбор
    Когда Истина В // Проверка наличия ограничения по виду доступа для значений.
    (
    Выбрать Истина
    ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Виды
    ГДЕ
    Виды.ГруппаДоступа = ТаблицыГруппДоступа.ГруппаДоступа
    И Виды.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.#Параметр(12))
    И Виды.ТолькоВидДоступа = Истина
    )
    Тогда Истина
    Иначе Ложь
    Конец
    )
    #КонецЕсли
    #КонецЕсли
```

[1C-CODE]/// Проверка значения поля группы параметров 6.
#Если "#Параметр(14)" = "" И "#Параметр(15)" = "" #Тогда
 // Группа параметров не используется.
#ИначеЕсли "#Параметр(14)" = "Условие" ИЛИ "#Параметр(14)" = "" #Тогда
 // Когда имя вида доступа "Условие" (или ""), тогда вместо имени поля задано условие.
 И ( #Параметр(15) )
#ИначеЕсли "#Параметр(14)" = "ПравоЧтения" ИЛИ "#Параметр(14)" = "ПравоДобавления" ИЛИ "#Параметр(14)" = "ПравоИзменения" #Тогда
 И #Параметр(15) <> Неопределено
 И Истина В
  ( // Проверка права пользователя на таблицу Значения, установленного в поле.
  Выбрать Первые 1 Истина
  ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
  ГДЕ
     ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ТаблицыГруппДоступа.ГруппаДоступа
   И ТипЗначения(ТаблицыГруппДоступаПроверкаПрава.ТипТаблицы) = ТипЗначения(#Параметр(15))
  #Если "#Параметр(14)" = "ПравоДобавления" #Тогда
   И ТаблицыГруппДоступаПроверкаПрава.Добавление
  #ИначеЕсли "#Параметр(14)" = "ПравоИзменения" #Тогда
   И ТаблицыГруппДоступаПроверкаПрава.Изменение
  #КонецЕсли
  )
#ИначеЕсли НЕ &ОграничиватьДоступПоВиду#Параметр(14) = "" #Тогда
 И
 #Если &ОграничиватьДоступПоВиду#Параметр(14) = "ЧерезПраваПоЗначениямДоступа" #Тогда
  (
 НЕ Истина В // Проверка, что по виду доступа пользователь ограничивается.
  (
  Выбрать Истина
  ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Виды
  ГДЕ
     Виды.ГруппаДоступа = ТаблицыГруппДоступа.ГруппаДоступа
   И Виды.ВидДоступа = Значение(ПланВидовХарактеристик.ВидыДоступа.#Параметр(14))
   И Виды.ТолькоВидДоступа = Истина
  )
 ИЛИ
  Истина В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
   (
   Выбрать Первые 1 Истина
   ИЗ РегистрСведений.ПраваПоЗначениямДоступа КАК ПраваПоЗначениям
    Внутреннее Соединение РегистрСведений.ГруппыЗнач[
---
многа букав). Понял, спасибо. Решил по другому.