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

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

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

Разберем механизм суммирования прав в 1С

Первое, что мы должны вспомнить — это базовый принцип работы ролей в системе «1С:Предприятие». Права доступа работают по принципу логического «ИЛИ». Это означает, что если пользователю назначено несколько ролей (для их изучения полезен Анализ и сравнение ролей), и хотя бы в одной из них разрешено действие (например, ИнтерактивноеДобавление), то действие будет разрешено, даже если во всех остальных десяти ролях оно явно запрещено.

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

Проанализируем главную причину: свойство «Использовать основные роли для всех пользователей»

Как выяснилось в ходе обсуждения на форуме, наиболее вероятной причиной является одна-единственная настройка в окне управления расширениями (в этой ситуации поможет Анализ состава расширений). Рассмотрим подробнее, как она работает.

В списке расширений конфигурации (меню «Конфигурация» — «Расширения конфигурации») для каждого расширения предусмотрена колонка (флажок) под названием «Использовать основные роли для всех пользователей».

Если этот флажок установлен:

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

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

Разберем по шагам, как исправить настройки доступа

Чтобы восстановить контроль над правами доступа, нам необходимо выполнить следующие действия:

Шаг 1. Проверка свойств расширения. Откройте список расширений в конфигураторе или в режиме «1С:Предприятие» (если используется управление расширениями в интерфейсе). Найдите ваше расширение и снимите флажок Использовать основные роли для всех пользователей. Это отключит автоматическое назначение ролей. Для контроля текущего состояния прав пригодится Быстрая проверка прав доступа на объект метаданных.

Шаг 2. Настройка свойств роли внутри расширения. Откройте дерево метаданных вашего расширения. Перейдите в ветку Общие -> Роли. Выберите вашу роль и откройте её палитру свойств (F4). Убедитесь, что свойство Основная роль выключено (снято). Это позволит назначать данную роль только тем пользователям, которым она действительно нужна, через механизм «Профилей групп доступа».

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

Влияние «Полных прав» на работу расширений

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

Посмотрим на пример программной проверки прав, которую можно внедрить в модуль объекта или форму документа для более жесткого контроля:


Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
    Если Не ПравоДоступа("Изменение", Метаданные.Документы.МойНовыйДокументИзРасширения) Тогда
        Сообщить("У вас недостаточно прав для изменения этого документа, несмотря на общие настройки!");
        Отказ = Истина;
    КонецЕсли;
КонецПроцедуры

Метод ПравоДоступа() проверяет наличие права у текущего пользователя с учетом всех активных ролей. Однако, если проблема в «лишней» основной роли из расширения, этот метод всё равно вернет Истина, так как роль физически назначена пользователю.

Выясним причины «слетающих» флажков

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

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

Подводя итог нашему разбору, можно составить краткий чек-лист для проверки, если права в расширении работают не так, как ожидается:

  1. Проверьте, нет ли у пользователя роли Полные права в основной конфигурации.
  2. Убедитесь, что в свойствах расширения выключена опция Использовать основные роли для всех пользователей.
  3. В метаданных самой роли внутри расширения снимите признак Основная роль.
  4. Проверьте, не дают ли базовые роли (например, Базовые права БСП) доступ к объекту через общие механизмы (хотя для новых объектов расширения это маловероятно).
  5. Если нужно запретить доступ, который разрешен в основной конфигурации — используйте программные проверки в модулях, так как роли в расширениях работают только на добавление прав.

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

← На главную