Как ограничить доступ к кнопке смены ФИО сотрудника в 1С:УПП 1.3 без программирования

Программист 1С v8.3 (Обычные формы)
← На главную

В типовой конфигурации «Управление производственным предприятием» (редакция 1.3) часто возникает задача ограничить права рядовых пользователей на изменение персональных данных сотрудников. Одной из таких задач является блокировка кнопки «Смена ФИО» в справочнике СотрудникиОрганизаций. Мы разберем, как сделать эту кнопку неактивной («серой»), используя исключительно стандартный механизм ролей и прав доступа, и выясним, почему простое снятие галочек в одной роли часто не приносит результата.

Анализ механизма хранения ФИО в системе

Прежде чем приступать к настройке прав, проанализируем, как система хранит данные о фамилии, имени и отчестве. В 1С:УПП 1.3 информация о ФИО является периодической (так как фамилия может меняться, например, при вступлении в брак). Эти данные хранятся не в самом справочнике СотрудникиОрганизаций или ФизическиеЛица, а в специальном регистре сведений — ФИОФизЛиц.

Кнопка в карточке сотрудника — это лишь интерфейсный элемент, который вызывает форму записи этого регистра. Следовательно, доступность кнопки напрямую зависит от наличия у пользователя прав на изменение (редактирование) данного регистра. Если система видит, что у текущего пользователя нет права Изменение для метаданных РегистрСведений.ФИОФизЛиц, она автоматически делает кнопку недоступной при открытии формы.

Шаг 1. Проверка прав на регистр сведений ФИОФизЛиц

Рассмотрим основной алгоритм действий. Для того чтобы кнопка стала недоступной, необходимо исключить право «Редактирование» (Update) для объекта РегистрСведений.ФИОФизЛиц. Выполним следующие действия в конфигураторе:

  1. Откроем дерево метаданных и найдем раздел «Роли».
  2. Проанализируем роли, назначенные конкретному пользователю.
  3. В каждой из этих ролей на закладке «Права» найдем РегистрСведений.ФИОФизЛиц.
  4. Снимем галочки с пунктов Изменение и Редактирование.

Важно помнить, что в системе 1С права разных ролей суммируются. Если у пользователя назначено пять ролей, и в четырех из них доступ запрещен, а в пятой — разрешен, то пользователь будет иметь доступ. Это ключевой момент, который часто сбивает с толку администраторов системы.

Шаг 2. Особая роль «Пользователь»

Проанализируем ситуацию, описанную в сообщениях форума. Часто администратор убирает права в профильных ролях (например, «Кадровик»), но кнопка остается активной. Причина кроется в базовой роли Пользователь. В конфигурации УПП 1.3 эта роль является обязательной для всех, кто работает в программе.

Разберем, почему это происходит. В типовой поставке роль Пользователь содержит минимальный набор прав, необходимых для запуска системы. Однако в некоторых релизах УПП в эту роль включены права на просмотр и редактирование личных данных, включая ФИОФизЛиц. Если вы хотите сделать кнопку недоступной для всех, кроме узкого круга лиц, вам придется отредактировать роль Пользователь.

Внимание: Изменение типовой роли Пользователь требует снятия конфигурации с поддержки (или возможности внесения изменений). Это может усложнить процесс последующего обновления. Если платформа позволяет (версия 8.3.6 и выше), рекомендуется использовать расширения для корректировки прав, однако в классической УПП 1.3 на обычных формах чаще всего приходится вносить правки напрямую в конфигурацию.

Шаг 3. Использование механизма «Поиск ссылок в объектах»

Чтобы точно выяснить, какая роль «дает» право на изменение ФИО, выполним технический анализ в конфигураторе:

  1. Нажмем правой кнопкой мыши на РегистрСведений.ФИОФизЛиц.
  2. Выберем пункт «Дополнительно» -> «Состав ролей».
  3. В открывшемся окне мы увидим полный список ролей, у которых установлены права на этот объект.
  4. Проанализируем список и сопоставим его с ролями, назначенными «проблемному» пользователю.

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

Особенности работы обычных форм в УПП 1.3

Выясним, почему иногда даже при ограничении прав кнопка может визуально оставаться активной, но выдавать ошибку при нажатии. Это происходит из-за различий в логике ПравоДоступа и физического ограничения на уровне СУБД.

Если в коде формы справочника СотрудникиОрганизаций прописана жесткая установка доступности элементов без учета прав, то кнопка будет активна. Однако в типовой УПП 1.3 для карточки сотрудника обычно используется процедура УстановитьДоступностьПолей(), которая вызывается при событии ПриОткрытии. Рассмотрим примерный фрагмент кода, который отвечает за это поведение (в контексте понимания того, на что влияют права):


// Пример логики, отрабатывающей внутри платформы или кода формы
ЭлементыФормы.КнопкаСменыФИО.Доступность = ПравоДоступа("Редактирование", Метаданные.РегистрыСведений.ФИОФизЛиц);

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

Альтернативный метод: Использование RLS

Если вам нужно запретить смену ФИО не всем, а только для определенных групп сотрудников (например, ограничить доступ к данным руководства), можно рассмотреть механизм RLS (Row Level Security) — ограничение прав на уровне записей.

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

Резюме решения

Подведем итоги нашего исследования. Для того чтобы скрыть кнопку смены ФИО в УПП 1.3 без программирования, необходимо выполнить следующие действия:

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

← На главную