<?xml version="1.0" encoding="UTF-8"?>
<Rights xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://v8.1c.ru/8.2/roles" xsi:type="Rights">
	<setForNewObjects>false</setForNewObjects>
	<setForAttributesByDefault>true</setForAttributesByDefault>
	<independentRightsOfChildObjects>false</independentRightsOfChildObjects>
	<object>
		<name>InformationRegister.ДополнительныеСведения</name>
		<right>
			<name>Read</name>
			<value>true</value>
			<restrictionByCondition>
				<condition>#Если &amp;ОграничениеДоступаНаУровнеЗаписейУниверсально #Тогда
#ДляРегистра("ИдентификаторыОбъектовМетаданных.РегистрСведенийДополнительныеСведения", "Свойство", "", "", "", "")
#Иначе
#ПоЗначениям( "РегистрСведений.ДополнительныеСведения", "","",
"ДополнительныеСведения", "Свойство",
"","", "","", "","", "","", "","", "","", "","", "","", "","", "","", "","", "","", "","", "","", "","")
#КонецЕсли</condition>
			</restrictionByCondition>
		</right>
		<right>
			<name>Update</name>
			<value>true</value>
			<restrictionByCondition>
				<condition>#Если &amp;ОграничениеДоступаНаУровнеЗаписейУниверсально #Тогда
#ДляРегистра("ИдентификаторыОбъектовМетаданных.РегистрСведенийДополнительныеСведения", "Свойство", "", "", "", "")
#Иначе
#ПоЗначениям( "РегистрСведений.ДополнительныеСведения", "","",
"ДополнительныеСведения", "Свойство",
"","", "","", "","", "","", "","", "","", "","", "","", "","", "","", "","", "","", "","", "","", "","")
#КонецЕсли</condition>
			</restrictionByCondition>
		</right>
		<right>
			<name>View</name>
			<value>true</value>
		</right>
		<right>
			<name>Edit</name>
			<value>true</value>
		</right>
	</object>
	<object>
		<name>CommonCommand.ДополнительныеСведенияКоманднаяПанель</name>
		<right>
			<name>View</name>
			<value>true</value>
		</right>
	</object>
	<object>
		<name>Configuration.УчетДоработокКонфигураций</name>
		<right>
			<name>MainWindowModeNormal</name>
			<value>true</value>
		</right>
		<right>
			<name>MainWindowModeWorkplace</name>
			<value>true</value>
		</right>
		<right>
			<name>MainWindowModeEmbeddedWorkplace</name>
			<value>true</value>
		</right>
		<right>
			<name>MainWindowModeFullscreenWorkplace</name>
			<value>true</value>
		</right>
		<right>
			<name>MainWindowModeKiosk</name>
			<value>true</value>
		</right>
		<right>
			<name>AnalyticsSystemClient</name>
			<value>true</value>
		</right>
	</object>
	<object>
		<name>CommonForm.РедактированиеДополнительныхСведений</name>
		<right>
			<name>View</name>
			<value>true</value>
		</right>
	</object>
	<restrictionTemplate>
		<name>ДляРегистра(Регистр, Поле1, Поле2, Поле3, Поле4, Поле5)</name>
		<condition>// ДляРегистра(Регистр, Поле1, Поле2 = "", Поле3 = "", Поле4 = "", Поле5 = "")
// Шаблон используется для ограничения групп записей регистров.
//
// Параметры:
//  Регистр - имя предопределенного элемента справочника Идентификаторы объектов метаданных или справочника
//            Идентификаторы объектов расширений в формате: имя справочника с точкой и полное имя таблицы
//            без точки, например, ИдентификаторыОбъектовМетаданных.РегистрНакопленияОстаткиНаСкладах;
//          - имя отдельного регистра ключей в формате КлючиДоступаКРегистру&lt;ОстатокИмени&gt;,
//            например, КлючиДоступаКРегиструОстаткиНаСкладах.
//  Поле1   - имя первого поля (измерения, ресурса, реквизита), которое будет соединяться с полем Поле1
//            регистра сведений КлючиДоступаКРегистр*
//  Поле2   - аналогично предыдущему параметру, если используется в ограничении доступа к регистру.
//  ...
//  Поле5   - аналогично предыдущему параметру, если используется в ограничении доступа к регистру.

#Если &amp;СпискиСОтключеннымОграничениемЧтения = "Неопределено" #Тогда
  // Информационная база заблокирована для обновления.
  ГДЕ ЛОЖЬ

#ИначеЕсли Не СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ДляРегистра9,") #Тогда
  Ошибка: Требуется обновить шаблон на актуальную версию, поставляемую в роли ИзменениеУчастниковГруппДоступа по причине: Используется устаревшая версия 9 шаблона ограничения доступа ДляРегистра. Объект: #ИмяТекущейТаблицы, Право: #ИмяТекущегоПраваДоступа.

#ИначеЕсли &amp;СпискиСОтключеннымОграничениемЧтения = "Все" #Тогда
  // У пользователя отключены все виды доступа или
  // ограничение на уровне записей не используется.
  ГДЕ ИСТИНА

#ИначеЕсли СтрСодержит(&amp;СпискиСОтключеннымОграничениемЧтения, #ИмяТекущейТаблицы + ";") #Тогда
  // У пользователя отключено ограничение для текущей таблицы.
  ГДЕ ИСТИНА

#ИначеЕсли СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ТребуетсяПерезапуститьСеанс,") #Тогда
  Ошибка: Версия программы обновлена, требуется перезапустить сеанс. Объект: #ИмяТекущейТаблицы, Право: #ИмяТекущегоПраваДоступа.

#ИначеЕсли #ИмяТекущегоПраваДоступа &lt;&gt; "Чтение" #Тогда
  // Проверка прав Добавление, Изменение, Удаление выполняется ПередЗаписью / ПриЗаписи.
  ГДЕ ИСТИНА

#ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемЧерезКлючиДоступаГруппДоступа, #ИмяТекущейТаблицы + ";0") #Тогда
  ГДЕ ЛОЖЬ

#ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемЧерезКлючиДоступаГруппДоступа, #ИмяТекущейТаблицы + ";1") #Тогда
  Ошибка: Внешние пользователи отключены.

#ИначеЕсли Не СтрСодержит(&amp;СпискиСОграничениемЧерезКлючиДоступаГруппДоступа,  #ИмяТекущейТаблицы + ":[#Регистр]:#Поле1:#Поле2:#Поле3:#Поле4:#Поле5;")
         И Не СтрСодержит(&amp;СпискиСОграничениемЧерезКлючиДоступаПользователей, #ИмяТекущейТаблицы + ":[#Регистр]:#Поле1:#Поле2:#Поле3:#Поле4:#Поле5;") #Тогда

  Ошибка: Требуется актуализировать ограничение доступа по причине: Не удалось определить вариант ограничения доступа в параметрах сеанса для шаблона ДляРегистра со значениями параметров "#Регистр", "#Поле1", "#Поле2", "#Поле3", "#Поле4", "#Поле5". Объект: #ИмяТекущейТаблицы, Право: #ИмяТекущегоПраваДоступа.
#Иначе

ТекущаяТаблица ГДЕ ИСТИНА В
 (
  ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
#Если Не СтрСодержит("#Регистр", "КлючиДоступаКРегистру") #Тогда
  ИЗ РегистрСведений.КлючиДоступаКРегистрам КАК КлючиДоступаКРегистрам
#Иначе
  ИЗ РегистрСведений.#Регистр КАК КлючиДоступаКРегистрам
#КонецЕсли
  #Если СтрСодержит(&amp;СпискиСОграничениемЧерезКлючиДоступаГруппДоступа,  #ИмяТекущейТаблицы + ":[#Регистр]:#Поле1:#Поле2:#Поле3:#Поле4:#Поле5;") #Тогда
      ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КлючиДоступаНаборовГруппДоступа КАК КлючиДоступаНаборовГруппДоступа
      ПО
          КлючиДоступаНаборовГруппДоступа.КлючДоступа = КлючиДоступаКРегистрам.КлючДоступа
        И КлючиДоступаНаборовГруппДоступа.НаборГруппДоступа = &amp;РазрешенныйНаборГруппДоступа
  #КонецЕсли
  #Если СтрСодержит(&amp;СпискиСОграничениемЧерезКлючиДоступаГруппДоступа,  #ИмяТекущейТаблицы + ":[#Регистр]:#Поле1:#Поле2:#Поле3:#Поле4:#Поле5;*") #Тогда
      
      ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КлючиДоступаНаборовГруппДоступа КАК КлючиДоступаРазрешенногоНабораГруппДоступа
      ПО
          КлючиДоступаРазрешенногоНабораГруппДоступа.КлючДоступа = КлючиДоступаКРегистрам.КлючДоступа
        И КлючиДоступаРазрешенногоНабораГруппДоступа.НаборГруппДоступа = &amp;РазрешенныйПустойНаборГруппДоступа
  #КонецЕсли
  #Если СтрСодержит(&amp;СпискиСОграничениемЧерезКлючиДоступаПользователей, #ИмяТекущейТаблицы + ":[#Регистр]:#Поле1:#Поле2:#Поле3:#Поле4:#Поле5;") #Тогда
      
    #Если &amp;ТекущийВнешнийПользователь = Значение(Справочник.ВнешниеПользователи.ПустаяСсылка) #Тогда
      ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КлючиДоступаПользователей КАК КлючиДоступаПользователей
      ПО
          КлючиДоступаПользователей.КлючДоступа = КлючиДоступаКРегистрам.КлючДоступа
        И КлючиДоступаПользователей.Пользователь = &amp;РазрешенныйПользователь
    #Иначе
      ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КлючиДоступаВнешнихПользователей КАК КлючиДоступаПользователей
      ПО
          КлючиДоступаПользователей.КлючДоступа = КлючиДоступаКРегистрам.КлючДоступа
        И КлючиДоступаПользователей.ВнешнийПользователь = &amp;РазрешенныйПользователь
    #КонецЕсли
  #КонецЕсли
  #Если СтрСодержит(&amp;СпискиСОграничениемЧерезКлючиДоступаПользователей, #ИмяТекущейТаблицы + ":[#Регистр]:#Поле1:#Поле2:#Поле3:#Поле4:#Поле5;+") #Тогда
      
    #Если &amp;ТекущийВнешнийПользователь = Значение(Справочник.ВнешниеПользователи.ПустаяСсылка) #Тогда
      ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КлючиДоступаПользователей КАК КлючиДоступаНаборовГруппПользователей
      ПО
          КлючиДоступаНаборовГруппПользователей.КлючДоступа = КлючиДоступаКРегистрам.КлючДоступа
        И КлючиДоступаНаборовГруппПользователей.Пользователь = &amp;РазрешенныйНаборГруппПользователей
    #Иначе
      ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КлючиДоступаВнешнихПользователей КАК КлючиДоступаНаборовГруппПользователей
      ПО
          КлючиДоступаНаборовГруппПользователей.КлючДоступа = КлючиДоступаКРегистрам.КлючДоступа
        И КлючиДоступаНаборовГруппПользователей.ВнешнийПользователь = &amp;РазрешенныйНаборГруппПользователей
    #КонецЕсли
  #КонецЕсли
  ГДЕ
  #Если Не СтрСодержит("#Регистр", "КлючиДоступаКРегистру") #Тогда
      КлючиДоступаКРегистрам.Регистр = Значение(Справочник.#Регистр)
  #Иначе
      ИСТИНА
  #КонецЕсли
    И
  (
      КлючиДоступаКРегистрам.ВариантДоступа =
    (
  #Если &amp;ТекущийВнешнийПользователь = Значение(Справочник.ВнешниеПользователи.ПустаяСсылка) #Тогда 0 #Иначе 1 #КонецЕсли
  #Если Не СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант1Версия1=0") #Тогда
     #Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант1Поле1=Поле") #Тогда +   2 #КонецЕсли
     #Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант1Поле2=Поле") #Тогда +   2 #КонецЕсли
     #Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант1Поле3=Поле") #Тогда +   2 #КонецЕсли
     #Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант1Поле4=Поле") #Тогда +   2 #КонецЕсли
     #Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант1Поле5=Поле") #Тогда +   2 #КонецЕсли
     #Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Версия1Бит0=1")      #Тогда +  64 #КонецЕсли
     #Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Версия1Бит1=1")      #Тогда + 128 #КонецЕсли
     #Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Версия1Бит2=1")      #Тогда + 256 #КонецЕсли
     #Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Версия1Бит3=1")      #Тогда + 512 #КонецЕсли
  #КонецЕсли
    )
  #Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант1Поле1=Поле1;") #Тогда
    И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле1
  #ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант1Поле1=Поле2;") #Тогда
    И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле2
  #ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант1Поле1=Поле3;") #Тогда
    И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле3
  #ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант1Поле1=Поле4;") #Тогда
    И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле4
  #ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант1Поле1=Поле5;") #Тогда
    И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле5
  #КонецЕсли
  
  #Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант1Поле2=Поле2;") #Тогда
    И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле2
  #ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант1Поле2=Поле3;") #Тогда
    И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле3
  #ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант1Поле2=Поле4;") #Тогда
    И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле4
  #ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант1Поле2=Поле5;") #Тогда
    И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле5
  #КонецЕсли
  
  #Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант1Поле3=Поле3;") #Тогда
    И КлючиДоступаКРегистрам.Поле3 = ТекущаяТаблица.#Поле3
  #ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант1Поле3=Поле4;") #Тогда
    И КлючиДоступаКРегистрам.Поле3 = ТекущаяТаблица.#Поле4
  #ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант1Поле3=Поле5;") #Тогда
    И КлючиДоступаКРегистрам.Поле3 = ТекущаяТаблица.#Поле5
  #КонецЕсли
  
  #Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант1Поле4=Поле4;") #Тогда
    И КлючиДоступаКРегистрам.Поле4 = ТекущаяТаблица.#Поле4
  #ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант1Поле4=Поле5;") #Тогда
    И КлючиДоступаКРегистрам.Поле4 = ТекущаяТаблица.#Поле5
  #КонецЕсли
  
  #Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант1Поле5=Поле5;") #Тогда
    И КлючиДоступаКРегистрам.Поле5 = ТекущаяТаблица.#Поле5
  #КонецЕсли
 
 #Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант2") #Тогда
 
  ИЛИ
      КлючиДоступаКРегистрам.ВариантДоступа =
    (
  #Если &amp;ТекущийВнешнийПользователь = Значение(Справочник.ВнешниеПользователи.ПустаяСсылка) #Тогда 0 #Иначе 1 #КонецЕсли
  #Если Не СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант2Версия2=0") #Тогда
     #Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант2Поле1=Поле") #Тогда +   2 #КонецЕсли
     #Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант2Поле2=Поле") #Тогда +   2 #КонецЕсли
     #Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант2Поле3=Поле") #Тогда +   2 #КонецЕсли
     #Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант2Поле4=Поле") #Тогда +   2 #КонецЕсли
     #Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант2Поле5=Поле") #Тогда +   2 #КонецЕсли
     #Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Версия2Бит0=1")      #Тогда +  64 #КонецЕсли
     #Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Версия2Бит1=1")      #Тогда + 128 #КонецЕсли
     #Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Версия2Бит2=1")      #Тогда + 256 #КонецЕсли
     #Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Версия2Бит3=1")      #Тогда + 512 #КонецЕсли
  #КонецЕсли
    )
  #Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант2Поле1=Поле1;") #Тогда
    И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле1
  #ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант2Поле1=Поле2;") #Тогда
    И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле2
  #ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант2Поле1=Поле3;") #Тогда
    И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле3
  #ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант2Поле1=Поле4;") #Тогда
    И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле4
  #ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант2Поле1=Поле5;") #Тогда
    И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле5
  #КонецЕсли
  
  #Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант2Поле2=Поле2;") #Тогда
    И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле2
  #ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант2Поле2=Поле3;") #Тогда
    И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле3
  #ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант2Поле2=Поле4;") #Тогда
    И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле4
  #ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант2Поле2=Поле5;") #Тогда
    И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле5
  #КонецЕсли
  
  #Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант2Поле3=Поле3;") #Тогда
    И КлючиДоступаКРегистрам.Поле3 = ТекущаяТаблица.#Поле3
  #ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант2Поле3=Поле4;") #Тогда
    И КлючиДоступаКРегистрам.Поле3 = ТекущаяТаблица.#Поле4
  #ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант2Поле3=Поле5;") #Тогда
    И КлючиДоступаКРегистрам.Поле3 = ТекущаяТаблица.#Поле5
  #КонецЕсли
  
  #Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант2Поле4=Поле4;") #Тогда
    И КлючиДоступаКРегистрам.Поле4 = ТекущаяТаблица.#Поле4
  #ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант2Поле4=Поле5;") #Тогда
    И КлючиДоступаКРегистрам.Поле4 = ТекущаяТаблица.#Поле5
  #КонецЕсли
  
  #Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант2Поле5=Поле5;") #Тогда
    И КлючиДоступаКРегистрам.Поле5 = ТекущаяТаблица.#Поле5
  #КонецЕсли
 
 #КонецЕсли
 #Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант3") #Тогда
 
  ИЛИ
      КлючиДоступаКРегистрам.ВариантДоступа =
    (
  #Если &amp;ТекущийВнешнийПользователь = Значение(Справочник.ВнешниеПользователи.ПустаяСсылка) #Тогда 0 #Иначе 1 #КонецЕсли
  #Если Не СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант3Версия3=0") #Тогда
     #Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант3Поле1=Поле") #Тогда +   2 #КонецЕсли
     #Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант3Поле2=Поле") #Тогда +   2 #КонецЕсли
     #Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант3Поле3=Поле") #Тогда +   2 #КонецЕсли
     #Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант3Поле4=Поле") #Тогда +   2 #КонецЕсли
     #Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант3Поле5=Поле") #Тогда +   2 #КонецЕсли
     #Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Версия3Бит0=1")      #Тогда +  64 #КонецЕсли
     #Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Версия3Бит1=1")      #Тогда + 128 #КонецЕсли
     #Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Версия3Бит2=1")      #Тогда + 256 #КонецЕсли
     #Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Версия3Бит3=1")      #Тогда + 512 #КонецЕсли
  #КонецЕсли
    )
  #Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант3Поле1=Поле1;") #Тогда
    И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле1
  #ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант3Поле1=Поле2;") #Тогда
    И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле2
  #ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант3Поле1=Поле3;") #Тогда
    И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле3
  #ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант3Поле1=Поле4;") #Тогда
    И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле4
  #ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант3Поле1=Поле5;") #Тогда
    И КлючиДоступаКРегистрам.Поле1 = ТекущаяТаблица.#Поле5
  #КонецЕсли
  
  #Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант3Поле2=Поле2;") #Тогда
    И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле2
  #ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант3Поле2=Поле3;") #Тогда
    И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле3
  #ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант3Поле2=Поле4;") #Тогда
    И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле4
  #ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант3Поле2=Поле5;") #Тогда
    И КлючиДоступаКРегистрам.Поле2 = ТекущаяТаблица.#Поле5
  #КонецЕсли
  
  #Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант3Поле3=Поле3;") #Тогда
    И КлючиДоступаКРегистрам.Поле3 = ТекущаяТаблица.#Поле3
  #ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант3Поле3=Поле4;") #Тогда
    И КлючиДоступаКРегистрам.Поле3 = ТекущаяТаблица.#Поле4
  #ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант3Поле3=Поле5;") #Тогда
    И КлючиДоступаКРегистрам.Поле3 = ТекущаяТаблица.#Поле5
  #КонецЕсли
  
  #Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант3Поле4=Поле4;") #Тогда
    И КлючиДоступаКРегистрам.Поле4 = ТекущаяТаблица.#Поле4
  #ИначеЕсли СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант3Поле4=Поле5;") #Тогда
    И КлючиДоступаКРегистрам.Поле4 = ТекущаяТаблица.#Поле5
  #КонецЕсли
  
  #Если СтрСодержит(&amp;СпискиСОграничениемПоПолям, #ИмяТекущейТаблицы + ":Вариант3Поле5=Поле5;") #Тогда
    И КлючиДоступаКРегистрам.Поле5 = ТекущаяТаблица.#Поле5
  #КонецЕсли
 
 #КонецЕсли
  )
    И (
  #Если СтрСодержит(&amp;СпискиСОграничениемЧерезКлючиДоступаГруппДоступа, #ИмяТекущейТаблицы + ":[#Регистр]:#Поле1:#Поле2:#Поле3:#Поле4:#Поле5;") #Тогда
          НЕ КлючиДоступаНаборовГруппДоступа.КлючДоступа ЕСТЬ NULL
  #Иначе
          ЛОЖЬ
  #КонецЕсли
  #Если СтрСодержит(&amp;СпискиСОграничениемЧерезКлючиДоступаГруппДоступа, #ИмяТекущейТаблицы + ":[#Регистр]:#Поле1:#Поле2:#Поле3:#Поле4:#Поле5;*") #Тогда
      ИЛИ НЕ КлючиДоступаРазрешенногоНабораГруппДоступа.КлючДоступа ЕСТЬ NULL
  #КонецЕсли
  #Если СтрСодержит(&amp;СпискиСОграничениемЧерезКлючиДоступаПользователей, #ИмяТекущейТаблицы + ":[#Регистр]:#Поле1:#Поле2:#Поле3:#Поле4:#Поле5;") #Тогда
      ИЛИ НЕ КлючиДоступаПользователей.КлючДоступа ЕСТЬ NULL
  #КонецЕсли
  #Если СтрСодержит(&amp;СпискиСОграничениемЧерезКлючиДоступаПользователей, #ИмяТекущейТаблицы + ":[#Регистр]:#Поле1:#Поле2:#Поле3:#Поле4:#Поле5;+") #Тогда
      ИЛИ НЕ КлючиДоступаНаборовГруппПользователей.КлючДоступа ЕСТЬ NULL
  #КонецЕсли
      )
 )

 #Если Не СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, #ИмяТекущейТаблицы + ":Пропустить;")
   И (    СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";УточнитьДляВсех;")
      Или СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, #ИмяТекущейТаблицы + ":Уточнить;") ) #Тогда
  
  #Если Не СтрСодержит(&amp;СпискиСОграничениемЧерезКлючиДоступаПользователей, #ИмяТекущейТаблицы + ":[#Регистр]:#Поле1:#Поле2:#Поле3:#Поле4:#Поле5;") #Тогда
  И ИСТИНА В (ИСТИНА
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";31;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";30;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";29;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";28;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";27;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";26;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";25;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";24;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";23;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";22;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";21;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";20;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";19;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";18;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";17;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";16;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";15;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";14;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";13;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";12;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";11;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";10;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";09;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";08;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";07;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";06;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";05;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";04;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";03;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";02;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";01;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";00;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	)
  #Иначе
  И ИСТИНА В (ИСТИНА
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";31^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";30^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";29^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";28^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";27^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";26^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";25^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";24^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";23^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";22^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";21^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";20^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";19^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";18^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";17^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";16^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";15^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";14^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";13^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";12^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";11^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";10^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";09^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";08^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";07^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";06^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";05^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";04^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";03^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";02^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";01^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	#Если СтрСодержит(&amp;ОбщиеПараметрыШаблоновОграниченияДоступа, ";00^;") #Тогда ,ИСТИНА #Иначе ,ЛОЖЬ #КонецЕсли
	)
  #КонецЕсли
 #КонецЕсли

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

#Если &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется = "" #Тогда // Информационная база заблокирована для обновления.
    ГДЕ ЛОЖЬ

#ИначеЕсли Не СтрСодержит(&amp;ВерсииШаблоновОграниченияДоступа, ",ПоЗначениям18,") #Тогда
    Ошибка: Требуется обновить шаблон на актуальную версию, поставляемую в роли ИзменениеУчастниковГруппДоступа по причине: Используется устаревшая версия 18 шаблона ограничения доступа ПоЗначениям. Объект: #ИмяТекущейТаблицы, Право: #ИмяТекущегоПраваДоступа.

#Иначе

// Проверка правильности параметра Право.
#Если Не ("#Параметр(2)" = "Чтение"    Или "#Параметр(2)" = "Добавление" Или
          "#Параметр(2)" = "Изменение" Или "#Параметр(2)" = "Удаление"   Или "#Параметр(2)" = "")
      Или #ИмяТекущегоПраваДоступа &lt;&gt; "Чтение" И "#Параметр(2)"  = "Чтение"
      Или #ИмяТекущегоПраваДоступа  = "Чтение" И "#Параметр(2)" &lt;&gt; "Чтение" И "#Параметр(2)" &lt;&gt; "" #Тогда
    // Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
    НеверноеПраво: #Параметр(2)
#КонецЕсли

// Проверка правильности параметра ИмяТаблицы.
#Если "#Параметр(1)" &lt;&gt; #ИмяТекущейТаблицы #Тогда
	// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
	НеверноеИмяТекущейТаблицы: "#Параметр(1)"
#КонецЕсли

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

// Общая проверка использования ограничений доступа на уровне записей и
// проверка использования хотя бы одного ограничения из указанных видов доступа.
#Если Не
     (  Истина
      И ("#Параметр(4)" = "" И "#Параметр(5)" = ""
         Или Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется
           И Не СтрСодержит(",Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(4),"))
      И ("#Параметр(6)" = "" И "#Параметр(7)" = ""
         Или Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется
           И Не СтрСодержит(",Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(6),"))
      И ("#Параметр(8)" = "" И "#Параметр(9)" = ""
         Или Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется
           И Не СтрСодержит(",Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(8),"))
      И ("#Параметр(10)" = "" И "#Параметр(11)" = ""
         Или Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется
           И Не СтрСодержит(",Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(10),"))
      И ("#Параметр(12)" = "" И "#Параметр(13)" = ""
         Или Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется
           И Не СтрСодержит(",Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(12),"))
      И ("#Параметр(14)" = "" И "#Параметр(15)" = ""
         Или Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется
           И Не СтрСодержит(",Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(14),"))
      И ("#Параметр(16)" = "" И "#Параметр(17)" = ""
         Или Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется
           И Не СтрСодержит(",Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(16),"))
      И ("#Параметр(18)" = "" И "#Параметр(19)" = ""
         Или Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется
           И Не СтрСодержит(",Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(18),"))
      И ("#Параметр(20)" = "" И "#Параметр(21)" = ""
         Или Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется
           И Не СтрСодержит(",Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(20),"))
      И ("#Параметр(22)" = "" И "#Параметр(23)" = ""
         Или Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется
           И Не СтрСодержит(",Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(22),"))
      И ("#Параметр(24)" = "" И "#Параметр(25)" = ""
         Или Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется
           И Не СтрСодержит(",Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(24),"))
      И ("#Параметр(26)" = "" И "#Параметр(27)" = ""
         Или Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется
           И Не СтрСодержит(",Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(26),"))
      И ("#Параметр(28)" = "" И "#Параметр(29)" = ""
         Или Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется
           И Не СтрСодержит(",Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(28),"))
      И ("#Параметр(30)" = "" И "#Параметр(31)" = ""
         Или Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется
           И Не СтрСодержит(",Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(30),"))
      И ("#Параметр(32)" = "" И "#Параметр(33)" = ""
         Или Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется
           И Не СтрСодержит(",Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(32),"))
      И ("#Параметр(34)" = "" И "#Параметр(35)" = ""
         Или Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется
           И Не СтрСодержит(",Объект, ,ПравоЧтения,ПравоИзменения,ПравоЧтенияПоИдентификатору,ПравоИзмененияПоИдентификатору,", ",#Параметр(34),"))
     ) #Тогда

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

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

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

  ( // Поиск значений заданных полей в разрешенных значениях групп доступа (пользователей).

//// Проверка значения поля группы параметров 1.
#Если &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется И ("#Параметр(4)" = "Условие" Или "#Параметр(4)" = "") #Тогда
	// Когда имя вида доступа "Условие" (или ""), тогда вместо имени поля задано условие.
	( #Параметр(5) )
#ИначеЕсли "#Параметр(4)" = "ПравоЧтения" Или "#Параметр(4)" = "ПравоИзменения" #Тогда
	  Т.#Параметр(5) &lt;&gt; НЕОПРЕДЕЛЕНО
	И ИСТИНА В
	 (	// Проверка права пользователя на таблицу Значения, установленного в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТИПЗНАЧЕНИЯ(ТаблицыГруппДоступаПроверкаПрава.ТипТаблицы) = ТИПЗНАЧЕНИЯ(Т.#Параметр(5))
		#Если Не "#Параметр(4)" = "ПравоЧтения" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли "#Параметр(4)" = "ПравоЧтенияПоИдентификатору" Или "#Параметр(4)" = "ПравоИзмененияПоИдентификатору" #Тогда
	  ИСТИНА В
	 (	// Проверка права пользователя на таблицу, идентификатор которой указан в Значении, установленном в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТаблицыГруппДоступаПроверкаПрава.Таблица = Т.#Параметр(5)
		#Если Не "#Параметр(4)" = "ПравоЧтенияПоИдентификатору" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется #Тогда
	ИСТИНА // Группа параметров отключена.
#ИначеЕсли "#Параметр(4)" = "НастройкиПрав" #Тогда
	
	 (
		ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = Т.#Параметр(5)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
		 И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено.
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = Т.#Параметр(5)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
	 )
#ИначеЕсли Не СтрСодержит(&amp;ВсеВидыДоступаКромеСпециальных, ",#Параметр(4),") #Тогда
	// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
	#Если СтрСодержит("#Параметр(4)", ",") #Тогда
		НеверныйВидДоступа: "#Параметр(4)" - "Список имен видов доступа не найден"
	#Иначе
		НеверныйВидДоступа: "#Параметр(4)" - "Имя вида доступа не найдено"
	#КонецЕсли
#ИначеЕсли &amp;ВидыДоступаСОтключеннымИспользованием &lt;&gt; "Все"
         И Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",#Параметр(4),") #Тогда
	
	 (
			ЕСТЬNULL(Т.#Параметр(5), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
			И
		#Если (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")        И СтрСодержит(",#Параметр(4),", ",Пользователи,"))
		  Или (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") И СтрСодержит(",#Параметр(4),", ",ВнешниеПользователи,")) #Тогда
			НЕ
			(
			НЕ ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначенийДоступа
				ГДЕ
					  ГруппыЗначенийДоступа.ЗначениеДоступа       = Т.#Параметр(5)
					И ГруппыЗначенийДоступа.ГруппаЗначенийДоступа = &amp;АвторизованныйПользователь
				)
			И НЕ
		#Иначе
			(
		#КонецЕсли
			ВЫБОР
			КОГДА ИСТИНА В
				(
		#Если СтрСодержит(&amp;ВидыДоступаБезГруппДляЗначенияДоступа, ",#Параметр(4),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = Т.#Параметр(5)
		#ИначеЕсли "Т.#Параметр(5)" = "Т.Ссылка"
		         И "#Параметр(4)" &lt;&gt; "Пользователи"
		         И "#Параметр(4)" &lt;&gt; "ВнешниеПользователи" #Тогда
			#Если СтрСодержит("#Параметр(4)", ",") #Тогда
				// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
				НеверныйВидДоступа: "#Параметр(4)" - "При проверке таблицы значения доступа можно указывать только один вид доступа"
			#ИначеЕсли СтрСодержит(&amp;ВидыДоступаСОднойГруппойДляЗначенияДоступа, ",#Параметр(4),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = Т.ГруппаДоступа
			#Иначе // Значения доступа, для которых можно указать несколько групп значений доступа.
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ #Параметр(1).ГруппыДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаДоступа
					И ГруппыЗначений.Ссылка    = Т.#Параметр(5)
			#КонецЕсли
		#Иначе
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа         = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа       = ГруппыЗначений.ГруппаЗначенийДоступа
					И ГруппыЗначений.ЗначениеДоступа = Т.#Параметр(5)
		#КонецЕсли
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			=
			ВЫБОР
			КОГДА ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
				ГДЕ
				      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
				    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(Т.#Параметр(5))
				    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			)
	 )
#Иначе
	ЕСТЬNULL(Т.#Параметр(5), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
#КонецЕсли

//// Проверка значения поля группы параметров 2.
#Если "#Параметр(6)" = "" И "#Параметр(7)" = "" #Тогда
	// Группа параметров не используется.
#ИначеЕсли &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется И ("#Параметр(6)" = "Условие" Или "#Параметр(6)" = "") #Тогда
	// Когда имя вида доступа "Условие" (или ""), тогда вместо имени поля задано условие.
	И ( #Параметр(7) )
#ИначеЕсли "#Параметр(6)" = "ПравоЧтения" Или "#Параметр(6)" = "ПравоИзменения" #Тогда
	И Т.#Параметр(7) &lt;&gt; НЕОПРЕДЕЛЕНО
	И ИСТИНА В
	 (	// Проверка права пользователя на таблицу Значения, установленного в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТИПЗНАЧЕНИЯ(ТаблицыГруппДоступаПроверкаПрава.ТипТаблицы) = ТИПЗНАЧЕНИЯ(Т.#Параметр(7))
		#Если Не "#Параметр(6)" = "ПравоЧтения" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли "#Параметр(6)" = "ПравоЧтенияПоИдентификатору" Или "#Параметр(6)" = "ПравоИзмененияПоИдентификатору" #Тогда
	  ИСТИНА В
	 (	// Проверка права пользователя на таблицу, идентификатор которой указан в Значении, установленном в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТаблицыГруппДоступаПроверкаПрава.Таблица = Т.#Параметр(7)
		#Если Не "#Параметр(6)" = "ПравоЧтенияПоИдентификатору" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется #Тогда
	// Группа параметров отключена.
#ИначеЕсли "#Параметр(6)" = "НастройкиПрав" #Тогда
	И
	 (
		ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = Т.#Параметр(7)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
		 И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено.
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = Т.#Параметр(7)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
	 )
#ИначеЕсли Не СтрСодержит(&amp;ВсеВидыДоступаКромеСпециальных, ",#Параметр(6),") #Тогда
	// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
	#Если СтрСодержит("#Параметр(6)", ",") #Тогда
		НеверныйВидДоступа: "#Параметр(6)" - "Список имен видов доступа не найден"
	#Иначе
		НеверныйВидДоступа: "#Параметр(6)" - "Имя вида доступа не найдено"
	#КонецЕсли
#ИначеЕсли &amp;ВидыДоступаСОтключеннымИспользованием &lt;&gt; "Все"
         И Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",#Параметр(6),") #Тогда
	И
	 (
			ЕСТЬNULL(Т.#Параметр(7), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
			И
		#Если (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")        И СтрСодержит(",#Параметр(6),", ",Пользователи,"))
		  Или (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") И СтрСодержит(",#Параметр(6),", ",ВнешниеПользователи,")) #Тогда
			НЕ
			(
			НЕ ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначенийДоступа
				ГДЕ
					  ГруппыЗначенийДоступа.ЗначениеДоступа       = Т.#Параметр(7)
					И ГруппыЗначенийДоступа.ГруппаЗначенийДоступа = &amp;АвторизованныйПользователь
				)
			И НЕ
		#Иначе
			(
		#КонецЕсли
			ВЫБОР
			КОГДА ИСТИНА В
				(
		#Если СтрСодержит(&amp;ВидыДоступаБезГруппДляЗначенияДоступа, ",#Параметр(6),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = Т.#Параметр(7)
		#ИначеЕсли "Т.#Параметр(7)" = "Т.Ссылка"
		         И "#Параметр(6)" &lt;&gt; "Пользователи"
		         И "#Параметр(6)" &lt;&gt; "ВнешниеПользователи" #Тогда
			#Если СтрСодержит("#Параметр(6)", ",") #Тогда
				// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
				НеверныйВидДоступа: "#Параметр(6)" - "При проверке таблицы значения доступа можно указывать только один вид доступа"
			#ИначеЕсли СтрСодержит(&amp;ВидыДоступаСОднойГруппойДляЗначенияДоступа, ",#Параметр(6),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = Т.ГруппаДоступа
			#Иначе // Значения доступа, для которых можно указать несколько групп значений доступа.
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ #Параметр(1).ГруппыДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаДоступа
					И ГруппыЗначений.Ссылка    = Т.#Параметр(7)
			#КонецЕсли
		#Иначе
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа         = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа       = ГруппыЗначений.ГруппаЗначенийДоступа
					И ГруппыЗначений.ЗначениеДоступа = Т.#Параметр(7)
		#КонецЕсли
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			=
			ВЫБОР
			КОГДА ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
				ГДЕ
				      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
				    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(Т.#Параметр(7))
				    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			)
	 )
#Иначе
	И ЕСТЬNULL(Т.#Параметр(7), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
#КонецЕсли

//// Проверка значения поля группы параметров 3.
#Если "#Параметр(8)" = "" И "#Параметр(9)" = "" #Тогда
	// Группа параметров не используется.
#ИначеЕсли &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется И ("#Параметр(8)" = "Условие" Или "#Параметр(8)" = "") #Тогда
	// Когда имя вида доступа "Условие" (или ""), тогда вместо имени поля задано условие.
	И ( #Параметр(9) )
#ИначеЕсли "#Параметр(8)" = "ПравоЧтения" Или "#Параметр(8)" = "ПравоИзменения" #Тогда
	И Т.#Параметр(9) &lt;&gt; НЕОПРЕДЕЛЕНО
	И ИСТИНА В
	 (	// Проверка права пользователя на таблицу Значения, установленного в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТИПЗНАЧЕНИЯ(ТаблицыГруппДоступаПроверкаПрава.ТипТаблицы) = ТИПЗНАЧЕНИЯ(Т.#Параметр(9))
		#Если Не "#Параметр(8)" = "ПравоЧтения" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли "#Параметр(8)" = "ПравоЧтенияПоИдентификатору" Или "#Параметр(8)" = "ПравоИзмененияПоИдентификатору" #Тогда
	  ИСТИНА В
	 (	// Проверка права пользователя на таблицу, идентификатор которой указан в Значении, установленном в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТаблицыГруппДоступаПроверкаПрава.Таблица = Т.#Параметр(9)
		#Если Не "#Параметр(8)" = "ПравоЧтенияПоИдентификатору" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется #Тогда
	// Группа параметров отключена.
#ИначеЕсли "#Параметр(8)" = "НастройкиПрав" #Тогда
	И
	 (
		ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = Т.#Параметр(9)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
		 И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено.
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = Т.#Параметр(9)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
	 )
#ИначеЕсли Не СтрСодержит(&amp;ВсеВидыДоступаКромеСпециальных, ",#Параметр(8),") #Тогда
	// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
	#Если СтрСодержит("#Параметр(8)", ",") #Тогда
		НеверныйВидДоступа: "#Параметр(8)" - "Список имен видов доступа не найден"
	#Иначе
		НеверныйВидДоступа: "#Параметр(8)" - "Имя вида доступа не найдено"
	#КонецЕсли
#ИначеЕсли &amp;ВидыДоступаСОтключеннымИспользованием &lt;&gt; "Все"
         И Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",#Параметр(8),") #Тогда
	И
	 (
			ЕСТЬNULL(Т.#Параметр(9), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
			И
		#Если (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")        И СтрСодержит(",#Параметр(8),", ",Пользователи,"))
		  Или (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") И СтрСодержит(",#Параметр(8),", ",ВнешниеПользователи,")) #Тогда
			НЕ
			(
			НЕ ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначенийДоступа
				ГДЕ
					  ГруппыЗначенийДоступа.ЗначениеДоступа       = Т.#Параметр(9)
					И ГруппыЗначенийДоступа.ГруппаЗначенийДоступа = &amp;АвторизованныйПользователь
				)
			И НЕ
		#Иначе
			(
		#КонецЕсли
			ВЫБОР
			КОГДА ИСТИНА В
				(
		#Если СтрСодержит(&amp;ВидыДоступаБезГруппДляЗначенияДоступа, ",#Параметр(8),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = Т.#Параметр(9)
		#ИначеЕсли "Т.#Параметр(9)" = "Т.Ссылка"
		         И "#Параметр(8)" &lt;&gt; "Пользователи"
		         И "#Параметр(8)" &lt;&gt; "ВнешниеПользователи" #Тогда
			#Если СтрСодержит("#Параметр(8)", ",") #Тогда
				// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
				НеверныйВидДоступа: "#Параметр(8)" - "При проверке таблицы значения доступа можно указывать только один вид доступа"
			#ИначеЕсли СтрСодержит(&amp;ВидыДоступаСОднойГруппойДляЗначенияДоступа, ",#Параметр(8),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = Т.ГруппаДоступа
			#Иначе // Значения доступа, для которых можно указать несколько групп значений доступа.
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ #Параметр(1).ГруппыДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаДоступа
					И ГруппыЗначений.Ссылка    = Т.#Параметр(9)
			#КонецЕсли
		#Иначе
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа         = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа       = ГруппыЗначений.ГруппаЗначенийДоступа
					И ГруппыЗначений.ЗначениеДоступа = Т.#Параметр(9)
		#КонецЕсли
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			=
			ВЫБОР
			КОГДА ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
				ГДЕ
				      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
				    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(Т.#Параметр(9))
				    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			)
	 )
#Иначе
	И ЕСТЬNULL(Т.#Параметр(9), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
#КонецЕсли

//// Проверка значения поля группы параметров 4.
#Если "#Параметр(10)" = "" И "#Параметр(11)" = "" #Тогда
	// Группа параметров не используется.
#ИначеЕсли &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется И ("#Параметр(10)" = "Условие" Или "#Параметр(10)" = "") #Тогда
	// Когда имя вида доступа "Условие" (или ""), тогда вместо имени поля задано условие.
	И ( #Параметр(11) )
#ИначеЕсли "#Параметр(10)" = "ПравоЧтения" Или "#Параметр(10)" = "ПравоИзменения" #Тогда
	И Т.#Параметр(11) &lt;&gt; НЕОПРЕДЕЛЕНО
	И ИСТИНА В
	 (	// Проверка права пользователя на таблицу Значения, установленного в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТИПЗНАЧЕНИЯ(ТаблицыГруппДоступаПроверкаПрава.ТипТаблицы) = ТИПЗНАЧЕНИЯ(Т.#Параметр(11))
		#Если Не "#Параметр(10)" = "ПравоЧтения" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли "#Параметр(10)" = "ПравоЧтенияПоИдентификатору" Или "#Параметр(10)" = "ПравоИзмененияПоИдентификатору" #Тогда
	  ИСТИНА В
	 (	// Проверка права пользователя на таблицу, идентификатор которой указан в Значении, установленном в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТаблицыГруппДоступаПроверкаПрава.Таблица = Т.#Параметр(11)
		#Если Не "#Параметр(10)" = "ПравоЧтенияПоИдентификатору" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется #Тогда
	// Группа параметров отключена.
#ИначеЕсли "#Параметр(10)" = "НастройкиПрав" #Тогда
	И
	 (
		ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = Т.#Параметр(11)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
		 И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено.
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = Т.#Параметр(11)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
	 )
#ИначеЕсли Не СтрСодержит(&amp;ВсеВидыДоступаКромеСпециальных, ",#Параметр(10),") #Тогда
	// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
	#Если СтрСодержит("#Параметр(10)", ",") #Тогда
		НеверныйВидДоступа: "#Параметр(10)" - "Список имен видов доступа не найден"
	#Иначе
		НеверныйВидДоступа: "#Параметр(10)" - "Имя вида доступа не найдено"
	#КонецЕсли
#ИначеЕсли &amp;ВидыДоступаСОтключеннымИспользованием &lt;&gt; "Все"
         И Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",#Параметр(10),") #Тогда
	И
	 (
			ЕСТЬNULL(Т.#Параметр(11), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
			И
		#Если (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")        И СтрСодержит(",#Параметр(10),", ",Пользователи,"))
		  Или (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") И СтрСодержит(",#Параметр(10),", ",ВнешниеПользователи,")) #Тогда
			НЕ
			(
			НЕ ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначенийДоступа
				ГДЕ
					  ГруппыЗначенийДоступа.ЗначениеДоступа       = Т.#Параметр(11)
					И ГруппыЗначенийДоступа.ГруппаЗначенийДоступа = &amp;АвторизованныйПользователь
				)
			И НЕ
		#Иначе
			(
		#КонецЕсли
			ВЫБОР
			КОГДА ИСТИНА В
				(
		#Если СтрСодержит(&amp;ВидыДоступаБезГруппДляЗначенияДоступа, ",#Параметр(10),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = Т.#Параметр(11)
		#ИначеЕсли "Т.#Параметр(11)" = "Т.Ссылка"
		         И "#Параметр(10)" &lt;&gt; "Пользователи"
		         И "#Параметр(10)" &lt;&gt; "ВнешниеПользователи" #Тогда
			#Если СтрСодержит("#Параметр(10)", ",") #Тогда
				// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
				НеверныйВидДоступа: "#Параметр(10)" - "При проверке таблицы значения доступа можно указывать только один вид доступа"
			#ИначеЕсли СтрСодержит(&amp;ВидыДоступаСОднойГруппойДляЗначенияДоступа, ",#Параметр(10),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = Т.ГруппаДоступа
			#Иначе // Значения доступа, для которых можно указать несколько групп значений доступа.
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ #Параметр(1).ГруппыДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаДоступа
					И ГруппыЗначений.Ссылка    = Т.#Параметр(11)
			#КонецЕсли
		#Иначе
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа         = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа       = ГруппыЗначений.ГруппаЗначенийДоступа
					И ГруппыЗначений.ЗначениеДоступа = Т.#Параметр(11)
		#КонецЕсли
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			=
			ВЫБОР
			КОГДА ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
				ГДЕ
				      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
				    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(Т.#Параметр(11))
				    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			)
	 )
#Иначе
	И ЕСТЬNULL(Т.#Параметр(11), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
#КонецЕсли

//// Проверка значения поля группы параметров 5.
#Если "#Параметр(12)" = "" И "#Параметр(13)" = "" #Тогда
	// Группа параметров не используется.
#ИначеЕсли &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется И ("#Параметр(12)" = "Условие" Или "#Параметр(12)" = "") #Тогда
	// Когда имя вида доступа "Условие" (или ""), тогда вместо имени поля задано условие.
	И ( #Параметр(13) )
#ИначеЕсли "#Параметр(12)" = "ПравоЧтения" Или "#Параметр(12)" = "ПравоИзменения" #Тогда
	И Т.#Параметр(13) &lt;&gt; НЕОПРЕДЕЛЕНО
	И ИСТИНА В
	 (	// Проверка права пользователя на таблицу Значения, установленного в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТИПЗНАЧЕНИЯ(ТаблицыГруппДоступаПроверкаПрава.ТипТаблицы) = ТИПЗНАЧЕНИЯ(Т.#Параметр(13))
		#Если Не "#Параметр(12)" = "ПравоЧтения" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли "#Параметр(12)" = "ПравоЧтенияПоИдентификатору" Или "#Параметр(12)" = "ПравоИзмененияПоИдентификатору" #Тогда
	  ИСТИНА В
	 (	// Проверка права пользователя на таблицу, идентификатор которой указан в Значении, установленном в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТаблицыГруппДоступаПроверкаПрава.Таблица = Т.#Параметр(13)
		#Если Не "#Параметр(12)" = "ПравоЧтенияПоИдентификатору" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется #Тогда
	// Группа параметров отключена.
#ИначеЕсли "#Параметр(12)" = "НастройкиПрав" #Тогда
	И
	 (
		ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = Т.#Параметр(13)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
		 И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено.
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = Т.#Параметр(13)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
	 )
#ИначеЕсли Не СтрСодержит(&amp;ВсеВидыДоступаКромеСпециальных, ",#Параметр(12),") #Тогда
	// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
	#Если СтрСодержит("#Параметр(12)", ",") #Тогда
		НеверныйВидДоступа: "#Параметр(12)" - "Список имен видов доступа не найден"
	#Иначе
		НеверныйВидДоступа: "#Параметр(12)" - "Имя вида доступа не найдено"
	#КонецЕсли
#ИначеЕсли &amp;ВидыДоступаСОтключеннымИспользованием &lt;&gt; "Все"
         И Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",#Параметр(12),") #Тогда
	И
	 (
			ЕСТЬNULL(Т.#Параметр(13), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
			И
		#Если (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")        И СтрСодержит(",#Параметр(12),", ",Пользователи,"))
		  Или (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") И СтрСодержит(",#Параметр(12),", ",ВнешниеПользователи,")) #Тогда
			НЕ
			(
			НЕ ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначенийДоступа
				ГДЕ
					  ГруппыЗначенийДоступа.ЗначениеДоступа       = Т.#Параметр(13)
					И ГруппыЗначенийДоступа.ГруппаЗначенийДоступа = &amp;АвторизованныйПользователь
				)
			И НЕ
		#Иначе
			(
		#КонецЕсли
			ВЫБОР
			КОГДА ИСТИНА В
				(
		#Если СтрСодержит(&amp;ВидыДоступаБезГруппДляЗначенияДоступа, ",#Параметр(12),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = Т.#Параметр(13)
		#ИначеЕсли "Т.#Параметр(13)" = "Т.Ссылка"
		         И "#Параметр(12)" &lt;&gt; "Пользователи"
		         И "#Параметр(12)" &lt;&gt; "ВнешниеПользователи" #Тогда
			#Если СтрСодержит("#Параметр(12)", ",") #Тогда
				// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
				НеверныйВидДоступа: "#Параметр(12)" - "При проверке таблицы значения доступа можно указывать только один вид доступа"
			#ИначеЕсли СтрСодержит(&amp;ВидыДоступаСОднойГруппойДляЗначенияДоступа, ",#Параметр(12),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = Т.ГруппаДоступа
			#Иначе // Значения доступа, для которых можно указать несколько групп значений доступа.
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ #Параметр(1).ГруппыДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаДоступа
					И ГруппыЗначений.Ссылка    = Т.#Параметр(13)
			#КонецЕсли
		#Иначе
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа         = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа       = ГруппыЗначений.ГруппаЗначенийДоступа
					И ГруппыЗначений.ЗначениеДоступа = Т.#Параметр(13)
		#КонецЕсли
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			=
			ВЫБОР
			КОГДА ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
				ГДЕ
				      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
				    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(Т.#Параметр(13))
				    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			)
	 )
#Иначе
	И ЕСТЬNULL(Т.#Параметр(13), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
#КонецЕсли

//// Проверка значения поля группы параметров 6.
#Если "#Параметр(14)" = "" И "#Параметр(15)" = "" #Тогда
	// Группа параметров не используется.
#ИначеЕсли &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется И ("#Параметр(14)" = "Условие" Или "#Параметр(14)" = "") #Тогда
	// Когда имя вида доступа "Условие" (или ""), тогда вместо имени поля задано условие.
	И ( #Параметр(15) )
#ИначеЕсли "#Параметр(14)" = "ПравоЧтения" Или "#Параметр(14)" = "ПравоИзменения" #Тогда
	И Т.#Параметр(15) &lt;&gt; НЕОПРЕДЕЛЕНО
	И ИСТИНА В
	 (	// Проверка права пользователя на таблицу Значения, установленного в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТИПЗНАЧЕНИЯ(ТаблицыГруппДоступаПроверкаПрава.ТипТаблицы) = ТИПЗНАЧЕНИЯ(Т.#Параметр(15))
		#Если Не "#Параметр(14)" = "ПравоЧтения" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли "#Параметр(14)" = "ПравоЧтенияПоИдентификатору" Или "#Параметр(14)" = "ПравоИзмененияПоИдентификатору" #Тогда
	  ИСТИНА В
	 (	// Проверка права пользователя на таблицу, идентификатор которой указан в Значении, установленном в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТаблицыГруппДоступаПроверкаПрава.Таблица = Т.#Параметр(15)
		#Если Не "#Параметр(14)" = "ПравоЧтенияПоИдентификатору" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется #Тогда
	// Группа параметров отключена.
#ИначеЕсли "#Параметр(14)" = "НастройкиПрав" #Тогда
	И
	 (
		ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = Т.#Параметр(15)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
		 И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено.
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = Т.#Параметр(15)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
	 )
#ИначеЕсли Не СтрСодержит(&amp;ВсеВидыДоступаКромеСпециальных, ",#Параметр(14),") #Тогда
	// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
	#Если СтрСодержит("#Параметр(14)", ",") #Тогда
		НеверныйВидДоступа: "#Параметр(14)" - "Список имен видов доступа не найден"
	#Иначе
		НеверныйВидДоступа: "#Параметр(14)" - "Имя вида доступа не найдено"
	#КонецЕсли
#ИначеЕсли &amp;ВидыДоступаСОтключеннымИспользованием &lt;&gt; "Все"
         И Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",#Параметр(14),") #Тогда
	И
	 (
			ЕСТЬNULL(Т.#Параметр(15), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
			И
		#Если (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")        И СтрСодержит(",#Параметр(14),", ",Пользователи,"))
		  Или (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") И СтрСодержит(",#Параметр(14),", ",ВнешниеПользователи,")) #Тогда
			НЕ
			(
			НЕ ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначенийДоступа
				ГДЕ
					  ГруппыЗначенийДоступа.ЗначениеДоступа       = Т.#Параметр(15)
					И ГруппыЗначенийДоступа.ГруппаЗначенийДоступа = &amp;АвторизованныйПользователь
				)
			И НЕ
		#Иначе
			(
		#КонецЕсли
			ВЫБОР
			КОГДА ИСТИНА В
				(
		#Если СтрСодержит(&amp;ВидыДоступаБезГруппДляЗначенияДоступа, ",#Параметр(14),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = Т.#Параметр(15)
		#ИначеЕсли "Т.#Параметр(15)" = "Т.Ссылка"
		         И "#Параметр(14)" &lt;&gt; "Пользователи"
		         И "#Параметр(14)" &lt;&gt; "ВнешниеПользователи" #Тогда
			#Если СтрСодержит("#Параметр(14)", ",") #Тогда
				// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
				НеверныйВидДоступа: "#Параметр(14)" - "При проверке таблицы значения доступа можно указывать только один вид доступа"
			#ИначеЕсли СтрСодержит(&amp;ВидыДоступаСОднойГруппойДляЗначенияДоступа, ",#Параметр(14),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = Т.ГруппаДоступа
			#Иначе // Значения доступа, для которых можно указать несколько групп значений доступа.
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ #Параметр(1).ГруппыДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаДоступа
					И ГруппыЗначений.Ссылка    = Т.#Параметр(15)
			#КонецЕсли
		#Иначе
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа         = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа       = ГруппыЗначений.ГруппаЗначенийДоступа
					И ГруппыЗначений.ЗначениеДоступа = Т.#Параметр(15)
		#КонецЕсли
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			=
			ВЫБОР
			КОГДА ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
				ГДЕ
				      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
				    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(Т.#Параметр(15))
				    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			)
	 )
#Иначе
	И ЕСТЬNULL(Т.#Параметр(15), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
#КонецЕсли

//// Проверка значения поля группы параметров 7.
#Если "#Параметр(16)" = "" И "#Параметр(17)" = "" #Тогда
	// Группа параметров не используется.
#ИначеЕсли &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется И ("#Параметр(16)" = "Условие" Или "#Параметр(16)" = "") #Тогда
	// Когда имя вида доступа "Условие" (или ""), тогда вместо имени поля задано условие.
	И ( #Параметр(17) )
#ИначеЕсли "#Параметр(16)" = "ПравоЧтения" Или "#Параметр(16)" = "ПравоИзменения" #Тогда
	И Т.#Параметр(17) &lt;&gt; НЕОПРЕДЕЛЕНО
	И ИСТИНА В
	 (	// Проверка права пользователя на таблицу Значения, установленного в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТИПЗНАЧЕНИЯ(ТаблицыГруппДоступаПроверкаПрава.ТипТаблицы) = ТИПЗНАЧЕНИЯ(Т.#Параметр(17))
		#Если Не "#Параметр(16)" = "ПравоЧтения" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли "#Параметр(16)" = "ПравоЧтенияПоИдентификатору" Или "#Параметр(16)" = "ПравоИзмененияПоИдентификатору" #Тогда
	  ИСТИНА В
	 (	// Проверка права пользователя на таблицу, идентификатор которой указан в Значении, установленном в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТаблицыГруппДоступаПроверкаПрава.Таблица = Т.#Параметр(17)
		#Если Не "#Параметр(16)" = "ПравоЧтенияПоИдентификатору" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется #Тогда
	// Группа параметров отключена.
#ИначеЕсли "#Параметр(16)" = "НастройкиПрав" #Тогда
	И
	 (
		ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = Т.#Параметр(17)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
		 И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено.
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = Т.#Параметр(17)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
	 )
#ИначеЕсли Не СтрСодержит(&amp;ВсеВидыДоступаКромеСпециальных, ",#Параметр(16),") #Тогда
	// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
	#Если СтрСодержит("#Параметр(16)", ",") #Тогда
		НеверныйВидДоступа: "#Параметр(16)" - "Список имен видов доступа не найден"
	#Иначе
		НеверныйВидДоступа: "#Параметр(16)" - "Имя вида доступа не найдено"
	#КонецЕсли
#ИначеЕсли &amp;ВидыДоступаСОтключеннымИспользованием &lt;&gt; "Все"
         И Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",#Параметр(16),") #Тогда
	И
	 (
			ЕСТЬNULL(Т.#Параметр(17), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
			И
		#Если (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")        И СтрСодержит(",#Параметр(16),", ",Пользователи,"))
		  Или (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") И СтрСодержит(",#Параметр(16),", ",ВнешниеПользователи,")) #Тогда
			НЕ
			(
			НЕ ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначенийДоступа
				ГДЕ
					  ГруппыЗначенийДоступа.ЗначениеДоступа       = Т.#Параметр(17)
					И ГруппыЗначенийДоступа.ГруппаЗначенийДоступа = &amp;АвторизованныйПользователь
				)
			И НЕ
		#Иначе
			(
		#КонецЕсли
			ВЫБОР
			КОГДА ИСТИНА В
				(
		#Если СтрСодержит(&amp;ВидыДоступаБезГруппДляЗначенияДоступа, ",#Параметр(16),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = Т.#Параметр(17)
		#ИначеЕсли "Т.#Параметр(17)" = "Т.Ссылка"
		         И "#Параметр(16)" &lt;&gt; "Пользователи"
		         И "#Параметр(16)" &lt;&gt; "ВнешниеПользователи" #Тогда
			#Если СтрСодержит("#Параметр(16)", ",") #Тогда
				// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
				НеверныйВидДоступа: "#Параметр(16)" - "При проверке таблицы значения доступа можно указывать только один вид доступа"
			#ИначеЕсли СтрСодержит(&amp;ВидыДоступаСОднойГруппойДляЗначенияДоступа, ",#Параметр(16),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = Т.ГруппаДоступа
			#Иначе // Значения доступа, для которых можно указать несколько групп значений доступа.
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ #Параметр(1).ГруппыДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаДоступа
					И ГруппыЗначений.Ссылка    = Т.#Параметр(17)
			#КонецЕсли
		#Иначе
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа         = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа       = ГруппыЗначений.ГруппаЗначенийДоступа
					И ГруппыЗначений.ЗначениеДоступа = Т.#Параметр(17)
		#КонецЕсли
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			=
			ВЫБОР
			КОГДА ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
				ГДЕ
				      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
				    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(Т.#Параметр(17))
				    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			)
	 )
#Иначе
	И ЕСТЬNULL(Т.#Параметр(17), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
#КонецЕсли

//// Проверка значения поля группы параметров 8.
#Если "#Параметр(18)" = "" И "#Параметр(19)" = "" #Тогда
	// Группа параметров не используется.
#ИначеЕсли &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется И ("#Параметр(18)" = "Условие" Или "#Параметр(18)" = "") #Тогда
	// Когда имя вида доступа "Условие" (или ""), тогда вместо имени поля задано условие.
	И ( #Параметр(19) )
#ИначеЕсли "#Параметр(18)" = "ПравоЧтения" Или "#Параметр(18)" = "ПравоИзменения" #Тогда
	И Т.#Параметр(19) &lt;&gt; НЕОПРЕДЕЛЕНО
	И ИСТИНА В
	 (	// Проверка права пользователя на таблицу Значения, установленного в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТИПЗНАЧЕНИЯ(ТаблицыГруппДоступаПроверкаПрава.ТипТаблицы) = ТИПЗНАЧЕНИЯ(Т.#Параметр(19))
		#Если Не "#Параметр(18)" = "ПравоЧтения" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли "#Параметр(18)" = "ПравоЧтенияПоИдентификатору" Или "#Параметр(18)" = "ПравоИзмененияПоИдентификатору" #Тогда
	  ИСТИНА В
	 (	// Проверка права пользователя на таблицу, идентификатор которой указан в Значении, установленном в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТаблицыГруппДоступаПроверкаПрава.Таблица = Т.#Параметр(19)
		#Если Не "#Параметр(18)" = "ПравоЧтенияПоИдентификатору" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется #Тогда
	// Группа параметров отключена.
#ИначеЕсли "#Параметр(18)" = "НастройкиПрав" #Тогда
	И
	 (
		ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = Т.#Параметр(19)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
		 И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено.
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = Т.#Параметр(19)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
	 )
#ИначеЕсли Не СтрСодержит(&amp;ВсеВидыДоступаКромеСпециальных, ",#Параметр(18),") #Тогда
	// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
	#Если СтрСодержит("#Параметр(18)", ",") #Тогда
		НеверныйВидДоступа: "#Параметр(18)" - "Список имен видов доступа не найден"
	#Иначе
		НеверныйВидДоступа: "#Параметр(18)" - "Имя вида доступа не найдено"
	#КонецЕсли
#ИначеЕсли &amp;ВидыДоступаСОтключеннымИспользованием &lt;&gt; "Все"
         И Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",#Параметр(18),") #Тогда
	И
	 (
			ЕСТЬNULL(Т.#Параметр(19), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
			И
		#Если (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")        И СтрСодержит(",#Параметр(18),", ",Пользователи,"))
		  Или (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") И СтрСодержит(",#Параметр(18),", ",ВнешниеПользователи,")) #Тогда
			НЕ
			(
			НЕ ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначенийДоступа
				ГДЕ
					  ГруппыЗначенийДоступа.ЗначениеДоступа       = Т.#Параметр(19)
					И ГруппыЗначенийДоступа.ГруппаЗначенийДоступа = &amp;АвторизованныйПользователь
				)
			И НЕ
		#Иначе
			(
		#КонецЕсли
			ВЫБОР
			КОГДА ИСТИНА В
				(
		#Если СтрСодержит(&amp;ВидыДоступаБезГруппДляЗначенияДоступа, ",#Параметр(18),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = Т.#Параметр(19)
		#ИначеЕсли "Т.#Параметр(19)" = "Т.Ссылка"
		         И "#Параметр(18)" &lt;&gt; "Пользователи"
		         И "#Параметр(18)" &lt;&gt; "ВнешниеПользователи" #Тогда
			#Если СтрСодержит("#Параметр(18)", ",") #Тогда
				// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
				НеверныйВидДоступа: "#Параметр(18)" - "При проверке таблицы значения доступа можно указывать только один вид доступа"
			#ИначеЕсли СтрСодержит(&amp;ВидыДоступаСОднойГруппойДляЗначенияДоступа, ",#Параметр(18),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = Т.ГруппаДоступа
			#Иначе // Значения доступа, для которых можно указать несколько групп значений доступа.
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ #Параметр(1).ГруппыДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаДоступа
					И ГруппыЗначений.Ссылка    = Т.#Параметр(19)
			#КонецЕсли
		#Иначе
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа         = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа       = ГруппыЗначений.ГруппаЗначенийДоступа
					И ГруппыЗначений.ЗначениеДоступа = Т.#Параметр(19)
		#КонецЕсли
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			=
			ВЫБОР
			КОГДА ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
				ГДЕ
				      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
				    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(Т.#Параметр(19))
				    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			)
	 )
#Иначе
	И ЕСТЬNULL(Т.#Параметр(19), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
#КонецЕсли

//// Проверка значения поля группы параметров 9.
#Если "#Параметр(20)" = "" И "#Параметр(21)" = "" #Тогда
	// Группа параметров не используется.
#ИначеЕсли &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется И ("#Параметр(20)" = "Условие" Или "#Параметр(20)" = "") #Тогда
	// Когда имя вида доступа "Условие" (или ""), тогда вместо имени поля задано условие.
	И ( #Параметр(21) )
#ИначеЕсли "#Параметр(20)" = "ПравоЧтения" Или "#Параметр(20)" = "ПравоИзменения" #Тогда
	И Т.#Параметр(21) &lt;&gt; НЕОПРЕДЕЛЕНО
	И ИСТИНА В
	 (	// Проверка права пользователя на таблицу Значения, установленного в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТИПЗНАЧЕНИЯ(ТаблицыГруппДоступаПроверкаПрава.ТипТаблицы) = ТИПЗНАЧЕНИЯ(Т.#Параметр(21))
		#Если Не "#Параметр(20)" = "ПравоЧтения" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли "#Параметр(20)" = "ПравоЧтенияПоИдентификатору" Или "#Параметр(20)" = "ПравоИзмененияПоИдентификатору" #Тогда
	  ИСТИНА В
	 (	// Проверка права пользователя на таблицу, идентификатор которой указан в Значении, установленном в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТаблицыГруппДоступаПроверкаПрава.Таблица = Т.#Параметр(21)
		#Если Не "#Параметр(20)" = "ПравоЧтенияПоИдентификатору" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется #Тогда
	// Группа параметров отключена.
#ИначеЕсли "#Параметр(20)" = "НастройкиПрав" #Тогда
	И
	 (
		ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = Т.#Параметр(21)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
		 И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено.
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = Т.#Параметр(21)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
	 )
#ИначеЕсли Не СтрСодержит(&amp;ВсеВидыДоступаКромеСпециальных, ",#Параметр(20),") #Тогда
	// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
	#Если СтрСодержит("#Параметр(20)", ",") #Тогда
		НеверныйВидДоступа: "#Параметр(20)" - "Список имен видов доступа не найден"
	#Иначе
		НеверныйВидДоступа: "#Параметр(20)" - "Имя вида доступа не найдено"
	#КонецЕсли
#ИначеЕсли &amp;ВидыДоступаСОтключеннымИспользованием &lt;&gt; "Все"
         И Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",#Параметр(20),") #Тогда
	И
	 (
			ЕСТЬNULL(Т.#Параметр(21), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
			И
		#Если (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")        И СтрСодержит(",#Параметр(20),", ",Пользователи,"))
		  Или (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") И СтрСодержит(",#Параметр(20),", ",ВнешниеПользователи,")) #Тогда
			НЕ
			(
			НЕ ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначенийДоступа
				ГДЕ
					  ГруппыЗначенийДоступа.ЗначениеДоступа       = Т.#Параметр(21)
					И ГруппыЗначенийДоступа.ГруппаЗначенийДоступа = &amp;АвторизованныйПользователь
				)
			И НЕ
		#Иначе
			(
		#КонецЕсли
			ВЫБОР
			КОГДА ИСТИНА В
				(
		#Если СтрСодержит(&amp;ВидыДоступаБезГруппДляЗначенияДоступа, ",#Параметр(20),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = Т.#Параметр(21)
		#ИначеЕсли "Т.#Параметр(21)" = "Т.Ссылка"
		         И "#Параметр(20)" &lt;&gt; "Пользователи"
		         И "#Параметр(20)" &lt;&gt; "ВнешниеПользователи" #Тогда
			#Если СтрСодержит("#Параметр(20)", ",") #Тогда
				// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
				НеверныйВидДоступа: "#Параметр(20)" - "При проверке таблицы значения доступа можно указывать только один вид доступа"
			#ИначеЕсли СтрСодержит(&amp;ВидыДоступаСОднойГруппойДляЗначенияДоступа, ",#Параметр(20),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = Т.ГруппаДоступа
			#Иначе // Значения доступа, для которых можно указать несколько групп значений доступа.
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ #Параметр(1).ГруппыДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаДоступа
					И ГруппыЗначений.Ссылка    = Т.#Параметр(21)
			#КонецЕсли
		#Иначе
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа         = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа       = ГруппыЗначений.ГруппаЗначенийДоступа
					И ГруппыЗначений.ЗначениеДоступа = Т.#Параметр(21)
		#КонецЕсли
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			=
			ВЫБОР
			КОГДА ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
				ГДЕ
				      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
				    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(Т.#Параметр(21))
				    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			)
	 )
#Иначе
	И ЕСТЬNULL(Т.#Параметр(21), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
#КонецЕсли

//// Проверка значения поля группы параметров 10.
#Если "#Параметр(22)" = "" И "#Параметр(23)" = "" #Тогда
	// Группа параметров не используется.
#ИначеЕсли &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется И ("#Параметр(22)" = "Условие" Или "#Параметр(22)" = "") #Тогда
	// Когда имя вида доступа "Условие" (или ""), тогда вместо имени поля задано условие.
	И ( #Параметр(23) )
#ИначеЕсли "#Параметр(22)" = "ПравоЧтения" Или "#Параметр(22)" = "ПравоИзменения" #Тогда
	И Т.#Параметр(23) &lt;&gt; НЕОПРЕДЕЛЕНО
	И ИСТИНА В
	 (	// Проверка права пользователя на таблицу Значения, установленного в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТИПЗНАЧЕНИЯ(ТаблицыГруппДоступаПроверкаПрава.ТипТаблицы) = ТИПЗНАЧЕНИЯ(Т.#Параметр(23))
		#Если Не "#Параметр(22)" = "ПравоЧтения" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли "#Параметр(22)" = "ПравоЧтенияПоИдентификатору" Или "#Параметр(22)" = "ПравоИзмененияПоИдентификатору" #Тогда
	  ИСТИНА В
	 (	// Проверка права пользователя на таблицу, идентификатор которой указан в Значении, установленном в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТаблицыГруппДоступаПроверкаПрава.Таблица = Т.#Параметр(23)
		#Если Не "#Параметр(22)" = "ПравоЧтенияПоИдентификатору" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется #Тогда
	// Группа параметров отключена.
#ИначеЕсли "#Параметр(22)" = "НастройкиПрав" #Тогда
	И
	 (
		ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = Т.#Параметр(23)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
		 И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено.
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = Т.#Параметр(23)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
	 )
#ИначеЕсли Не СтрСодержит(&amp;ВсеВидыДоступаКромеСпециальных, ",#Параметр(22),") #Тогда
	// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
	#Если СтрСодержит("#Параметр(22)", ",") #Тогда
		НеверныйВидДоступа: "#Параметр(22)" - "Список имен видов доступа не найден"
	#Иначе
		НеверныйВидДоступа: "#Параметр(22)" - "Имя вида доступа не найдено"
	#КонецЕсли
#ИначеЕсли &amp;ВидыДоступаСОтключеннымИспользованием &lt;&gt; "Все"
         И Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",#Параметр(22),") #Тогда
	И
	 (
			ЕСТЬNULL(Т.#Параметр(23), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
			И
		#Если (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")        И СтрСодержит(",#Параметр(22),", ",Пользователи,"))
		  Или (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") И СтрСодержит(",#Параметр(22),", ",ВнешниеПользователи,")) #Тогда
			НЕ
			(
			НЕ ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначенийДоступа
				ГДЕ
					  ГруппыЗначенийДоступа.ЗначениеДоступа       = Т.#Параметр(23)
					И ГруппыЗначенийДоступа.ГруппаЗначенийДоступа = &amp;АвторизованныйПользователь
				)
			И НЕ
		#Иначе
			(
		#КонецЕсли
			ВЫБОР
			КОГДА ИСТИНА В
				(
		#Если СтрСодержит(&amp;ВидыДоступаБезГруппДляЗначенияДоступа, ",#Параметр(22),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = Т.#Параметр(23)
		#ИначеЕсли "Т.#Параметр(23)" = "Т.Ссылка"
		         И "#Параметр(22)" &lt;&gt; "Пользователи"
		         И "#Параметр(22)" &lt;&gt; "ВнешниеПользователи" #Тогда
			#Если СтрСодержит("#Параметр(22)", ",") #Тогда
				// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
				НеверныйВидДоступа: "#Параметр(22)" - "При проверке таблицы значения доступа можно указывать только один вид доступа"
			#ИначеЕсли СтрСодержит(&amp;ВидыДоступаСОднойГруппойДляЗначенияДоступа, ",#Параметр(22),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = Т.ГруппаДоступа
			#Иначе // Значения доступа, для которых можно указать несколько групп значений доступа.
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ #Параметр(1).ГруппыДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаДоступа
					И ГруппыЗначений.Ссылка    = Т.#Параметр(23)
			#КонецЕсли
		#Иначе
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа         = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа       = ГруппыЗначений.ГруппаЗначенийДоступа
					И ГруппыЗначений.ЗначениеДоступа = Т.#Параметр(23)
		#КонецЕсли
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			=
			ВЫБОР
			КОГДА ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
				ГДЕ
				      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
				    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(Т.#Параметр(23))
				    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			)
	 )
#Иначе
	И ЕСТЬNULL(Т.#Параметр(23), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
#КонецЕсли

//// Проверка значения поля группы параметров 11.
#Если "#Параметр(24)" = "" И "#Параметр(25)" = "" #Тогда
	// Группа параметров не используется.
#ИначеЕсли &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется И ("#Параметр(24)" = "Условие" Или "#Параметр(24)" = "") #Тогда
	// Когда имя вида доступа "Условие" (или ""), тогда вместо имени поля задано условие.
	И ( #Параметр(25) )
#ИначеЕсли "#Параметр(24)" = "ПравоЧтения" Или "#Параметр(24)" = "ПравоИзменения" #Тогда
	И Т.#Параметр(25) &lt;&gt; НЕОПРЕДЕЛЕНО
	И ИСТИНА В
	 (	// Проверка права пользователя на таблицу Значения, установленного в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТИПЗНАЧЕНИЯ(ТаблицыГруппДоступаПроверкаПрава.ТипТаблицы) = ТИПЗНАЧЕНИЯ(Т.#Параметр(25))
		#Если Не "#Параметр(24)" = "ПравоЧтения" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли "#Параметр(24)" = "ПравоЧтенияПоИдентификатору" Или "#Параметр(24)" = "ПравоИзмененияПоИдентификатору" #Тогда
	  ИСТИНА В
	 (	// Проверка права пользователя на таблицу, идентификатор которой указан в Значении, установленном в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТаблицыГруппДоступаПроверкаПрава.Таблица = Т.#Параметр(25)
		#Если Не "#Параметр(24)" = "ПравоЧтенияПоИдентификатору" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется #Тогда
	// Группа параметров отключена.
#ИначеЕсли "#Параметр(24)" = "НастройкиПрав" #Тогда
	И
	 (
		ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = Т.#Параметр(25)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
		 И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено.
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = Т.#Параметр(25)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
	 )
#ИначеЕсли Не СтрСодержит(&amp;ВсеВидыДоступаКромеСпециальных, ",#Параметр(24),") #Тогда
	// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
	#Если СтрСодержит("#Параметр(24)", ",") #Тогда
		НеверныйВидДоступа: "#Параметр(24)" - "Список имен видов доступа не найден"
	#Иначе
		НеверныйВидДоступа: "#Параметр(24)" - "Имя вида доступа не найдено"
	#КонецЕсли
#ИначеЕсли &amp;ВидыДоступаСОтключеннымИспользованием &lt;&gt; "Все"
         И Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",#Параметр(24),") #Тогда
	И
	 (
			ЕСТЬNULL(Т.#Параметр(25), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
			И
		#Если (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")        И СтрСодержит(",#Параметр(24),", ",Пользователи,"))
		  Или (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") И СтрСодержит(",#Параметр(24),", ",ВнешниеПользователи,")) #Тогда
			НЕ
			(
			НЕ ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначенийДоступа
				ГДЕ
					  ГруппыЗначенийДоступа.ЗначениеДоступа       = Т.#Параметр(25)
					И ГруппыЗначенийДоступа.ГруппаЗначенийДоступа = &amp;АвторизованныйПользователь
				)
			И НЕ
		#Иначе
			(
		#КонецЕсли
			ВЫБОР
			КОГДА ИСТИНА В
				(
		#Если СтрСодержит(&amp;ВидыДоступаБезГруппДляЗначенияДоступа, ",#Параметр(24),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = Т.#Параметр(25)
		#ИначеЕсли "Т.#Параметр(25)" = "Т.Ссылка"
		         И "#Параметр(24)" &lt;&gt; "Пользователи"
		         И "#Параметр(24)" &lt;&gt; "ВнешниеПользователи" #Тогда
			#Если СтрСодержит("#Параметр(24)", ",") #Тогда
				// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
				НеверныйВидДоступа: "#Параметр(24)" - "При проверке таблицы значения доступа можно указывать только один вид доступа"
			#ИначеЕсли СтрСодержит(&amp;ВидыДоступаСОднойГруппойДляЗначенияДоступа, ",#Параметр(24),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = Т.ГруппаДоступа
			#Иначе // Значения доступа, для которых можно указать несколько групп значений доступа.
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ #Параметр(1).ГруппыДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаДоступа
					И ГруппыЗначений.Ссылка    = Т.#Параметр(25)
			#КонецЕсли
		#Иначе
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа         = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа       = ГруппыЗначений.ГруппаЗначенийДоступа
					И ГруппыЗначений.ЗначениеДоступа = Т.#Параметр(25)
		#КонецЕсли
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			=
			ВЫБОР
			КОГДА ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
				ГДЕ
				      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
				    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(Т.#Параметр(25))
				    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			)
	 )
#Иначе
	И ЕСТЬNULL(Т.#Параметр(25), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
#КонецЕсли

//// Проверка значения поля группы параметров 12.
#Если "#Параметр(26)" = "" И "#Параметр(27)" = "" #Тогда
	// Группа параметров не используется.
#ИначеЕсли &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется И ("#Параметр(26)" = "Условие" Или "#Параметр(26)" = "") #Тогда
	// Когда имя вида доступа "Условие" (или ""), тогда вместо имени поля задано условие.
	И ( #Параметр(27) )
#ИначеЕсли "#Параметр(26)" = "ПравоЧтения" Или "#Параметр(26)" = "ПравоИзменения" #Тогда
	И Т.#Параметр(27) &lt;&gt; НЕОПРЕДЕЛЕНО
	И ИСТИНА В
	 (	// Проверка права пользователя на таблицу Значения, установленного в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТИПЗНАЧЕНИЯ(ТаблицыГруппДоступаПроверкаПрава.ТипТаблицы) = ТИПЗНАЧЕНИЯ(Т.#Параметр(27))
		#Если Не "#Параметр(26)" = "ПравоЧтения" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли "#Параметр(26)" = "ПравоЧтенияПоИдентификатору" Или "#Параметр(26)" = "ПравоИзмененияПоИдентификатору" #Тогда
	  ИСТИНА В
	 (	// Проверка права пользователя на таблицу, идентификатор которой указан в Значении, установленном в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТаблицыГруппДоступаПроверкаПрава.Таблица = Т.#Параметр(27)
		#Если Не "#Параметр(26)" = "ПравоЧтенияПоИдентификатору" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется #Тогда
	// Группа параметров отключена.
#ИначеЕсли "#Параметр(26)" = "НастройкиПрав" #Тогда
	И
	 (
		ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = Т.#Параметр(27)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
		 И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено.
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = Т.#Параметр(27)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
	 )
#ИначеЕсли Не СтрСодержит(&amp;ВсеВидыДоступаКромеСпециальных, ",#Параметр(26),") #Тогда
	// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
	#Если СтрСодержит("#Параметр(26)", ",") #Тогда
		НеверныйВидДоступа: "#Параметр(26)" - "Список имен видов доступа не найден"
	#Иначе
		НеверныйВидДоступа: "#Параметр(26)" - "Имя вида доступа не найдено"
	#КонецЕсли
#ИначеЕсли &amp;ВидыДоступаСОтключеннымИспользованием &lt;&gt; "Все"
         И Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",#Параметр(26),") #Тогда
	И
	 (
			ЕСТЬNULL(Т.#Параметр(27), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
			И
		#Если (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")        И СтрСодержит(",#Параметр(26),", ",Пользователи,"))
		  Или (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") И СтрСодержит(",#Параметр(26),", ",ВнешниеПользователи,")) #Тогда
			НЕ
			(
			НЕ ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначенийДоступа
				ГДЕ
					  ГруппыЗначенийДоступа.ЗначениеДоступа       = Т.#Параметр(27)
					И ГруппыЗначенийДоступа.ГруппаЗначенийДоступа = &amp;АвторизованныйПользователь
				)
			И НЕ
		#Иначе
			(
		#КонецЕсли
			ВЫБОР
			КОГДА ИСТИНА В
				(
		#Если СтрСодержит(&amp;ВидыДоступаБезГруппДляЗначенияДоступа, ",#Параметр(26),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = Т.#Параметр(27)
		#ИначеЕсли "Т.#Параметр(27)" = "Т.Ссылка"
		         И "#Параметр(26)" &lt;&gt; "Пользователи"
		         И "#Параметр(26)" &lt;&gt; "ВнешниеПользователи" #Тогда
			#Если СтрСодержит("#Параметр(26)", ",") #Тогда
				// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
				НеверныйВидДоступа: "#Параметр(26)" - "При проверке таблицы значения доступа можно указывать только один вид доступа"
			#ИначеЕсли СтрСодержит(&amp;ВидыДоступаСОднойГруппойДляЗначенияДоступа, ",#Параметр(26),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = Т.ГруппаДоступа
			#Иначе // Значения доступа, для которых можно указать несколько групп значений доступа.
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ #Параметр(1).ГруппыДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаДоступа
					И ГруппыЗначений.Ссылка    = Т.#Параметр(27)
			#КонецЕсли
		#Иначе
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа         = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа       = ГруппыЗначений.ГруппаЗначенийДоступа
					И ГруппыЗначений.ЗначениеДоступа = Т.#Параметр(27)
		#КонецЕсли
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			=
			ВЫБОР
			КОГДА ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
				ГДЕ
				      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
				    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(Т.#Параметр(27))
				    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			)
	 )
#Иначе
	И ЕСТЬNULL(Т.#Параметр(27), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
#КонецЕсли

//// Проверка значения поля группы параметров 13.
#Если "#Параметр(28)" = "" И "#Параметр(29)" = "" #Тогда
	// Группа параметров не используется.
#ИначеЕсли &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется И ("#Параметр(28)" = "Условие" Или "#Параметр(28)" = "") #Тогда
	// Когда имя вида доступа "Условие" (или ""), тогда вместо имени поля задано условие.
	И ( #Параметр(29) )
#ИначеЕсли "#Параметр(28)" = "ПравоЧтения" Или "#Параметр(28)" = "ПравоИзменения" #Тогда
	И Т.#Параметр(29) &lt;&gt; НЕОПРЕДЕЛЕНО
	И ИСТИНА В
	 (	// Проверка права пользователя на таблицу Значения, установленного в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТИПЗНАЧЕНИЯ(ТаблицыГруппДоступаПроверкаПрава.ТипТаблицы) = ТИПЗНАЧЕНИЯ(Т.#Параметр(29))
		#Если Не "#Параметр(28)" = "ПравоЧтения" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли "#Параметр(28)" = "ПравоЧтенияПоИдентификатору" Или "#Параметр(28)" = "ПравоИзмененияПоИдентификатору" #Тогда
	  ИСТИНА В
	 (	// Проверка права пользователя на таблицу, идентификатор которой указан в Значении, установленном в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТаблицыГруппДоступаПроверкаПрава.Таблица = Т.#Параметр(29)
		#Если Не "#Параметр(28)" = "ПравоЧтенияПоИдентификатору" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется #Тогда
	// Группа параметров отключена.
#ИначеЕсли "#Параметр(28)" = "НастройкиПрав" #Тогда
	И
	 (
		ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = Т.#Параметр(29)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
		 И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено.
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = Т.#Параметр(29)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
	 )
#ИначеЕсли Не СтрСодержит(&amp;ВсеВидыДоступаКромеСпециальных, ",#Параметр(28),") #Тогда
	// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
	#Если СтрСодержит("#Параметр(28)", ",") #Тогда
		НеверныйВидДоступа: "#Параметр(28)" - "Список имен видов доступа не найден"
	#Иначе
		НеверныйВидДоступа: "#Параметр(28)" - "Имя вида доступа не найдено"
	#КонецЕсли
#ИначеЕсли &amp;ВидыДоступаСОтключеннымИспользованием &lt;&gt; "Все"
         И Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",#Параметр(28),") #Тогда
	И
	 (
			ЕСТЬNULL(Т.#Параметр(29), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
			И
		#Если (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")        И СтрСодержит(",#Параметр(28),", ",Пользователи,"))
		  Или (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") И СтрСодержит(",#Параметр(28),", ",ВнешниеПользователи,")) #Тогда
			НЕ
			(
			НЕ ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначенийДоступа
				ГДЕ
					  ГруппыЗначенийДоступа.ЗначениеДоступа       = Т.#Параметр(29)
					И ГруппыЗначенийДоступа.ГруппаЗначенийДоступа = &amp;АвторизованныйПользователь
				)
			И НЕ
		#Иначе
			(
		#КонецЕсли
			ВЫБОР
			КОГДА ИСТИНА В
				(
		#Если СтрСодержит(&amp;ВидыДоступаБезГруппДляЗначенияДоступа, ",#Параметр(28),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = Т.#Параметр(29)
		#ИначеЕсли "Т.#Параметр(29)" = "Т.Ссылка"
		         И "#Параметр(28)" &lt;&gt; "Пользователи"
		         И "#Параметр(28)" &lt;&gt; "ВнешниеПользователи" #Тогда
			#Если СтрСодержит("#Параметр(28)", ",") #Тогда
				// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
				НеверныйВидДоступа: "#Параметр(28)" - "При проверке таблицы значения доступа можно указывать только один вид доступа"
			#ИначеЕсли СтрСодержит(&amp;ВидыДоступаСОднойГруппойДляЗначенияДоступа, ",#Параметр(28),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = Т.ГруппаДоступа
			#Иначе // Значения доступа, для которых можно указать несколько групп значений доступа.
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ #Параметр(1).ГруппыДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаДоступа
					И ГруппыЗначений.Ссылка    = Т.#Параметр(29)
			#КонецЕсли
		#Иначе
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа         = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа       = ГруппыЗначений.ГруппаЗначенийДоступа
					И ГруппыЗначений.ЗначениеДоступа = Т.#Параметр(29)
		#КонецЕсли
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			=
			ВЫБОР
			КОГДА ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
				ГДЕ
				      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
				    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(Т.#Параметр(29))
				    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			)
	 )
#Иначе
	И ЕСТЬNULL(Т.#Параметр(29), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
#КонецЕсли

//// Проверка значения поля группы параметров 14.
#Если "#Параметр(30)" = "" И "#Параметр(31)" = "" #Тогда
	// Группа параметров не используется.
#ИначеЕсли &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется И ("#Параметр(30)" = "Условие" Или "#Параметр(30)" = "") #Тогда
	// Когда имя вида доступа "Условие" (или ""), тогда вместо имени поля задано условие.
	И ( #Параметр(31) )
#ИначеЕсли "#Параметр(30)" = "ПравоЧтения" Или "#Параметр(30)" = "ПравоИзменения" #Тогда
	И Т.#Параметр(31) &lt;&gt; НЕОПРЕДЕЛЕНО
	И ИСТИНА В
	 (	// Проверка права пользователя на таблицу Значения, установленного в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТИПЗНАЧЕНИЯ(ТаблицыГруппДоступаПроверкаПрава.ТипТаблицы) = ТИПЗНАЧЕНИЯ(Т.#Параметр(31))
		#Если Не "#Параметр(30)" = "ПравоЧтения" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли "#Параметр(30)" = "ПравоЧтенияПоИдентификатору" Или "#Параметр(30)" = "ПравоИзмененияПоИдентификатору" #Тогда
	  ИСТИНА В
	 (	// Проверка права пользователя на таблицу, идентификатор которой указан в Значении, установленном в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТаблицыГруппДоступаПроверкаПрава.Таблица = Т.#Параметр(31)
		#Если Не "#Параметр(30)" = "ПравоЧтенияПоИдентификатору" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется #Тогда
	// Группа параметров отключена.
#ИначеЕсли "#Параметр(30)" = "НастройкиПрав" #Тогда
	И
	 (
		ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = Т.#Параметр(31)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
		 И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено.
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = Т.#Параметр(31)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
	 )
#ИначеЕсли Не СтрСодержит(&amp;ВсеВидыДоступаКромеСпециальных, ",#Параметр(30),") #Тогда
	// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
	#Если СтрСодержит("#Параметр(30)", ",") #Тогда
		НеверныйВидДоступа: "#Параметр(30)" - "Список имен видов доступа не найден"
	#Иначе
		НеверныйВидДоступа: "#Параметр(30)" - "Имя вида доступа не найдено"
	#КонецЕсли
#ИначеЕсли &amp;ВидыДоступаСОтключеннымИспользованием &lt;&gt; "Все"
         И Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",#Параметр(30),") #Тогда
	И
	 (
			ЕСТЬNULL(Т.#Параметр(31), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
			И
		#Если (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")        И СтрСодержит(",#Параметр(30),", ",Пользователи,"))
		  Или (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") И СтрСодержит(",#Параметр(30),", ",ВнешниеПользователи,")) #Тогда
			НЕ
			(
			НЕ ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначенийДоступа
				ГДЕ
					  ГруппыЗначенийДоступа.ЗначениеДоступа       = Т.#Параметр(31)
					И ГруппыЗначенийДоступа.ГруппаЗначенийДоступа = &amp;АвторизованныйПользователь
				)
			И НЕ
		#Иначе
			(
		#КонецЕсли
			ВЫБОР
			КОГДА ИСТИНА В
				(
		#Если СтрСодержит(&amp;ВидыДоступаБезГруппДляЗначенияДоступа, ",#Параметр(30),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = Т.#Параметр(31)
		#ИначеЕсли "Т.#Параметр(31)" = "Т.Ссылка"
		         И "#Параметр(30)" &lt;&gt; "Пользователи"
		         И "#Параметр(30)" &lt;&gt; "ВнешниеПользователи" #Тогда
			#Если СтрСодержит("#Параметр(30)", ",") #Тогда
				// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
				НеверныйВидДоступа: "#Параметр(30)" - "При проверке таблицы значения доступа можно указывать только один вид доступа"
			#ИначеЕсли СтрСодержит(&amp;ВидыДоступаСОднойГруппойДляЗначенияДоступа, ",#Параметр(30),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = Т.ГруппаДоступа
			#Иначе // Значения доступа, для которых можно указать несколько групп значений доступа.
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ #Параметр(1).ГруппыДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаДоступа
					И ГруппыЗначений.Ссылка    = Т.#Параметр(31)
			#КонецЕсли
		#Иначе
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа         = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа       = ГруппыЗначений.ГруппаЗначенийДоступа
					И ГруппыЗначений.ЗначениеДоступа = Т.#Параметр(31)
		#КонецЕсли
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			=
			ВЫБОР
			КОГДА ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
				ГДЕ
				      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
				    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(Т.#Параметр(31))
				    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			)
	 )
#Иначе
	И ЕСТЬNULL(Т.#Параметр(31), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
#КонецЕсли

//// Проверка значения поля группы параметров 15.
#Если "#Параметр(32)" = "" И "#Параметр(33)" = "" #Тогда
	// Группа параметров не используется.
#ИначеЕсли &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется И ("#Параметр(32)" = "Условие" Или "#Параметр(32)" = "") #Тогда
	// Когда имя вида доступа "Условие" (или ""), тогда вместо имени поля задано условие.
	И ( #Параметр(33) )
#ИначеЕсли "#Параметр(32)" = "ПравоЧтения" Или "#Параметр(32)" = "ПравоИзменения" #Тогда
	И Т.#Параметр(33) &lt;&gt; НЕОПРЕДЕЛЕНО
	И ИСТИНА В
	 (	// Проверка права пользователя на таблицу Значения, установленного в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТИПЗНАЧЕНИЯ(ТаблицыГруппДоступаПроверкаПрава.ТипТаблицы) = ТИПЗНАЧЕНИЯ(Т.#Параметр(33))
		#Если Не "#Параметр(32)" = "ПравоЧтения" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли "#Параметр(32)" = "ПравоЧтенияПоИдентификатору" Или "#Параметр(32)" = "ПравоИзмененияПоИдентификатору" #Тогда
	  ИСТИНА В
	 (	// Проверка права пользователя на таблицу, идентификатор которой указан в Значении, установленном в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТаблицыГруппДоступаПроверкаПрава.Таблица = Т.#Параметр(33)
		#Если Не "#Параметр(32)" = "ПравоЧтенияПоИдентификатору" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется #Тогда
	// Группа параметров отключена.
#ИначеЕсли "#Параметр(32)" = "НастройкиПрав" #Тогда
	И
	 (
		ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = Т.#Параметр(33)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
		 И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено.
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = Т.#Параметр(33)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
	 )
#ИначеЕсли Не СтрСодержит(&amp;ВсеВидыДоступаКромеСпециальных, ",#Параметр(32),") #Тогда
	// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
	#Если СтрСодержит("#Параметр(32)", ",") #Тогда
		НеверныйВидДоступа: "#Параметр(32)" - "Список имен видов доступа не найден"
	#Иначе
		НеверныйВидДоступа: "#Параметр(32)" - "Имя вида доступа не найдено"
	#КонецЕсли
#ИначеЕсли &amp;ВидыДоступаСОтключеннымИспользованием &lt;&gt; "Все"
         И Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",#Параметр(32),") #Тогда
	И
	 (
			ЕСТЬNULL(Т.#Параметр(33), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
			И
		#Если (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")        И СтрСодержит(",#Параметр(32),", ",Пользователи,"))
		  Или (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") И СтрСодержит(",#Параметр(32),", ",ВнешниеПользователи,")) #Тогда
			НЕ
			(
			НЕ ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначенийДоступа
				ГДЕ
					  ГруппыЗначенийДоступа.ЗначениеДоступа       = Т.#Параметр(33)
					И ГруппыЗначенийДоступа.ГруппаЗначенийДоступа = &amp;АвторизованныйПользователь
				)
			И НЕ
		#Иначе
			(
		#КонецЕсли
			ВЫБОР
			КОГДА ИСТИНА В
				(
		#Если СтрСодержит(&amp;ВидыДоступаБезГруппДляЗначенияДоступа, ",#Параметр(32),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = Т.#Параметр(33)
		#ИначеЕсли "Т.#Параметр(33)" = "Т.Ссылка"
		         И "#Параметр(32)" &lt;&gt; "Пользователи"
		         И "#Параметр(32)" &lt;&gt; "ВнешниеПользователи" #Тогда
			#Если СтрСодержит("#Параметр(32)", ",") #Тогда
				// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
				НеверныйВидДоступа: "#Параметр(32)" - "При проверке таблицы значения доступа можно указывать только один вид доступа"
			#ИначеЕсли СтрСодержит(&amp;ВидыДоступаСОднойГруппойДляЗначенияДоступа, ",#Параметр(32),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = Т.ГруппаДоступа
			#Иначе // Значения доступа, для которых можно указать несколько групп значений доступа.
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ #Параметр(1).ГруппыДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаДоступа
					И ГруппыЗначений.Ссылка    = Т.#Параметр(33)
			#КонецЕсли
		#Иначе
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа         = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа       = ГруппыЗначений.ГруппаЗначенийДоступа
					И ГруппыЗначений.ЗначениеДоступа = Т.#Параметр(33)
		#КонецЕсли
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			=
			ВЫБОР
			КОГДА ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
				ГДЕ
				      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
				    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(Т.#Параметр(33))
				    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			)
	 )
#Иначе
	И ЕСТЬNULL(Т.#Параметр(33), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
#КонецЕсли

//// Проверка значения поля группы параметров 16.
#Если "#Параметр(34)" = "" И "#Параметр(35)" = "" #Тогда
	// Группа параметров не используется.
#ИначеЕсли &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется И ("#Параметр(34)" = "Условие" Или "#Параметр(34)" = "") #Тогда
	// Когда имя вида доступа "Условие" (или ""), тогда вместо имени поля задано условие.
	И ( #Параметр(35) )
#ИначеЕсли "#Параметр(34)" = "ПравоЧтения" Или "#Параметр(34)" = "ПравоИзменения" #Тогда
	И Т.#Параметр(35) &lt;&gt; НЕОПРЕДЕЛЕНО
	И ИСТИНА В
	 (	// Проверка права пользователя на таблицу Значения, установленного в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТИПЗНАЧЕНИЯ(ТаблицыГруппДоступаПроверкаПрава.ТипТаблицы) = ТИПЗНАЧЕНИЯ(Т.#Параметр(35))
		#Если Не "#Параметр(34)" = "ПравоЧтения" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли "#Параметр(34)" = "ПравоЧтенияПоИдентификатору" Или "#Параметр(34)" = "ПравоИзмененияПоИдентификатору" #Тогда
	  ИСТИНА В
	 (	// Проверка права пользователя на таблицу, идентификатор которой указан в Значении, установленном в поле.
		ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
		ИЗ РегистрСведений.ТаблицыГруппДоступа КАК ТаблицыГруппДоступаПроверкаПрава
		ГДЕ
			  ТаблицыГруппДоступаПроверкаПрава.ГруппаДоступа = ГруппыДоступа.Ссылка
			И ТаблицыГруппДоступаПроверкаПрава.Таблица = Т.#Параметр(35)
		#Если Не "#Параметр(34)" = "ПравоЧтенияПоИдентификатору" #Тогда
			И ТаблицыГруппДоступаПроверкаПрава.ПравоИзменение
		#КонецЕсли
	 )
#ИначеЕсли Не &amp;ОграничениеДоступаНаУровнеЗаписейИспользуется #Тогда
	// Группа параметров отключена.
#ИначеЕсли "#Параметр(34)" = "НастройкиПрав" #Тогда
	И
	 (
		ИСТИНА В // Проверка, что пользователю или какой-нибудь группе пользователя право разрешено
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = Т.#Параметр(35)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньРазрешенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
		 И НЕ ЛОЖЬ В // Проверка, что пользователю или какой-нибудь группе пользователя право запрещено.
			(
			ВЫБРАТЬ ПЕРВЫЕ 1 ЛОЖЬ
			ИЗ РегистрСведений.НастройкиПравОбъектов КАК НастройкиПрав
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НаследованиеНастроекПравОбъектов КАК НаследованиеНастроек
				ПО
					  НаследованиеНастроек.Объект = Т.#Параметр(35)
					И НастройкиПрав.Объект  = НаследованиеНастроек.Родитель
				#Если #ИмяТекущегоПраваДоступа = "Чтение" #Тогда
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияЧтения
				#Иначе
				  #Если СтрСодержит(&amp;ТаблицыСОтдельнымиНастройкамиПрав, "|#Параметр(1);") #Тогда
					И НастройкиПрав.Таблица = СвойстваТекущейТаблицы.Ссылка
				  #Иначе
					И НастройкиПрав.Таблица = ЗНАЧЕНИЕ(Справочник.ИдентификаторыОбъектовМетаданных.ПустаяСсылка)
				  #КонецЕсли
					И НаследованиеНастроек.УровеньИспользования &lt; НастройкиПрав.УровеньЗапрещенияИзменения
				#КонецЕсли
				ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СоставыГруппПользователей КАК СоставыГруппПользователей
				ПО
					  СоставыГруппПользователей.Пользователь        = &amp;АвторизованныйПользователь
					И СоставыГруппПользователей.ГруппаПользователей = НастройкиПрав.Пользователь
			)
	 )
#ИначеЕсли Не СтрСодержит(&amp;ВсеВидыДоступаКромеСпециальных, ",#Параметр(34),") #Тогда
	// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
	#Если СтрСодержит("#Параметр(34)", ",") #Тогда
		НеверныйВидДоступа: "#Параметр(34)" - "Список имен видов доступа не найден"
	#Иначе
		НеверныйВидДоступа: "#Параметр(34)" - "Имя вида доступа не найдено"
	#КонецЕсли
#ИначеЕсли &amp;ВидыДоступаСОтключеннымИспользованием &lt;&gt; "Все"
         И Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",#Параметр(34),") #Тогда
	И
	 (
			ЕСТЬNULL(Т.#Параметр(35), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
			И
		#Если (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",Пользователи,")        И СтрСодержит(",#Параметр(34),", ",Пользователи,"))
		  Или (Не СтрСодержит(&amp;ВидыДоступаСОтключеннымИспользованием, ",ВнешниеПользователи,") И СтрСодержит(",#Параметр(34),", ",ВнешниеПользователи,")) #Тогда
			НЕ
			(
			НЕ ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначенийДоступа
				ГДЕ
					  ГруппыЗначенийДоступа.ЗначениеДоступа       = Т.#Параметр(35)
					И ГруппыЗначенийДоступа.ГруппаЗначенийДоступа = &amp;АвторизованныйПользователь
				)
			И НЕ
		#Иначе
			(
		#КонецЕсли
			ВЫБОР
			КОГДА ИСТИНА В
				(
		#Если СтрСодержит(&amp;ВидыДоступаБезГруппДляЗначенияДоступа, ",#Параметр(34),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = Т.#Параметр(35)
		#ИначеЕсли "Т.#Параметр(35)" = "Т.Ссылка"
		         И "#Параметр(34)" &lt;&gt; "Пользователи"
		         И "#Параметр(34)" &lt;&gt; "ВнешниеПользователи" #Тогда
			#Если СтрСодержит("#Параметр(34)", ",") #Тогда
				// Когда параметр задан неверно, вставляется строка, чтобы вызвать ошибку сборки ограничения доступа.
				НеверныйВидДоступа: "#Параметр(34)" - "При проверке таблицы значения доступа можно указывать только один вид доступа"
			#ИначеЕсли СтрСодержит(&amp;ВидыДоступаСОднойГруппойДляЗначенияДоступа, ",#Параметр(34),") #Тогда
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
				ГДЕ
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = Т.ГруппаДоступа
			#Иначе // Значения доступа, для которых можно указать несколько групп значений доступа.
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ #Параметр(1).ГруппыДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа   = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа = ГруппыЗначений.ГруппаДоступа
					И ГруппыЗначений.Ссылка    = Т.#Параметр(35)
			#КонецЕсли
		#Иначе
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступа КАК Значения
					ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГруппыЗначенийДоступа КАК ГруппыЗначений
				ПО
					  Значения.ГруппаДоступа         = ГруппыДоступа.Ссылка
					И Значения.ЗначениеДоступа       = ГруппыЗначений.ГруппаЗначенийДоступа
					И ГруппыЗначений.ЗначениеДоступа = Т.#Параметр(35)
		#КонецЕсли
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			=
			ВЫБОР
			КОГДА ИСТИНА В
				(
				ВЫБРАТЬ ПЕРВЫЕ 1 ИСТИНА
				ИЗ РегистрСведений.ЗначенияГруппДоступаПоУмолчанию КАК ЗначенияПоУмолчанию
				ГДЕ
				      ЗначенияПоУмолчанию.ГруппаДоступа = ГруппыДоступа.Ссылка
				    И ТИПЗНАЧЕНИЯ(ЗначенияПоУмолчанию.ТипЗначенийДоступа) = ТИПЗНАЧЕНИЯ(Т.#Параметр(35))
				    И ЗначенияПоУмолчанию.ВсеРазрешены = ЛОЖЬ
				)
			ТОГДА ИСТИНА
			ИНАЧЕ ЛОЖЬ
			КОНЕЦ
			)
	 )
#Иначе
	И ЕСТЬNULL(Т.#Параметр(35), НЕОПРЕДЕЛЕНО) &lt;&gt; НЕОПРЕДЕЛЕНО
#КонецЕсли

  )
)
#КонецЕсли

#КонецЕсли // Информационная база заблокирована для обновления.</condition>
	</restrictionTemplate>
</Rights>
