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

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

Мы сталкиваемся с распространенной ситуацией, когда расширение конфигурации, работавшее безупречно на старых версиях совместимости (например, 8.3.12 или 8.3.13), вдруг перестает функционировать для пользователей без полных прав после того, как мы меняем режим совместимости на более новую версию платформы 1С:Предприятие, такую как 8.3.24. При этом для пользователей с полными правами расширение продолжает работать без каких-либо проблем. Разберем, в чем причина такого поведения и как мы можем исправить эту ситуацию.

Основная причина кроется в значительных изменениях, внесенных в механизм работы расширений и прав доступа, начиная с платформы 1С:Предприятие 8.3.14. Эти изменения затронули то, как платформа определяет доступность объектов расширения для различных категорий пользователей.

Эволюция механизма прав доступа для расширений: до и после версии 8.3.14

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

До версии 8.3.14

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

Именно поэтому ваше расширение функционировало нормально, пока режим совместимости был установлен на 8.3.12 или 8.3.13. Платформа воспринимала его как "старое" расширение и применяла к нему старую модель назначения прав, при которой отсутствие ролей в расширении фактически означало полный доступ для всех пользователей.

Начиная с версии 8.3.14

С выходом версии 8.3.14 платформа 1С:Предприятие внедрила более строгую и гибкую модель управления правами для расширений. Это было сделано для повышения безопасности и управляемости. Были введены новые свойства для расширений, которые теперь критически важны для их корректной работы:

  1. ОсновныеРоли (Main Roles):

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

  2. ИспользоватьОсновныеРолиДляВсехПользователей (Use Main Roles for All Users):

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

    • Если свойство установлено в значение Истина (или не установлено, так как часто это значение по умолчанию): Платформа постарается автоматически предоставить всем пользователям доступ к функциональности расширения, используя его ОсновныеРоли (если они определены). В некотором смысле, это свойство эмулирует старое поведение до 8.3.14, когда доступ предоставлялся по умолчанию.
    • Если свойство установлено в значение Ложь: Это кардинально меняет подход. В этом случае платформа не будет автоматически предоставлять доступ всем пользователям. Администратору системы необходимо будет явно добавить (назначить) роли, определенные в расширении, тем пользователям, которым требуется доступ к его функционалу. Если у пользователя нет полных прав и ему не назначена соответствующая роль расширения, он не сможет работать с объектами расширения.

    Важный нюанс: если ваше расширение основано на Библиотеке Стандартных Подсистем (БСП), то свойство ИспользоватьОсновныеРолиДляВсехПользователей может не поддерживаться или автоматически сбрасываться платформой в значение Ложь, что делает ручное назначение ролей пользователям обязательным.

Принцип назначения прав в новой модели:

Почему расширение перестало работать после изменения совместимости?

Когда вы изменили режим совместимости вашего расширения с 8.3.12/8.3.13 на 8.3.24, платформа 1С:Предприятие начала применять к нему новую модель прав, действующую с версии 8.3.14 и выше. Это означает, что если ранее доступ давался "по умолчанию", то теперь он требует либо явного назначения ролей расширения пользователям без полных прав, либо корректной настройки свойства ИспользоватьОсновныеРолиДляВсехПользователей.

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

Пошаговое решение проблемы

Мы предлагаем вам выполнить следующие шаги для восстановления работоспособности расширения для пользователей без полных прав:

1. Анализ ролей расширения в конфигураторе

Первым делом мы должны проанализировать само расширение в режиме конфигуратора.

  1. Откроем расширение в конфигураторе 1С:Предприятия.
  2. В дереве конфигурации расширения найдем ветку "Общие" и раскроем ее, чтобы найти объект "Роли".
  3. Проверим, определены ли в вашем расширении какие-либо собственные роли.
    • Если в расширении есть определенные роли: это означает, что вы можете использовать эти роли для гранулированного управления доступом. Перейдем к шагу 2.
    • Если в расширении нет определенных ролей: это может усложнить процесс, так как нечего назначать пользователям. В этом случае, скорее всего, нам потребуется создать хотя бы одну базовую роль в расширении с необходимыми правами или обеспечить, чтобы свойство ИспользоватьОсновныеРолиДляВсехПользователей было установлено в Истина.

2. Настройка свойства «ИспользоватьОсновныеРолиДляВсехПользователей»

