Исполнение запроса для динамического списка

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

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

В результат выполнения запросе на сервере - наим. организации в отладчике есть. Однако при переходе с сервера на клиент оно почему то теряется( под пользователем с ограниченными правами. Под полными - все ок(.
Как еще можно выполнить даный запрос для дин.списка, чтобы вывести наим. организации для пользователя с урезанными правами ?
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
12. AllexSoft 29.01.15 13:10 Сейчас в теме
(11) Manticor, я без шаблона делал) с шаблонами сами разбирайтесь )) ПоЗначениям не подойдет помоему, там надо ПоЗначениямРасширенный шаблон вам брать ) но и с шаблоном возможно сделать тоже самое, только с параметрами разобраться)
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. DJDUH 17 26.01.15 16:22 Сейчас в теме
(1) Manticor, разрешенные
bzmax; AllexSoft; +2 Ответить
4. Manticor 66 26.01.15 16:36 Сейчас в теме
(3) DJDUH, если это использовать то в поле пишет - объект не обнаружен и мега строка из символов)
5. DJDUH 17 26.01.15 16:44 Сейчас в теме
6. Boneman 298 26.01.15 16:55 Сейчас в теме
(1) Manticor, я так понимаю, что проблема в
| РегистрСведенийлнт_КадровыйРезерв.Организация,

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

либо в самом запросе, исключить, каким то параметром, это ссылочное поле.
Т.е. организацию в параметр и передаем.
7. Manticor 66 26.01.15 17:39 Сейчас в теме
(6) Boneman, насколько я понимаю, если установить УстановитьПривилегированныйРежим(Истина) - то запрос должен притянуть и запрещенную организацию))
8. Boneman 298 26.01.15 17:45 Сейчас в теме
(7) Manticor, привелигированный режим то не навсегда установлен, а в рамках процедурки, и когда оно выполнится,
привелигированному режиму придет конец, - а в результате запроса у нас есть запрещенные элементы, что должно вызвать ошибку.
Для этого и нужно, пока включен режим бога, сформировать результат в таком виде, чтобы он был нормально захаван пользователем с любыми правами.
15. Vladimir_D 119 24.09.20 10:29 Сейчас в теме
(1)Решил немного проще. Не шаблонами. Перед запросом установил привилегированный режим.
Процедура ПодготовитьДанные()

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

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

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

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

Понимаю, что апнул тему 5-тилетней давности, но поиском только эту более-менее подходящую тему нашел. Вот и решил тут отписаться, может кому поможет.
17. Manticor 66 24.09.20 13:26 Сейчас в теме
(15) Я уже не помню точно, но мне этот способ не подошел, так как после возврата с сервера на клиент не было значения организации.
У вас по видимому нет вызова сервера с клиента?
18. Vladimir_D 119 24.09.20 19:00 Сейчас в теме
(17)у меня при получении данных с сервера в динамической списке надо было получить данные из регистра по измерения, которые не доступные по РЛС. Технически все на сервере, но были траблы с тем, что событие на сервере без контекста. Нашёл статью где можно указать нужные данные формы в настройки компоновщика. Так и решил задачу.
2. ipoloskov 163 26.01.15 16:21 Сейчас в теме
Не пробовал написать
"| РегистрСведенийлнт_КадровыйРезерв.Организация.Наименование КАК Организация,"
?
9. magnat1991 27.01.15 12:02 Сейчас в теме
Выполняйте запрос в Общем Модуле "Полные права"

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

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

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

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



И на выхлопе уже получаете таблицу со всеми данными без ограничений
10. AllexSoft 27.01.15 13:00 Сейчас в теме
делается параметр сеанса, скажем "ЧтениеВсехОрганизаций" - булево.. при установке сеанса инициализируем его в = Ложь.. делаем новую роль, или на вашу пользовательскую ограниченную роль цепляем RLS на справочник организации - чтение, типа "ГДЕ &ЧтениеВсехОрганизаций".. ну и в нужном месте (ну скажем в вашем случае при создании на сервере ставим ЧтениеВсехОрганизаций= истина" и все ) не забудьте только сбросить потом параметр сеанса ЧтениеВсехОрганизаций= ложь, когда форму закроют)
Manticor; AnderWonder; +2 Ответить
11. Manticor 66 29.01.15 13:03 Сейчас в теме
(10) AllexSoft, а как установить данный параметр в ограничениях прав? Тоесть мы его установим данный параметр в истину или ложь при инициализации сеанса, затем в шаблоне ограничения нужно к нему обратиться.
Текст шаблона начинается так:

// ПоЗначениям ( Таблица, Право, Модификатор, В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)
#КонецЕсли
Показать
12. AllexSoft 29.01.15 13:10 Сейчас в теме
(11) Manticor, я без шаблона делал) с шаблонами сами разбирайтесь )) ПоЗначениям не подойдет помоему, там надо ПоЗначениямРасширенный шаблон вам брать ) но и с шаблоном возможно сделать тоже самое, только с параметрами разобраться)
13. Manticor 66 06.02.15 15:36 Сейчас в теме
(12) AllexSoft, как можно перевести мани? В личке это отключено?
14. Vladimir_D 119 23.09.20 14:23 Сейчас в теме
(10) Можешь пояснить подробней? Пытаюсь понять, не могу. Куда условие досовывать
"ГДЕ &ЧтениеВсехОрганизаций"
16. Manticor 66 24.09.20 13:16 Сейчас в теме
(14) Владимир, доброго дня. Да.... Теме 5 лет, а до сих пор актуально. Хорошо, что кому то понадобилась)
ГДЕ &ЧтениеВсехОрганизаций я помещал в RLS роли, которая есть у пользователя с неполными правами.
Сам параметр ЧтениеВсехОрганизаций сначала добавлял в параметры сеанса затем устанавливал в модуле сеанса в пр-ре УстановитьЗначениеПараметраСеанса
Постараюсь привести текст RLS. Он довольно болшой, но добавлялась всего одна строчка кода:

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

// ПоЗначениям ( Таблица, Право, Модификатор, В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)" = "НеОграничиватьДоступКГруппам" #Тогда
	Т.ЭтоГруппа ИЛИ
#КонецЕсли
Показать

//++ВСТАВКА ПАРАМЕТРА!!!+ 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) = "ОдинИзМногихВидов,МножествоГрупп"
Показать

Выбрать Первые 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))
				И Виды.ТолькоВидДоступа = Истина
			)
			Тогда Истина
			Иначе Ложь
			Конец
	 )
	#КонецЕсли
#КонецЕсли
Показать


//// Проверка значения поля группы параметров 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))
				И Виды.ТолькоВидДоступа = Истина
			)
			Тогда Истина
			Иначе Ложь
			Конец
	 )
	#КонецЕсли
#КонецЕсли
Показать


//// Проверка значения поля группы параметров 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))
				И Виды.ТолькоВидДоступа = Истина
			)
			Тогда Истина
			Иначе Ложь
			Конец
	 )
	#КонецЕсли
#КонецЕсли
Показать

//// Проверка значения поля группы параметров 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 Истина
ИЗ РегистрСведений.ПраваПоЗначениямДоступа КАК ПраваПоЗначениям
Внутреннее Соединение РегистрСведений.ГруппыЗнач[
19. Vladimir_D 119 24.09.20 19:02 Сейчас в теме
(16)многа букав). Понял, спасибо. Решил по другому.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот