Содержание
1. Подключение новых ссылочных типов к производительному методу RLS в 1С
2. Подключение новых регистров сведений к производительному методу RLS в 1С
3. Дополнение к инструкциям по настройке RLS в 1С
Подключение новых ссылочных типов к производительному методу RLS в 1С
1. В модуле менеджера объекта добавляем процедуру ПриЗаполненииОграниченияДоступа, в ней настраиваем доступ по отбору. Если реквизит отбора не присутствует среди реквизитов, а является реквизитом одного из полей, то необходимо использовать таблицу типа данного поля через «ПрисоединитьДополнительныеТаблицы». Пример:
// См. УправлениеДоступомПереопределяемый.ПриЗаполненииСписковСОграничениемДоступа.
Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт
Ограничение.Текст =
	"ПрисоединитьДополнительныеТаблицы
	|ЭтотСписок КАК Т
	|ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПодразделенияОрганизаций КАК Т2 
	|	ПО Т2.Ссылка = Т.Подразделение
	|;
	|РазрешитьЧтениеИзменение
	|ГДЕ
	|	ЗначениеРазрешено(Т2.Владелец)";
КонецПроцедуры
В случае если поле имеет сложный тип, то для улучшения производительности необходимо добавлять отбор RLS в реквизиты РС, и заполнять его перед записью. В таком случае текст будет иным:
// См. УправлениеДоступомПереопределяемый.ПриЗаполненииСписковСОграничениемДоступа.
Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт
Ограничение.Текст =
	"РазрешитьЧтениеИзменение
	|ГДЕ
	|	ЗначениеРазрешено(ОрганизацияRLS)";
КонецПроцедуры
2. В модуле форму объекта добавляем:
a. В событие «ПриЧтенииНаСервере» код:
// СтандартныеПодсистемы.УправлениеДоступом
	УправлениеДоступом.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
	// Конец СтандартныеПодсистемы.УправлениеДоступом
b. В событие «ПослеЗаписиНаСервере» код:
// СтандартныеПодсистемы.УправлениеДоступом
	УправлениеДоступом.ПослеЗаписиНаСервере(ЭтотОбъект, ТекущийОбъект, ПараметрыЗаписи);
	// Конец СтандартныеПодсистемы.УправлениеДоступом
3. Добавляем объект в определяемые типы «ВладелецЗначенийКлючейДоступа» и «ВладелецЗначенийКлючейДоступаДокумент» если объект – документ.
4. В ОМ «УправлениеДоступомПереопределяемый» прописываем РС в процедуре «ПриЗаполненииСписковСОграничениемДоступа
5. В шаблонах ролей добавить шаблон на чтение:
#Если &ОграничениеДоступаНаУровнеЗаписейУниверсально #Тогда
#ДляОбъекта("")
#Иначе Истина
#КонецЕсли
Подключение новых регистров сведений к производительному методу RLS в 1С
Данный алгоритм рассматривает РС без регистраторов
1. Добавляем РС в определяемый тип «ВладелецЗначенийКлючейДоступаНаборЗаписей»
2. В ОМ «УправлениеДоступомПереопределяемый» прописываем РС в процедуре «ПриЗаполненииСписковСОграничениемДоступа».
3. В модуле менеджера добавляем процедуру ПриЗаполненииОграниченияДоступа, в ней настраиваем доступ по отбору. Если реквизит отбора не присутствует среди измерений, ресурсов, реквизитов, а является реквизитом одного из полей, то необходимо использовать таблицу типа данного поля через «ПрисоединитьДополнительныеТаблицы». Пример:
// См. УправлениеДоступомПереопределяемый.ПриЗаполненииСписковСОграничениемДоступа.
Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт
Ограничение.Текст =
	"ПрисоединитьДополнительныеТаблицы
	|ЭтотСписок КАК Т
	|ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПоставщику КАК Т2 
	|	ПО Т2.Ссылка = Т.ЗаказПоставщику
	|;
	|РазрешитьЧтениеИзменение
	|ГДЕ
	|	ЗначениеРазрешено(Т2.Подразделение)";
КонецПроцедуры
В случае если поле (в нашем случае «ЗаказПоставщику») имеет сложный тип, то для улучшения производительности необходимо добавлять отбор RLS в реквизиты РС, и заполнять его перед записью. В таком случае текст будет иным:
// См. УправлениеДоступомПереопределяемый.ПриЗаполненииСписковСОграничениемДоступа.
Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт
Ограничение.Текст =
	"РазрешитьЧтениеИзменение
	|ГДЕ
	|	ЗначениеРазрешено(ПодразделениеRLS)";
КонецПроцедуры
4. В справочник «ИдентификаторыОбъектовМетаданных» добавляем предопределенный элемент с именем «РегистрСведений» + <ИмяРС>, пример: РегистрСведенийСостояниеОбеспеченияТС
5. В шаблонах ролей добавить шаблон на чтение:
#Если &ОграничениеДоступаНаУровнеЗаписейУниверсально #Тогда
#ДляРегистра("ИдентификаторыОбъектовМетаданных.РегистрСведенийСостояниеОбеспеченияТС", "ЗаказПоставщику", "", "", "", "")
#Иначе Истина
#КонецЕсли
где в первом параметре шаблона «ДляРегистра» указывается нами добавленный в П4. предопределенный элемент справочника, во втором поле РС с которым связан отбор. В нашем случае это ЗаказПоставщику «Т2.Ссылка = Т.ЗаказПоставщику»
Дополнение к инструкциям по настройке RLS в 1С
Инструкции по подключению закончились, но это еще не все. Шаблоны доступа «ДляОбъекта» и «ДляРегистра» в новые роли необходимо копировать из роли «ИзменениеУчастниковГруппДоступа».
Для корректной последующей работы всего механизма необходимо обновление данных. Для этого есть три варианта:
- Обработка «ОбновлениеВспомогательныхДанных.epf»;
- Запуск с параметром «ЗапуститьОбновлениеИнформационнойБазы» через параметр /С;
- Увеличения релиза.
Автор: Сергей Ж., ведущий разработчик 1С.
Вступайте в нашу телеграмм-группу Инфостарт
