При работе в программе 1С:Зарплата и управление персоналом (ЗУП) 3.1 администраторы и разработчики часто сталкиваются с ситуацией, когда у пользователя с ограниченными правами (например, с профилем «Кадровик») возникает ошибка при попытке записать или изменить элемент справочника ШтатноеРасписание:
{Справочник.ШтатноеРасписание.Форма.ФормаЭлемента.Форма(3497)}: Ошибка при вызове метода контекста (Записать) по причине: У пользователя недостаточно прав на исполнение операции над базой данных.
При этом в Конфигураторе у данного пользователя может быть явно включена роль Добавление изменение штатного расписания, а также настроены все необходимые ограничения доступа (RLS). Выясним причину этой проблемы и разберем подробный алгоритм её решения.
В современных конфигурациях 1С, построенных на базе Библиотеки стандартных подсистем (БСП), управление правами пользователей работает не так, как в старых версиях платформы. Назначение ролей напрямую в Конфигураторе больше не является определяющим фактором.
Проанализируем ключевой механизм интеграции прав БСП:
Справочник.ШтатноеРасписание. Действие: Добавление. Доступ: Отказ в доступе, хотя администратор уверен, что роль у пользователя присутствует.Таким образом, настраивать права и роли для пользователей в ЗУП 3.1 необходимо исключительно через интерфейс «1С:Предприятие».
---
Для того чтобы предоставить пользователю права на добавление и изменение штатного расписания, выполним следующие действия:
После этого БСП автоматически обновит состав ролей пользователя при его следующем входе в базу данных, и права перестанут «слетать».
---
Если после включения роли в профиле ошибка сохраняется, дело может быть в ограничениях доступа на уровне записей (RLS) по подразделениям или организациям. Шаблон RLS для справочника ШтатноеРасписание выглядит достаточно сложно:
#ПоЗначениямРасширенный( "Справочник.ШтатноеРасписание","Добавление","",
"ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПодчиненностьПодразделенийОрганизаций КАК Т2
ПО Т2.Подразделение = Т.Подразделение",
"",
"ПодразделенияОрганизаций","Т2.ВышестоящееПодразделение","И",
"Организации","Т.Владелец","",
"","","","","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","" )
Этот шаблон накладывает жесткое условие: при добавлении элемента штатного расписания у пользователя должен быть доступ как к самой организации (владельцу штатной единицы), так и к конкретному подразделению (или к его вышестоящему узлу в иерархии подразделений).
Как проверить ограничения RLS:
/С ЗапуститьОбновлениеИнформационнойБазы
Или выполним обновление вспомогательных данных программно, запустив в консоли кода следующую команду:
Справочники.ИдентификаторыОбъектовМетаданных.ОбновитьДанные();
---
Если права в профиле настроены верно, но RLS все равно блокирует запись, выполним отладку ограничения.
Для этого воспользуемся механизмом тестирования шаблонов запросов БСП. Параметры сеанса содержат списки разрешенных значений. Мы можем эмулировать запрос системы под проблемным пользователем:
Исключение).
ИначеЕсли Записать(ПараметрыЗаписи) И ДополнительныеПараметры.ЗакрытьПослеЗаписи Тогда
ЭтотОбъект.Владелец (Организация) и ЭтотОбъект.Подразделение.ПодчиненностьПодразделенийОрганизаций), система выдаст отказ в доступе.Для исправления ситуации достаточно расширить права пользователя в его группе доступа, добавив недостающее подразделение или вышестоящую структуру.
При возникновении ошибок доступа в конфигурациях 1С на платформе 8.3 (включая ЗУП 3.1) никогда не назначайте роли пользователям напрямую в Конфигураторе. Всегда используйте механизм Профилей и Групп доступа в режиме «1С:Предприятие». Это убережет вас от автоматического сброса прав системой при авторизации сотрудников и гарантирует корректную работу механизмов RLS.