При настройке прав доступа в программах на платформе 1С:Предприятие 8.3 (таких как ЗУП 3.1, ERP 2.5 или Комплексная автоматизация) системные администраторы и разработчики часто сталкиваются с ошибкой «Нет прав на регистр сведений Лицевые счета сотрудников по зарплатным проектам». Ситуация осложняется тем, что даже при наличии у пользователя роли кадровика, механизмы RLS (Record Level Security) могут блокировать запись данных. Рассмотрим подробно, как решить эту проблему, проанализируем код ограничений и разберем алгоритм настройки профилей групп доступа.
Для начала проанализируем код, который управляет доступом к регистру ЛицевыеСчетаСотрудниковПоЗарплатнымПроектам. В современных конфигурациях, использующих Библиотеку стандартных подсистем (БСП), код ограничения часто выглядит следующим образом:
#Если &ОграничениеДоступаНаУровнеЗаписейУниверсально #Тогда
#ДляРегистра("ИдентификаторыОбъектовМетаданных.РегистрСведенийЛицевыеСчетаСотрудниковПоЗарплатнымПроектам", "ФизическоеЛицо", "Организация", "", "", "")
#Иначе
#ПоЗначениям("РегистрСведений.ЛицевыеСчетаСотрудниковПоЗарплатнымПроектам","Чтение","",
"Организации","Организация",
"ГруппыФизическихЛиц","ФизическоеЛицо","","", "","", "","", "","", "","", "","", "","", "","", "","", "","", "","", "","", "","", "","" )
#КонецЕсли
Разберем, что означают эти вставки. Программный код разделен на две части условием &ОграничениеДоступаНаУровнеЗаписейУниверсально. Выясним причину такого разделения:
#ДляРегистра. В этом случае права не вычисляются «на лету» при каждом запросе, а берутся из заранее подготовленных таблиц (регистры ключей доступа). Если пользователь не может записать данные, возможно, таблицы ключей еще не обновились.#ПоЗначениям накладывает условия на измерения Организация и ФизическоеЛицо. Это означает, что для работы с лицевым счетом пользователю недостаточно иметь права на сам регистр — он должен иметь права на чтение конкретной Организации и конкретного Физического лица, указанных в записи.Первым делом проанализируем состав ролей в профиле пользователя. Часто стандартной роли кадровика или расчетчика недостаточно для полноценной работы с банковскими сведениями. Проверим наличие роли ДобавлениеИзменениеЛицевыхСчетовПоЗарплатнымПроектам. Именно эта роль в типовых конфигурациях отвечает за право записи в целевой регистр ЛицевыеСчетаСотрудниковПоЗарплатнымПроектам.
Если этой роли нет в стандартном профиле «Кадровик», нам необходимо:
Добавление и изменение лицевых счетов по зарплатным проектам.Выясним, по каким разрезам ограничены права. Даже если роль добавлена, RLS может блокировать доступ, если в Группе доступа не настроены соответствующие виды доступа. Рассмотрим наиболее важные:
ФизическоеЛицо. Проверьте, включено ли ограничение по «Группам доступа физических лиц». Если включено, пользователь должен иметь доступ к группе, в которую входит сотрудник.Важный нюанс: Если вы используете программную запись в регистр (например, через внешнюю обработку), убедитесь, что все поля, по которым строится RLS (Организация, ФизическоеЛицо), заполнены корректно. Попытка записать «пустую» ссылку в поле, по которому идет фильтрация, часто приводит к отказу в доступе.
Проанализируем ситуацию глубже. Регистр лицевых счетов тесно связан с другими объектами. Для корректной работы формы ввода лицевого счета пользователю могут потребоваться права на:
ЗарплатныеПроекты (чтение).БанковскиеСчетаОрганизаций (чтение).Банки (чтение).Если у кадровика нет прав на чтение зарплатного проекта, он не сможет выбрать его в форме, и даже при наличии прав на сам регистр лицевых счетов работа будет невозможна.
Если в вашей базе включен универсальный режим (тот самый #Если &ОграничениеДоступаНаУровнеЗаписейУниверсально), то после изменения ролей или прав на организацию/физлицо изменения могут вступить в силу не сразу. Рассмотрим порядок действий для принудительного обновления:
Обновление прав доступа (оперативное) или воспользуемся обработкой Обновление доступа на уровне записей.Если вы самостоятельно редактируете роли в конфигураторе, следуйте правилу: не пытайтесь писать сложные SQL-запросы в RLS вручную, если в конфигурации используется БСП. Лучше использовать стандартные шаблоны. Посмотрим на пример:
Вместо того чтобы изобретать велосипед, мы можем скопировать текст ограничения из похожих регистров (например, ДанныеФизическихЛиц) и адаптировать имена полей. Однако, как показывает практика, 90% проблем с доступом к лицевым счетам решаются в пользовательском режиме через правильную настройку профилей и добавление типовой роли на изменение счетов, а не через правку кода RLS в Конфигураторе.
Помните, что использование RLS существенно нагружает систему при записи и чтении данных. Если кадровику нужно работать со всеми лицевыми счетами, возможно, стоит рассмотреть вариант выноса этой функции в отдельный профиль с отключенными ограничениями по организациям, если это допустимо политикой безопасности компании.