Как ограничить права на документ, созданный в расширении 1С, до режима "только просмотр"?

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

При разработке и адаптации систем 1С с использованием расширений, одной из типовых задач является управление правами доступа к новым объектам, таким как документы. Часто возникает необходимость предоставить некоторым пользователям лишь ограниченный доступ, например, только для просмотра, без возможности редактирования или проведения. Рассмотрим подробнее, как корректно настроить права доступа к документу, созданному в расширении, чтобы обеспечить режим "только просмотр" для определенных пользователей.

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

Основополагающие принципы работы прав доступа в 1С

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

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

Подход 1: Создание специализированных ролей в расширении для разграничения доступа

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

  1. Создание необходимых ролей в расширении

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

    • Роль с полными правами: Предположим, мы назовем её ДокументРасширения_ПолныеПрава. Эта роль будет предоставлять полный доступ к нашему документу (чтение, изменение, добавление, проведение, удаление).
    • Роль с ограниченными правами (только просмотр): Назовем её, например, ДокументРасширения_ТолькоПросмотр. Эта роль будет разрешать только чтение документа.

    Для создания ролей откройте конфигуратор, перейдите в свойства вашего расширения, найдите раздел "Роли" и добавьте новые элементы.

  2. Настройка прав для каждой роли

    Теперь мы подробно настроим права для каждой из созданных ролей на наш документ, который добавлен в расширении:

    1. Для роли ДокументРасширения_ПолныеПрава:

      • Установите флажки для всех интерактивных операций, которые мы хотим разрешить: Чтение, Добавление, Изменение, Проведение, Удаление.
      • Также убедитесь, что установлены права на Просмотр и Редактирование для всех подчиненных объектов документа, таких как табличные части или реквизиты, если они могут быть отредактированы по отдельности.
    2. Для роли ДокументРасширения_ТолькоПросмотр:

      • Установите флажок только для операции Чтение.
      • Критически важно: снимите все остальные флажки интерактивных операций, такие как Добавление, Изменение, Проведение, Удаление. Убедитесь, что нет никаких других прав, которые могли бы косвенно разрешить изменение документа.
      • Также проверьте, что нет прав на Просмотр или Редактирование для подчиненных табличных частей или реквизитов, если они могут быть отредактированы по отдельности, кроме тех, что относятся к чтению.

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

  3. Создание профилей групп доступа

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

    • Создайте профиль, например, "Доступ к Документу Расширения (Полный)", и включите в него роль ДокументРасширения_ПолныеПрава.
    • Создайте другой профиль, например, "Доступ к Документу Расширения (Только Просмотр)", и включите в него роль ДокументРасширения_ТолькоПросмотр.

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

  4. Назначение профилей пользователям

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

    • Если пользователю нужен полный доступ, мы добавляем ему профиль "Доступ к Документу Расширения (Полный)".
    • Если пользователю нужен только просмотр, мы добавляем ему профиль "Доступ к Документу Расширения (Только Просмотр)".

    Помните, что любое пересечение ролей, предоставляющее более широкие права, будет иметь приоритет. То есть, если у пользователя есть роль из основной конфигурации или другая роль из расширения, которая дает право на изменение данного документа, то право на изменение будет действовать, несмотря на то, что мы назначили роль "только просмотр". Это самая частая причина возникновения проблемы, когда "только просмотр" не работает.

Рекомендации и шаги по устранению неполадок (если документ всё равно редактируется)

Если после выполнения всех вышеописанных шагов документ все еще доступен для редактирования, несмотря на то, что мы установили только право на чтение, то мы должны провести дополнительную проверку. Рассмотрим распространенные причины и способы их устранения:

  1. Проверка наличия других ролей у пользователя

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

    • Открыть список ролей пользователя в режиме предприятия.
    • Тщательно проанализировать все назначенные профили и роли.
    • В конфигураторе для каждой роли, назначенной пользователю, проверить права на ваш документ расширения. Если хотя бы одна роль дает право на изменение, это право будет действовать.
    • Если мы обнаружим такую роль, нам необходимо либо скорректировать её, либо удалить из профиля пользователя, либо исключить её из группы доступа.
  2. Детализация прав на подчиненные объекты

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

  3. Очистка кэша 1С

    После любых изменений прав доступа, особенно в расширениях, настоятельно рекомендуем очистить кэш на стороне клиента и сервера 1С. Иногда система может использовать устаревшие данные о правах доступа. Для очистки кэша на стороне клиента можно удалить каталоги кэша в папке пользователя (%LOCALAPPDATA%\1C\1Cv8 или %APPDATA%\1C\1Cv8) или воспользоваться утилитой очистки кэша, если она доступна.

  4. Проверка программного доступа

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

  5. Тип расширения: "Адаптация" или "Дополнение"

    В ходе обсуждения иногда поднимается вопрос о типе расширения ("Адаптация" или "Дополнение"). На практике, тип расширения в основном влияет на механизм его включения и взаимодействия с основной конфигурацией, но обычно не является прямой причиной некорректной работы прав доступа. Тем не менее, для поддержания порядка и предсказуемости, всегда рекомендуется использовать один тип расширения для каждой функциональной задачи и избегать смешивания, если это не обосновано.

Заключение

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

← На главную