Мы сталкиваемся с распространенной ситуацией, когда расширение конфигурации, работавшее безупречно на старых версиях совместимости (например, 8.3.12 или 8.3.13), вдруг перестает функционировать для пользователей без полных прав после того, как мы меняем режим совместимости на более новую версию платформы 1С:Предприятие, такую как 8.3.24. При этом для пользователей с полными правами расширение продолжает работать без каких-либо проблем. Разберем, в чем причина такого поведения и как мы можем исправить эту ситуацию.
Основная причина кроется в значительных изменениях, внесенных в механизм работы расширений и прав доступа, начиная с платформы 1С:Предприятие 8.3.14. Эти изменения затронули то, как платформа определяет доступность объектов расширения для различных категорий пользователей.
Прежде чем перейти к решению проблемы, давайте рассмотрим, как работал механизм прав доступа для расширений в разных версиях платформы.
В более старых версиях платформы 1С:Предприятие (включая 8.3.12 и 8.3.13), если расширение конфигурации не содержало явно определенных собственных ролей, то платформа по умолчанию предоставляла доступ ко всем объектам этого расширения для всех пользователей информационной базы. Это было удобное, но менее безопасное поведение, которое часто позволяло расширениям "просто работать" без дополнительной настройки прав, даже если у пользователей не было полных прав в основной конфигурации.
Именно поэтому ваше расширение функционировало нормально, пока режим совместимости был установлен на 8.3.12 или 8.3.13. Платформа воспринимала его как "старое" расширение и применяла к нему старую модель назначения прав, при которой отсутствие ролей в расширении фактически означало полный доступ для всех пользователей.
С выходом версии 8.3.14 платформа 1С:Предприятие внедрила более строгую и гибкую модель управления правами для расширений. Это было сделано для повышения безопасности и управляемости. Были введены новые свойства для расширений, которые теперь критически важны для их корректной работы:
ОсновныеРоли (Main Roles):
Это свойство расширения конфигурации позволяет явно указать роли, которые определяют доступность объектов расширения при пустом списке пользователей или для неавторизованных пользователей. Если в расширении присутствуют свои собственные роли, это свойство позволяет нам задать базовый набор прав, который будет применяться к функционалу расширения.
ИспользоватьОсновныеРолиДляВсехПользователей (Use Main Roles for All Users):
Это свойство регулирует, будут ли все пользователи информационной базы автоматически получать доступ к функциям расширения, описанным в его основных ролях. Рассмотрим его значение подробнее:
Истина (или не установлено, так как часто это значение по умолчанию): Платформа постарается автоматически предоставить всем пользователям доступ к функциональности расширения, используя его ОсновныеРоли (если они определены). В некотором смысле, это свойство эмулирует старое поведение до 8.3.14, когда доступ предоставлялся по умолчанию.
Ложь: Это кардинально меняет подход. В этом случае платформа не будет автоматически предоставлять доступ всем пользователям. Администратору системы необходимо будет явно добавить (назначить) роли, определенные в расширении, тем пользователям, которым требуется доступ к его функционалу. Если у пользователя нет полных прав и ему не назначена соответствующая роль расширения, он не сможет работать с объектами расширения.
Важный нюанс: если ваше расширение основано на Библиотеке Стандартных Подсистем (БСП), то свойство ИспользоватьОсновныеРолиДляВсехПользователей может не поддерживаться или автоматически сбрасываться платформой в значение Ложь, что делает ручное назначение ролей пользователям обязательным.
Принцип назначения прав в новой модели:
ИспользоватьОсновныеРолиДляВсехПользователей установлено в Ложь.ИспользоватьОсновныеРолиДляВсехПользователей равно Ложь, доступ может быть ограничен.Когда вы изменили режим совместимости вашего расширения с 8.3.12/8.3.13 на 8.3.24, платформа 1С:Предприятие начала применять к нему новую модель прав, действующую с версии 8.3.14 и выше. Это означает, что если ранее доступ давался "по умолчанию", то теперь он требует либо явного назначения ролей расширения пользователям без полных прав, либо корректной настройки свойства ИспользоватьОсновныеРолиДляВсехПользователей.
У пользователя с полными правами расширение продолжает работать, потому что полные права по определению дают доступ ко всем объектам конфигурации и расширений, обходя большинство проверок на права доступа к отдельным объектам.
Мы предлагаем вам выполнить следующие шаги для восстановления работоспособности расширения для пользователей без полных прав:
Первым делом мы должны проанализировать само расширение в режиме конфигуратора.
ИспользоватьОсновныеРолиДляВсехПользователей было установлено в Истина.Это ключевое свойство, определяющее автоматическое предоставление прав.
ИспользоватьОсновныеРолиДляВсехПользователей.Ложь: Это наиболее вероятная причина проблемы. В этом случае у нас есть два пути:
Истина. После этого сохраним расширение и обновим конфигурацию базы данных. Это должно автоматически предоставить доступ к функционалу расширения всем пользователям, как это было на старых версиях совместимости. Однако, этот подход менее безопасен, так как предоставляет полный доступ к расширению всем, кому не назначены явные права.Ложь, но тогда перейдем к шагу 3, чтобы вручную назначить необходимые роли расширения пользователям. Этот подход обеспечивает более точное управление доступом.Истина: Тогда проблема не в автоматическом предоставлении доступа. Возможно, дело в том, что в расширении нет ролей, или в самих ролях не хватает специфических прав, или же есть конфликты с основной конфигурацией. В этом случае мы все равно можем попробовать перейти к шагу 3 и/или шагу 4.Если мы выбрали безопасный подход (ИспользоватьОсновныеРолиДляВсехПользователей = Ложь) или если расширение основано на БСП, нам необходимо явно назначить роли расширения пользователям.
Несмотря на то, что вы не увидели ничего подозрительного, внимательный повторный анализ журнала регистрации часто выявляет скрытые проблемы. Журнал регистрации является нашим главным инструментом для диагностики ошибок в режиме 1С:Предприятие.
В некоторых случаях, особенно при очень большом скачке в версиях совместимости (например, с 8.3.12 до 8.3.24), может потребоваться не только настройка прав, но и адаптация самого расширения. Платформа постоянно развивается, и некоторые методы, свойства или элементы управления могут быть изменены, добавлены или удалены.
Рассмотрим возможные аспекты адаптации:
Мы видим, что переход на новые режимы совместимости 1С требует более внимательного подхода к управлению правами доступа для расширений. Тщательное изучение свойств расширения, настройка ролей и анализ журнала регистрации помогут нам успешно решить возникшую проблему.