Как решить проблему с ошибкой «Недостаточно прав» у табельщиков при включенном RLS в 1С:ЗУП 3.1

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

Настройка ограничений доступа на уровне записей (RLS — Row-Level Security) в программных продуктах 1С часто преподносит сюрпризы администраторам и разработчикам. Особенно остро это ощущается в конфигурации 1С:Зарплата и Управление Персоналом 3.1 (ЗУП), где права сотрудников и табельщиков тесно переплетены со сложной структурой кадровых данных.

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

Анализ проблемы и симптомы ошибки

Представим стандартный сценарий: на предприятии внедряется разграничение прав. Табельщик Ivanov должен видеть и заполнять табели только по своей бригаде или подразделению. Для реализации этой задачи администратор выполняет следующие действия:

  1. Включает ограничение доступа на уровне записей в меню Администрирование — Настройки пользователей и прав.
  2. Настраивает группы доступа физических лиц и распределяет сотрудников по этим группам.
  3. Назначает табельщику профиль с ограничением по конкретной группе физлиц.

Фильтр в списках сотрудников начинает работать корректно — табельщик видит только «своих» людей. Однако при попытке открыть существующий документ Табель или создать новый система аварийно завершает работу с сообщением: «У пользователя недостаточно прав на исполнение операции над базой данных».

Давайте проанализируем запись в Журнале регистрации, которая фиксируется в момент падения системы:


{ОбщийМодуль.ОбщегоНазначения.Модуль(266)}: Выборка = Запрос.Выполнить().Выбрать();
{ОбщийМодуль.ПодписиДокументовВызовСервера.Модуль(5)}: Возврат ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ФизическоеЛицо, "Фамилия,Имя,Отчество,Инициалы");
{ОбщийМодуль.ПодписиДокументовКлиентСервер.Модуль(189)}: ИОФамилии.Добавить(ФизическиеЛицаЗарплатаКадрыКлиентСервер.ФамилияИнициалы(...))
{ОбщийМодуль.ПодписиДокументовФормы.Модуль(347)}: ПодписиДокументовКлиентСервер.УстановитьЗаголовокГруппеПодписей(Форма, ОписаниеФормыОбъекта);
{ОбщийМодуль.ПодписиДокументовФормы.Модуль(37)}: ЗаполнитьВторичныеРеквизитыФормыПодписейДокументов(Форма, ОписаниеФормыПоОрганизации);
{ОбщийМодуль.ПодписиДокументов.Модуль(163)}: ПодписиДокументовФормы.ЗаполнитьПодписиПоОрганизации(Форма, ОписаниеФормыДляПодписей, ИмяРеквизитаОрганизация);
{Документ.ТабельУчетаРабочегоВремени.Форма.ФормаДокумента.Форма(589)}: ПодписиДокументов.ЗаполнитьПодписиПоОрганизации(ЭтаФорма);

Почему происходит этот сбой? Выясняем причину

Обратите внимание на верхние строки стека вызова. Проблема кроется в вызове метода ОбщегоНазначения.ЗначенияРеквизитовОбъекта(), который пытается получить текстовое представление (ФИО и инициалы) для переменной ФизическоеЛицо.

В документе Табель встроена подсистема автозаполнения ответственных лиц (подписантов) организации. К ним относятся руководитель организации, руководитель кадровой службы, главный бухгалтер и исполнители. Все эти ответственные лица в системе также являются элементами справочника ФизическиеЛица.

Когда табельщик открывает форму документа, код инициализации пытается прочитать ФИО подписантов (например, директора предприятия), чтобы вывести их внизу формы. Однако директор предприятия не входит в ту группу доступа физических лиц, которая разрешена нашему табельщику! Шаблон RLS блокирует запрос к справочнику физических лиц для этой записи, СУБД возвращает ошибку нехватки прав, и транзакция аварийно прерывается.

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

Решение проблемы: Шаг за шагом

Рассмотрим два основных варианта решения этой проблемы в зависимости от возможности обновления вашей конфигурации.

Способ 1. Обновление конфигурации (Рекомендуемый)

Компания «1С» признала данное поведение ошибкой проектирования прав доступа в ранних релизах ветки 3.1.13. Проблема была полностью локализована и исправлена начиная с релиза 3.1.13.146 и во всех последующих ветках (включая 3.1.14, 3.1.17 и современные 3.1.18+ / 3.1.27+).

В новых релизах разработчики применили один из следующих подходов:

Порядок действий для исправления:

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

Способ 2. Обходной путь без обновления (Если обновление невозможно)

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

Нам необходимо явно предоставить табельщикам доступ на чтение карточек подписантов документов. Для этого выполним следующие действия:

  1. Определите, какие именно физические лица выбраны в качестве ответственных лиц организации (директор, кадровик, бухгалтер).
  2. Перейдите в настройки групп доступа физических лиц.
  3. Временно добавьте этих руководителей (как физических лиц) во все группы доступа, которые назначены вашим ограниченным табельщикам.

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

Важные нюансы и подводные камни RLS в ЗУП 3.1

Внедряя RLS для табельщиков, необходимо помнить о нескольких важных архитектурных особенностях системы:

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

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

← На главную