Почему пользователь видит и может редактировать справочник в 1С при отсутствии прав доступа?

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

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

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

Причина 1. Флаг «Устанавливать права для новых объектов» в свойствах существующих ролей

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

Выясним, как это работает на практике:

  1. По стандартам разработки фирмы «1С» этот флаг должен быть взведен исключительно у роли ПолныеПрава.
  2. Если при создании каких-то кастомных (самописных) ролей разработчик случайно оставил этот флаг активным, то при добавлении любого нового справочника или документа эта роль автоматически получит на него полные права.
  3. Если у вашего "проблемного" пользователя назначена хотя бы одна такая роль с включенным свойством автоназначения прав, он мгновенно получит доступ к новому объекту. При этом в конфигураторе на вкладке «Права» самого справочника эти флажки могут не отображаться как явно назначенные, что вводит разработчика в заблуждение.

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

Причина 2. Специфика работы расширений конфигурации

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

Рассмотрим подробнее логику платформы в этом сценарии:

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

Причина 3. Сбои в работе подсистемы «Управление доступом» БСП

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

Выясним причину сбоя на уровне БСП:

Для оптимизации проверки прав БСП кэширует структуру метаданных и права ролей в специальных служебных справочниках и регистрах сведений (таких как справочник ИдентификаторыОбъектовМетаданных и регистры ПраваРолей, ТаблицыГруппДоступа).

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

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

Решение проблемы:

Для принудительного обновления вспомогательных данных БСП выполните следующие действия:

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

// Принудительное обновление идентификаторов объектов метаданных всей ИБ
Справочники.ИдентификаторыОбъектовМетаданных.ОбновитьДанныеВсейИБ();

Также вы можете воспользоваться стандартной обработкой БСП «Обновление вспомогательных данных» (доступна через функции для технического специалиста) и запустить полное обновление регистров управления доступом вручную.

Причина 4. Некорректное кэширование прав пользователя платформой

Иногда проблема кроется не в логике конфигурации или БСП, а в локальном кэше сеанса пользователя или кэше сервера «1С:Предприятие». В процессе активной разработки структуры метаданных и частого изменения ролей платформа может некорректно сопоставлять права для конкретного уникального идентификатора пользователя (UUID).

Разберем, как исправить эту редкую, но неприятную ошибку:

  1. Попробуйте очистить локальный кэш конфигурации на компьютере пользователя. Для этого удалите базу из списка запуска и добавьте её заново, либо запустите 1С с параметром /ClearCache.
  2. Если это не помогло, имеет место программный сбой связи UUID пользователя ИБ и его настроек прав. В этом случае удалите проблемного пользователя в конфигураторе (или в режиме «1С:Предприятие» в справочнике «Пользователи»), сохраните изменения, а затем создайте его заново с теми же правами и настройками. Данное действие гарантированно сбросит все некорректные связи прав на уровне СУБД.

Причина 5. Использование привилегированного режима выполнения кода

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

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

← На главную