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

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 162 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)многа букав). Понял, спасибо. Решил по другому.
Оставьте свое сообщение
Вакансии
1С аналитик
Москва
зарплата от 210 000 руб.
Полный день

Руководитель направления 1С
Москва
зарплата от 350 000 руб.
Полный день

1С Программист
Москва
зарплата от 180 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)