Почему пользователь может работать с документом в расширении, если в роли запрещено добавление?

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

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

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

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

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

Разберем по шагам, что нужно сделать в режиме 1С:Предприятие под правами администратора:

  1. Откроем список Профили групп доступа (раздел Администрирование — Настройки пользователей и прав).
  2. Проверим, включена ли ваша новая роль из расширения в соответствующий профиль, назначенный пользователю.
  3. Если роль добавлена, но права не применяются, необходимо запустить обновление справочника идентификаторов. В некоторых случаях это происходит автоматически при обновлении версии расширения, но иногда требуется принудительный запуск.

Для программного обновления идентификаторов метаданных (если автоматическое не сработало) можно использовать следующий метод:

Справочники.ИдентификаторыОбъектовМетаданных.ОбновитьДанныеСправочника();

Это заставит систему пересчитать дерево объектов и корректно сопоставить роли расширения с механизмами БСП.

Причина 2. Свойство расширения «Устанавливать основные роли»

Выясним причину, скрытую в свойствах самого объекта Расширение. Если мы нажмем правой кнопкой мыши на корень расширения в дереве конфигурации и выберем Свойства, мы увидим флаг Устанавливать основные роли.

Посмотрим, как это работает:

Рекомендация: Всегда проверяйте состав основных ролей в расширении и состояние этого флага. Для управляемого доступа лучше назначать роли явно через профили групп доступа в режиме Предприятие.

Причина 3. Принцип суммирования прав в 1С

Проанализируем ситуацию с точки зрения базовых принципов платформы 1С:Предприятие 8.3. Права в системе работают только на сложение (объединение). Это означает, что если у пользователя есть 10 ролей, и 9 из них запрещают создание документа, а всего одна (хоть из основной конфигурации, хоть из другого расширения) — разрешает, то пользователь сможет создавать документ.

Рассмотрим, какие роли были у пользователя в примере:

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

Причина 4. Роль «Полный доступ» и административные привилегии

В первом сообщении автор упоминает: «У пользователя полный доступ». Здесь важно различать два понятия:

  1. Наличие роли ПолныйДоступ в метаданных (которая обычно включает право Администрирование).
  2. Субъективное ощущение программиста, что у пользователя «много прав».

Если у пользователя действительно есть роль с правом Администрирование или ПолныйДоступ, то любые ограничения на уровне объектов метаданных (чтение, добавление, изменение) на него не действуют. Платформа игнорирует проверки прав для администраторов. В этом случае ограничить создание документа можно только программно — в модуле объекта документа в обработчике ПередЗаписью.

Пример программного ограничения:


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

Причина 5. Кэширование прав доступа

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

Что стоит попробовать в такой ситуации:

Итоговый алгоритм решения проблемы

Подведем итог и составим четкую последовательность действий для исправления ситуации, когда права в расширении «не слушаются» программиста:

  1. Проверка в Конфигураторе: Убедитесь, что в роли расширения действительно сняты флаги Добавление и Интерактивное добавление. Убедитесь, что эта роль не отмечена как основная в свойствах расширения, если вы хотите управлять ею через профили.
  2. Анализ состава ролей: Проверьте, нет ли у пользователя других ролей, дающих право на этот объект. Помните: права суммируются.
  3. Действия в Предприятии (БСП): Зайдите в раздел Администрирование -> Настройки пользователей и прав -> Профили групп доступа. Создайте новый профиль или отредактируйте существующий, добавив туда вашу роль из расширения. Назначьте этот профиль пользователю.
  4. Обновление метаданных: Если объект новый, убедитесь, что система его «увидела». Можно воспользоваться обработкой «Инструменты разработчика» или просто обновить профиль доступа, что часто инициирует пересчет прав в БСП.
  5. Тестирование: Проверьте создание документа под обычным пользователем (не под администратором!), так как для администратора ограничения прав не действуют.

Именно выполнение действий в режиме 1С:Предприятие (настройка профилей групп доступа) является ключевым моментом для конфигураций типа УТ 11, так как они перехватывают стандартное управление ролями платформы и накладывают свою логику поверх метаданных.

← На главную