При разработке и адаптации систем 1С с использованием расширений, одной из типовых задач является управление правами доступа к новым объектам, таким как документы. Часто возникает необходимость предоставить некоторым пользователям лишь ограниченный доступ, например, только для просмотра, без возможности редактирования или проведения. Рассмотрим подробнее, как корректно настроить права доступа к документу, созданному в расширении, чтобы обеспечить режим "только просмотр" для определенных пользователей.
Выясним причину, по которой, даже после, казалось бы, корректной настройки прав, документ всё равно может быть доступен для интерактивного редактирования. Проанализируем типичные ошибки и предложим эффективные подходы к решению этой задачи.
Прежде чем перейти к конкретным шагам, давайте разберем ключевой принцип работы прав доступа в системе 1С. Если пользователь имеет несколько ролей, и хотя бы одна из этих ролей предоставляет право на выполнение определенного действия (например, изменение документа), то это действие будет разрешено. Система работает по принципу "разрешено, если хотя бы одна роль разрешает". Это критически важный момент, который часто является причиной того, что, несмотря на отключение прав в одной роли, доступ всё равно сохраняется.
Для документов, которые мы создаем непосредственно в расширении, настоятельно рекомендуем создавать отдельные роли непосредственно в самом расширении. Такой подход обеспечивает максимальную гибкость и предсказуемость в управлении правами, поскольку мы не вносим изменения в роли основной конфигурации, что могло бы повлечь за собой нежелательные побочные эффекты или трудности при последующих обновлениях основной конфигурации.
Мы рассмотрим самый надежный и рекомендуемый способ, который позволяет четко разграничить права доступа для объектов расширения.
Мы начнем с создания двух новых ролей непосредственно в нашем расширении. Эти роли будут служить основой для гибкой настройки прав:
ДокументРасширения_ПолныеПрава. Эта роль будет предоставлять полный доступ к нашему документу (чтение, изменение, добавление, проведение, удаление).ДокументРасширения_ТолькоПросмотр. Эта роль будет разрешать только чтение документа.Для создания ролей откройте конфигуратор, перейдите в свойства вашего расширения, найдите раздел "Роли" и добавьте новые элементы.
Теперь мы подробно настроим права для каждой из созданных ролей на наш документ, который добавлен в расширении:
Для роли ДокументРасширения_ПолныеПрава:
Чтение, Добавление, Изменение, Проведение, Удаление.Просмотр и Редактирование для всех подчиненных объектов документа, таких как табличные части или реквизиты, если они могут быть отредактированы по отдельности.Для роли ДокументРасширения_ТолькоПросмотр:
Чтение.Добавление, Изменение, Проведение, Удаление. Убедитесь, что нет никаких других прав, которые могли бы косвенно разрешить изменение документа.Просмотр или Редактирование для подчиненных табличных частей или реквизитов, если они могут быть отредактированы по отдельности, кроме тех, что относятся к чтению.Данный подход позволяет нам избежать изменения ролей основной конфигурации и получить полностью управляемые права внутри расширения.
После того, как мы настроили роли, нам необходимо создать соответствующие профили групп доступа в режиме предприятия. Профили групп доступа позволяют нам комбинировать роли и удобно назначать их пользователям.
ДокументРасширения_ПолныеПрава.ДокументРасширения_ТолькоПросмотр.Этот шаг позволяет нам легко управлять, какие права получит пользователь, просто добавляя или удаляя нужный профиль.
Теперь, для каждого пользователя, которому мы хотим предоставить доступ к документу расширения, мы назначаем соответствующий профиль групп доступа:
Помните, что любое пересечение ролей, предоставляющее более широкие права, будет иметь приоритет. То есть, если у пользователя есть роль из основной конфигурации или другая роль из расширения, которая дает право на изменение данного документа, то право на изменение будет действовать, несмотря на то, что мы назначили роль "только просмотр". Это самая частая причина возникновения проблемы, когда "только просмотр" не работает.
Если после выполнения всех вышеописанных шагов документ все еще доступен для редактирования, несмотря на то, что мы установили только право на чтение, то мы должны провести дополнительную проверку. Рассмотрим распространенные причины и способы их устранения:
Это, пожалуй, самая распространенная причина. Убедитесь, что пользователь не имеет других ролей (как из основной конфигурации, так и из других расширений), которые случайно или явно предоставляют права на Изменение, Добавление, Проведение или Удаление нашего документа расширения. Для этого нам следует:
Мы должны убедиться, что у пользователя нет прав на редактирование подчиненных табличных частей или реквизитов документа, которые могут быть восприняты как возможность изменения всего документа. В некоторых случаях система может интерпретировать право на изменение части как право на изменение целого.
После любых изменений прав доступа, особенно в расширениях, настоятельно рекомендуем очистить кэш на стороне клиента и сервера 1С. Иногда система может использовать устаревшие данные о правах доступа. Для очистки кэша на стороне клиента можно удалить каталоги кэша в папке пользователя (%LOCALAPPDATA%\1C\1Cv8 или %APPDATA%\1C\1Cv8) или воспользоваться утилитой очистки кэша, если она доступна.
Даже если интерактивные права отключены, существует вероятность, что программный код (например, в обработчиках событий или общих модулях) может выполнять операции изменения данных. В таких случаях нам потребуется дополнительная проверка прав в самом коде перед выполнением критически важных операций. Это более редкий случай, но о нем стоит помнить при глубокой отладке.
В ходе обсуждения иногда поднимается вопрос о типе расширения ("Адаптация" или "Дополнение"). На практике, тип расширения в основном влияет на механизм его включения и взаимодействия с основной конфигурацией, но обычно не является прямой причиной некорректной работы прав доступа. Тем не менее, для поддержания порядка и предсказуемости, всегда рекомендуется использовать один тип расширения для каждой функциональной задачи и избегать смешивания, если это не обосновано.
Эффективное ограничение прав на документы, созданные в расширении 1С, до режима "только просмотр" требует внимательной и методичной настройки ролей. Ключевым моментом является создание отдельных ролей внутри расширения для каждого уровня доступа и тщательная проверка всех назначенных пользователю ролей на предмет пересечения прав. Следуя этим рекомендациям, мы сможем добиться точного контроля над доступом к нашим расширенным функционалам и обеспечить безопасность данных в системе 1С.