При разработке и внедрении новых объектов в конфигурацию «1С:Предприятие 8» специалисты часто сталкиваются с парадоксальной ситуацией: в систему добавляется новый справочник, создается специализированная роль, права доступа настраиваются строго по регламенту, однако рядовой пользователь без полных прав и без новой роли всё равно видит этот справочник, может открывать его формы и создавать новые элементы. Более того, отчет по правам доступа утверждает, что у пользователя нет никаких прав на этот объект.
В этой статье мы подробно проанализируем причины этой проблемы, разберем особенности платформы и логику работы Библиотеки стандартных подсистем (БСП), а также рассмотрим пошаговые инструкции по исправлению этой ошибки.
Проанализируем базовое поведение платформы «1С:Предприятие» при добавлении новых объектов метаданных. Когда в конфигурацию добавляется новый справочник, платформа должна определить, какие из существующих ролей автоматически получат на него права. За это поведение отвечает свойство роли «Устанавливать права для новых объектов».
Выясним, как это работает на практике:
ПолныеПрава.Решение проблемы: Откройте конфигуратор, перейдите к списку ролей. Поочередно откройте свойства каждой роли (особенно кастомных) и проверьте статус флага «Устанавливать права для новых объектов». Снимите его везде, кроме роли полных прав. После этого обновите конфигурацию базы данных.
Если новый справочник был добавлен не в основную конфигурацию, а через механизм расширений, то в силу вступают особые правила платформы по работе с безопасностью.
Рассмотрим подробнее логику платформы в этом сценарии:
Решение проблемы: Чтобы ограничить доступ к объектам расширения, обязательно добавьте в само расширение хотя бы одну роль (даже пустую). Как только в расширении появится хотя бы одна роль, платформа перейдет в стандартный режим ограничения прав, и доступ к новым объектам расширения у обычных пользователей пропадет. После этого настройте права в расширении явным образом.
В современных конфигурациях, построенных на базе БСП (например, «1С:ERP», «1С:Комплексная автоматизация», «1С:Управление торговлей», «1С:Бухгалтерия»), права пользователей регулируются не напрямую ролями платформы, а через программные механизмы групп доступа и профилей.
Выясним причину сбоя на уровне БСП:
Для оптимизации проверки прав БСП кэширует структуру метаданных и права ролей в специальных служебных справочниках и регистрах сведений (таких как справочник ИдентификаторыОбъектовМетаданных и регистры ПраваРолей, ТаблицыГруппДоступа).
Когда вы добавляете новый справочник в конфигураторе и обновляете базу данных, БСП в режиме «1С:Предприятие» еще не знает о его существовании, так как таблицы интеграции не обновились. Из-за этого механизмы ограничения прав могут временно игнорировать новый объект, предоставляя к нему несанкционированный доступ.
Обычно за обновление этих данных отвечает фоновое задание по пересчету прав доступа, но оно может зависнуть, завершиться с ошибкой или вовсе быть отключено в клиент-серверном варианте базы.
Решение проблемы:
Для принудительного обновления вспомогательных данных БСП выполните следующие действия:
// Принудительное обновление идентификаторов объектов метаданных всей ИБ
Справочники.ИдентификаторыОбъектовМетаданных.ОбновитьДанныеВсейИБ();
Также вы можете воспользоваться стандартной обработкой БСП «Обновление вспомогательных данных» (доступна через функции для технического специалиста) и запустить полное обновление регистров управления доступом вручную.
Иногда проблема кроется не в логике конфигурации или БСП, а в локальном кэше сеанса пользователя или кэше сервера «1С:Предприятие». В процессе активной разработки структуры метаданных и частого изменения ролей платформа может некорректно сопоставлять права для конкретного уникального идентификатора пользователя (UUID).
Разберем, как исправить эту редкую, но неприятную ошибку:
/ClearCache.Проанализируем ситуацию, когда у пользователя действительно нет прав на справочник в конфигураторе, но форма справочника все равно открывается и позволяет совершать манипуляции с данными.
Это может происходить из-за программного открытия формы в привилегированном режиме. Если разработчик открывает форму или создает элемент справочника из общего модуля, у которого взведен флаг «Привилегированный», проверка прав платформой полностью отключается. Проверьте, не вызывается ли при открытии форм этого справочника метод УстановитьПривилегированныйРежим(Истина), который временно обходит все установленные ограничения.