Как устранить ошибку «У пользователя недостаточно прав» при записи штатного расписания в 1С:ЗУП 3.1

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

При работе в программе 1С:Зарплата и управление персоналом (ЗУП) 3.1 администраторы и разработчики часто сталкиваются с ситуацией, когда у пользователя с ограниченными правами (например, с профилем «Кадровик») возникает ошибка при попытке записать или изменить элемент справочника ШтатноеРасписание:

{Справочник.ШтатноеРасписание.Форма.ФормаЭлемента.Форма(3497)}: Ошибка при вызове метода контекста (Записать) по причине: У пользователя недостаточно прав на исполнение операции над базой данных.

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

В чем заключается подвох: логика работы подсистемы управления доступом БСП

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

Проанализируем ключевой механизм интеграции прав БСП:

  1. Автоматическая синхронизация ролей: При каждом входе пользователя в систему подсистема «Управление доступом» сверяет роли, назначенные учетной записи в Конфигураторе, с настройками его Групп доступа и Профилей групп доступа в режиме «1С:Предприятие».
  2. Принудительный сброс: Если вы вручную установили галочку напротив роли в Конфигураторе, но этой роли нет в назначенном пользователю Профиле групп доступа в режиме «Предприятие», система 1С при авторизации пользователя автоматически отключит эту роль.
  3. Отказ в Журнале регистрации: Именно по этой причине в Журнале регистрации фиксируется событие: Справочник.ШтатноеРасписание. Действие: Добавление. Доступ: Отказ в доступе, хотя администратор уверен, что роль у пользователя присутствует.

Таким образом, настраивать права и роли для пользователей в ЗУП 3.1 необходимо исключительно через интерфейс «1С:Предприятие».

---

Шаг 1. Проверка настроек в режиме «1С:Предприятие»

Для того чтобы предоставить пользователю права на добавление и изменение штатного расписания, выполним следующие действия:

  1. Перейдем в раздел Администрирование — Настройки пользователей и прав — Профили групп доступа.
  2. Найдем профиль, назначенный нашему сотруднику (например, типовой профиль Кадровик или созданный вручную пользовательский профиль).
  3. Откроем этот профиль и перейдем на вкладку Разрешенные роли.
  4. Проверим наличие флажка напротив роли Добавление изменение штатного расписания. Если флажка нет, включим его. Если профиль типовой (и закрыт для редактирования), создадим на его основании новый профиль (кнопкой «Создать копированием»), внесем изменения и переназначим его пользователю в настройках Групп доступа.
  5. Сохраним изменения.

После этого БСП автоматически обновит состав ролей пользователя при его следующем входе в базу данных, и права перестанут «слетать».

---

Шаг 2. Разбор ограничений на уровне записей (RLS)

Если после включения роли в профиле ошибка сохраняется, дело может быть в ограничениях доступа на уровне записей (RLS) по подразделениям или организациям. Шаблон RLS для справочника ШтатноеРасписание выглядит достаточно сложно:


#ПоЗначениямРасширенный( "Справочник.ШтатноеРасписание","Добавление","",
"ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПодчиненностьПодразделенийОрганизаций КАК Т2
ПО Т2.Подразделение = Т.Подразделение",
"",
"ПодразделенияОрганизаций","Т2.ВышестоящееПодразделение","И",
"Организации","Т.Владелец","",
"","","","","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","", "","","" )

Этот шаблон накладывает жесткое условие: при добавлении элемента штатного расписания у пользователя должен быть доступ как к самой организации (владельцу штатной единицы), так и к конкретному подразделению (или к его вышестоящему узлу в иерархии подразделений).

Как проверить ограничения RLS:

  1. Проверим, к каким организациям и подразделениям у пользователя настроен доступ в его Группе доступа.
  2. Если используется производительный режим RLS (который включен по умолчанию во всех современных версиях ЗУП 3.1), права рассчитываются на основе служебных регистров. Нам необходимо убедиться, что эти данные актуальны.
  3. Для принудительного обновления и пересчета прав выполним запуск базы данных в режиме «1С:Предприятие» с параметром командной строки:

/С ЗапуститьОбновлениеИнформационнойБазы

Или выполним обновление вспомогательных данных программно, запустив в консоли кода следующую команду:

Справочники.ИдентификаторыОбъектовМетаданных.ОбновитьДанные(); ---

Шаг 3. Локализация и отладка ошибки RLS через Консоль запросов

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

Для этого воспользуемся механизмом тестирования шаблонов запросов БСП. Параметры сеанса содержат списки разрешенных значений. Мы можем эмулировать запрос системы под проблемным пользователем:

  1. Запустим сеанс отладки под учетной записью проблемного кадровика.
  2. Включим в Конфигураторе остановку по ошибке (меню Отладка — Настройка электронной отладки / Остановка по ошибке — добавить Исключение).
  3. Попытаемся записать элемент штатного расписания. Программа остановится в модуле формы элемента на строке:
    
    ИначеЕсли Записать(ПараметрыЗаписи) И ДополнительныеПараметры.ЗакрытьПослеЗаписи Тогда
    
  4. В табло отладки вычислим значения полей записываемого объекта: ЭтотОбъект.Владелец (Организация) и ЭтотОбъект.Подразделение.
  5. Сравним эти значения со списком разрешенных значений в параметрах сеанса для видов доступа «Организации» и «Подразделения». Если записываемое подразделение отсутствует в списке разрешенных для данного пользователя (например, из-за неверно настроенной иерархии в регистре ПодчиненностьПодразделенийОрганизаций), система выдаст отказ в доступе.

Для исправления ситуации достаточно расширить права пользователя в его группе доступа, добавив недостающее подразделение или вышестоящую структуру.

Резюме

При возникновении ошибок доступа в конфигурациях 1С на платформе 8.3 (включая ЗУП 3.1) никогда не назначайте роли пользователям напрямую в Конфигураторе. Всегда используйте механизм Профилей и Групп доступа в режиме «1С:Предприятие». Это убережет вас от автоматического сброса прав системой при авторизации сотрудников и гарантирует корректную работу механизмов RLS.

← На главную