Как настроить доступ к лицевым счетам сотрудников по зарплатным проектам при использовании RLS

Программист 1С v8.3 (Управляемые формы) 1С:Зарплата и Управление Персоналом Управленческий учет
← На главную

При настройке прав доступа в программах на платформе 1С:Предприятие 8.3 (таких как ЗУП 3.1, ERP 2.5 или Комплексная автоматизация) системные администраторы и разработчики часто сталкиваются с ошибкой «Нет прав на регистр сведений Лицевые счета сотрудников по зарплатным проектам». Ситуация осложняется тем, что даже при наличии у пользователя роли кадровика, механизмы RLS (Record Level Security) могут блокировать запись данных. Рассмотрим подробно, как решить эту проблему, проанализируем код ограничений и разберем алгоритм настройки профилей групп доступа.

Анализ кода RLS и механизмов ограничения

Для начала проанализируем код, который управляет доступом к регистру ЛицевыеСчетаСотрудниковПоЗарплатнымПроектам. В современных конфигурациях, использующих Библиотеку стандартных подсистем (БСП), код ограничения часто выглядит следующим образом:


#Если &ОграничениеДоступаНаУровнеЗаписейУниверсально #Тогда
#ДляРегистра("ИдентификаторыОбъектовМетаданных.РегистрСведенийЛицевыеСчетаСотрудниковПоЗарплатнымПроектам", "ФизическоеЛицо", "Организация", "", "", "")
#Иначе
#ПоЗначениям("РегистрСведений.ЛицевыеСчетаСотрудниковПоЗарплатнымПроектам","Чтение","",
"Организации","Организация",
"ГруппыФизическихЛиц","ФизическоеЛицо","","", "","", "","", "","", "","", "","", "","", "","", "","", "","", "","", "","", "","", "","" )
#КонецЕсли

Разберем, что означают эти вставки. Программный код разделен на две части условием &ОграничениеДоступаНаУровнеЗаписейУниверсально. Выясним причину такого разделения:

  1. Универсальный механизм RLS: Если в константах системы включен производительный (универсальный) режим, используется шаблон #ДляРегистра. В этом случае права не вычисляются «на лету» при каждом запросе, а берутся из заранее подготовленных таблиц (регистры ключей доступа). Если пользователь не может записать данные, возможно, таблицы ключей еще не обновились.
  2. Классический механизм RLS: Шаблон #ПоЗначениям накладывает условия на измерения Организация и ФизическоеЛицо. Это означает, что для работы с лицевым счетом пользователю недостаточно иметь права на сам регистр — он должен иметь права на чтение конкретной Организации и конкретного Физического лица, указанных в записи.

Шаг 1. Проверка наличия специализированных ролей

Первым делом проанализируем состав ролей в профиле пользователя. Часто стандартной роли кадровика или расчетчика недостаточно для полноценной работы с банковскими сведениями. Проверим наличие роли ДобавлениеИзменениеЛицевыхСчетовПоЗарплатнымПроектам. Именно эта роль в типовых конфигурациях отвечает за право записи в целевой регистр ЛицевыеСчетаСотрудниковПоЗарплатнымПроектам.

Если этой роли нет в стандартном профиле «Кадровик», нам необходимо:

  1. Создать новый Профиль групп доступа путем копирования существующего профиля.
  2. В списке ролей найти и отметить флажком Добавление и изменение лицевых счетов по зарплатным проектам.
  3. Обновить настройки прав для пользователя в режиме «1С:Предприятие».

Шаг 2. Настройка видов доступа в профиле

Выясним, по каким разрезам ограничены права. Даже если роль добавлена, RLS может блокировать доступ, если в Группе доступа не настроены соответствующие виды доступа. Рассмотрим наиболее важные:

Важный нюанс: Если вы используете программную запись в регистр (например, через внешнюю обработку), убедитесь, что все поля, по которым строится RLS (Организация, ФизическоеЛицо), заполнены корректно. Попытка записать «пустую» ссылку в поле, по которому идет фильтрация, часто приводит к отказу в доступе.

Шаг 3. Зависимые объекты и права на чтение

Проанализируем ситуацию глубже. Регистр лицевых счетов тесно связан с другими объектами. Для корректной работы формы ввода лицевого счета пользователю могут потребоваться права на:

Если у кадровика нет прав на чтение зарплатного проекта, он не сможет выбрать его в форме, и даже при наличии прав на сам регистр лицевых счетов работа будет невозможна.

Шаг 4. Обновление ключей доступа (для универсального RLS)

Если в вашей базе включен универсальный режим (тот самый #Если &ОграничениеДоступаНаУровнеЗаписейУниверсально), то после изменения ролей или прав на организацию/физлицо изменения могут вступить в силу не сразу. Рассмотрим порядок действий для принудительного обновления:

  1. Перейдем в раздел Администрирование — Обслуживание — Управление доступом.
  2. Запустим регламентное задание Обновление прав доступа (оперативное) или воспользуемся обработкой Обновление доступа на уровне записей.
  3. В сложных случаях может потребоваться полная очистка и перезаполнение таблиц прав, но обычно достаточно дождаться завершения фоновых заданий БСП.

Рекомендации по разработке и отладке

Если вы самостоятельно редактируете роли в конфигураторе, следуйте правилу: не пытайтесь писать сложные SQL-запросы в RLS вручную, если в конфигурации используется БСП. Лучше использовать стандартные шаблоны. Посмотрим на пример:

Вместо того чтобы изобретать велосипед, мы можем скопировать текст ограничения из похожих регистров (например, ДанныеФизическихЛиц) и адаптировать имена полей. Однако, как показывает практика, 90% проблем с доступом к лицевым счетам решаются в пользовательском режиме через правильную настройку профилей и добавление типовой роли на изменение счетов, а не через правку кода RLS в Конфигураторе.

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

← На главную