Как исправить ошибку «Недостаточно прав» при открытии документов Увольнение и Отпуск в 1С:ЗУП 3.1.7?

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

Проблема ограниченного доступа в программных продуктах 1С на базе платформы 8.3 — одна из самых трудоемких в диагностике. Особенно остро это проявилось в версиях ЗУП КОРП 3.1.7.105 и последующих, когда фирма «1С» начала масштабную переработку механизмов RLS (Record Level Security). В данной статье мы подробно разберем ситуацию, когда кадровик успешно создает документ, но при попытке повторного открытия получает сообщение об ошибке прав доступа, и выясним, как это связано с регистром сведений ИспытательныйСрокСотрудников.

Анализ ситуации: почему возникает ошибка при чтении регистра?

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

Шаг 1. Диагностика через Журнал регистрации

Первое, что мы должны сделать — это точно определить «виновника». Не всегда сообщение об ошибке в интерфейсе явно указывает на объект. Рассмотрим последовательность действий для программиста:

  1. Запустим 1С в режиме отладки под пользователем, у которого воспроизводится проблема.
  2. Выполним операцию (открытие документа), приводящую к ошибке.
  3. Перейдем в Журнал регистрации (Раздел Администрирование — Обслуживание).
  4. Найдем последнюю запись с событием «Отказ в доступе».

В поле «Данные» журнала регистрации будет указана конкретная таблица. Если это РегистрСведений.ИспытательныйСрокСотрудников, значит, проблема именно в нем. Обратите внимание на поле «Ключ доступа» — если там пусто или указаны «Группы физических лиц», значит, RLS не может сопоставить права пользователя с данными конкретного сотрудника.

Шаг 2. Проверка прав в Конфигураторе

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

Важный нюанс: иногда бывает так, что право на Запись есть, а право на Чтение ограничено сложным шаблоном RLS, который в определенных условиях возвращает Ложь. Проанализируем шаблон доступа.

Шаг 3. Разбор шаблона RLS по группам физических лиц

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


#ПоЗначениям( "РегистрСведений.ИспытательныйСрокСотрудников","Чтение","", 
"Организации","Организация",
"ГруппыФизическихЛиц","ФизическоеЛицо", 
"","", "","", "","", "","", "","", "","", "","", "","", "","", "","", "","", "","", "","", "","" )

Проанализируем эту конструкцию. Система пытается проверить доступ одновременно по двум измерениям: Организация и Физическое лицо (через группы доступа физлиц). Ошибка часто возникает, если:

  1. В программе включен доступ по группам физических лиц (в настройках прав доступа).
  2. Конкретный сотрудник в документе не включен ни в одну группу доступа физлиц, либо у кадровика нет прав на ту группу, в которую входит сотрудник.
  3. Для роли установлено право на «Изменение», но в шаблоне RLS на «Чтение» стоит ограничение, которое не выполняется.

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

Шаг 4. Обновление ключей доступа и регламентные операции

Часто проблема кроется не в самих правах, а в «зависших» данных в служебных таблицах доступа. После обновления конфигурации на версию 3.1.7 структура RLS меняется, и старые записи в регистре КлючиДоступаКРегистрам могут стать невалидными. Разберем, как это исправить без программирования:

  1. Перейдем в раздел Администрирование — Обслуживание.
  2. Откроем пункт Управление доступом.
  3. Нажмем кнопку Обновить в подразделе «Обновление параметров системы».
  4. Дождемся завершения регламентных заданий по пересчету ключей доступа.

Это заставит систему пересчитать права для всех объектов с учетом новых алгоритмов RLS версии 3.1.7.

Шаг 5. Влияние функциональных опций кадрового учета

Выясним еще одну скрытую причину. В ЗУП существует функциональная опция «Использовать испытательный срок». Если в какой-то момент эта галочка была снята в настройках кадрового учета, но в базе остались документы с заполненными данными об испытательном сроке, система может вести себя неадекватно. При открытии документа код пытается прочитать данные из регистра ИспытательныйСрокСотрудников, но так как опция выключена, динамические права на этот регистр могут блокироваться платформой автоматически. Проверьте, активна ли данная опция, если вы используете этот функционал.

Шаг 6. Использование привилегированного режима (для разработчиков)

Если проблему не удается решить штатными настройками (например, из-за ошибки в коде конкретного релиза), рассмотрим программный путь. В более поздних версиях (3.1.8+) разработчики 1С перевели чтение данных испытательного срока в привилегированный режим. Если вы не можете обновиться, можно внести изменения в расширении:

Найдем в модуле менеджера регистра ИспытательныйСрокСотрудников или в модуле документа Увольнение (в процедурах заполнения формы) место обращения к регистру. Обернем чтение данных в привилегированный модуль или используем УстановитьПривилегированныйРежим(Истина).


УстановитьПривилегированныйРежим(Истина);
// Чтение данных из регистра сведений
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ * ИЗ РегистрСведений.ИспытательныйСрокСотрудников ГДЕ Сотрудник = &Сотрудник";
// ... выполнение запроса
УстановитьПривилегированныйРежим(Ложь);

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

Резюме и рекомендации

Подведем итоги. Ошибка «Недостаточно прав» при открытии документов в ЗУП 3.1.7 чаще всего связана с ужесточением контроля RLS над вспомогательными регистрами. Для решения проблемы мы рекомендуем:

  1. Всегда начинать с Журнала регистрации для локализации таблицы.
  2. Проверять наличие прав не только на основной документ, но и на связанные регистры (в данном случае — испытательный срок).
  3. Проверять заполнение групп доступа физических лиц.
  4. Выполнять обновление параметров доступа в разделе «Обслуживание».

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

← На главную