Это ключевое свойство, определяющее автоматическое предоставление прав.

  1. В конфигураторе 1С выделим корень вашего расширения (самое верхнее название расширения в дереве конфигурации).
  2. Откроем палитру свойств этого объекта (обычно через меню "Вид" -> "Окно" -> "Свойства" или F4).
  3. Найдем свойство ИспользоватьОсновныеРолиДляВсехПользователей.
  4. Проверим его текущее значение:
    • Если оно установлено в Ложь: Это наиболее вероятная причина проблемы. В этом случае у нас есть два пути:
      • Вариант 1 (проще, если нужно всем): Установим значение свойства в Истина. После этого сохраним расширение и обновим конфигурацию базы данных. Это должно автоматически предоставить доступ к функционалу расширения всем пользователям, как это было на старых версиях совместимости. Однако, этот подход менее безопасен, так как предоставляет полный доступ к расширению всем, кому не назначены явные права.
      • Вариант 2 (рекомендуется для безопасности): Оставим значение свойства Ложь, но тогда перейдем к шагу 3, чтобы вручную назначить необходимые роли расширения пользователям. Этот подход обеспечивает более точное управление доступом.
    • Если оно уже установлено в Истина: Тогда проблема не в автоматическом предоставлении доступа. Возможно, дело в том, что в расширении нет ролей, или в самих ролях не хватает специфических прав, или же есть конфликты с основной конфигурацией. В этом случае мы все равно можем попробовать перейти к шагу 3 и/или шагу 4.

3. Назначение ролей расширения пользователям (если «ИспользоватьОсновныеРолиДляВсехПользователей» = Ложь)

Если мы выбрали безопасный подход (ИспользоватьОсновныеРолиДляВсехПользователей = Ложь) или если расширение основано на БСП, нам необходимо явно назначить роли расширения пользователям.

  1. Запустим 1С:Предприятие в режиме пользователя (не конфигуратора).
  2. Перейдем в раздел "Администрирование" (обычно через стандартные подсистемы БСП) и выберем пункт "Пользователи и права".
  3. Откроем список "Пользователи" и выберем пользователя, у которого расширение не работает.
  4. В карточке пользователя перейдем на вкладку "Права доступа" или "Роли".
  5. В списке доступных ролей найдем роли, принадлежащие вашему расширению. Они обычно имеют префикс расширения или находятся в отдельной группе.
  6. Установим флажки напротив тех ролей расширения, которые предоставляют доступ к необходимому функционалу.
  7. Повторим эту операцию для всех пользователей, которым нужен доступ к расширению.
  8. Проверим работоспособность расширения для этих пользователей.

4. Детальный анализ Журнала регистрации

Несмотря на то, что вы не увидели ничего подозрительного, внимательный повторный анализ журнала регистрации часто выявляет скрытые проблемы. Журнал регистрации является нашим главным инструментом для диагностики ошибок в режиме 1С:Предприятие.

  1. Откроем Журнал регистрации в режиме 1С:Предприятие (обычно "Администрирование" -> "Поддержка и обслуживание" -> "Журнал регистрации").
  2. Установим фильтр по типу события: "Ошибка" и "Предупреждение".
  3. Установим фильтр по объекту: попытаемся найти записи, связанные с вашим расширением или с объектами, которые оно изменяет/добавляет.
  4. Внимательно изучим записи, появившиеся после попыток пользователей без полных прав работать с расширением.
  5. Мы ищем сообщения, такие как:
    • "Ошибка обращения к объекту"
    • "Недостаточно прав"
    • "Нарушение прав доступа"
    • "Ошибка при вызове метода" (если связано с объектами расширения)
    • События, явно указывающие на проблемы с применением расширения конфигурации.
  6. Информация из журнала регистрации может подсказать нам, какие именно объекты или действия требуют дополнительных прав.

5. Адаптация расширения при существенном изменении совместимости

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

Рассмотрим возможные аспекты адаптации:

  1. Обновление свойств объектов: Проверим, все ли свойства объектов, которые использует или изменяет расширение, по-прежнему актуальны и поддерживаются в новой версии платформы.
  2. Исправление ошибок, связанных с изменением свойств объектов: Если расширение работает с метаданными или программным кодом, который использует специфичные для старой версии платформы конструкции, возможно, их придется переписать.
  3. Обновление форм, используемых в расширении: Формы могут потребовать пересохранения или адаптации к новым стандартам управляемых форм. Откроем каждую форму расширения в конфигураторе и попробуем ее сохранить, чтобы платформа обновила ее структуру. Иногда требуется пересоздание форм или ручная корректировка расположения элементов.
  4. Проверка программного кода: Внимательно изучим программный код расширения на предмет использования устаревших функций или методов, которые могли быть изменены в новых версиях платформы.

Мы видим, что переход на новые режимы совместимости 1С требует более внимательного подхода к управлению правами доступа для расширений. Тщательное изучение свойств расширения, настройка ролей и анализ журнала регистрации помогут нам успешно решить возникшую проблему.

← На главную