Роли и права доступа в расширении конфигурации 1С
Содержание
Чтобы добавить роль в расширение 1С, откройте расширение в Конфигураторе, в дереве найдите ветку Общие → Роли и создайте новую роль. Отметьте в ней права на объекты расширения, обновите конфигурацию базы данных. Затем включите роль в профиль группы доступа (в типовых на БСП) или прямо в список ролей пользователя (в простых конфигурациях).
Типичная боль выглядит так: доработку поставили, администратор всё видит, а бухгалтер получает Нарушение прав доступа! или вообще не находит новый отчёт в меню. Почти всегда причина одна: права на новые объекты никто не выдал. Механизм общий для платформы 8.3 и не зависит от конфигурации. Различается только последний шаг — как роль попадает к пользователю.
Как устроены права доступа в расширении конфигурации
Расширения появились в платформе 8.3.6. Права в них работают по нескольким простым правилам. Их стоит держать в голове, прежде чем добавлять роли.
- 🔹 Права только добавляются. Роль расширения может дать пользователю доступ, но не может забрать то, что выдала роль основной конфигурации. Итоговые права — объединение всех ролей пользователя.
- 🔹 Свои объекты расширения требуют своих прав. Новый отчёт, обработка, справочник или регистр, созданные в расширении, — это новые объекты метаданных. Их нужно явно отметить в роли.
- 🔹 Объект основной конфигурации сначала заимствуют. Чтобы роль расширения дала право на типовой документ или справочник, этот объект добавляют в расширение как заимствованный. Только после этого он появляется в редакторе прав роли расширения.
- 🔹 Роль основной конфигурации тоже можно заимствовать. Тогда пользователи, у которых она уже есть, получают права, отмеченные в расширении, без перенастройки профилей.
Отсюда два подхода. Первый — отдельная собственная роль расширения: её видно в списках, её легко выдать и легко отозвать. Второй — заимствованная типовая роль: удобно, когда новый объект должны видеть все, кто работает с этим участком учёта.
| Подход | Когда подходит | Минусы |
|---|---|---|
| Собственная роль расширения | Доступ нужен части пользователей; доработка самостоятельная | Нужно включить роль в профили или выдать пользователям |
| Заимствованная роль основной конфигурации | Доступ нужен всем, у кого есть типовая роль | Нельзя выдать доступ точечно; после обновления типовой конфигурации надо проверить, что расширение применяется |
Для большинства доработок проще собственная роль. Её назначение видно по имени, а в профилях БСП её можно включать и снимать галочкой.
Создаём новую роль в расширении через Конфигуратор
Для работы нужен вход в Конфигуратор под пользователем с административными правами. Монопольный режим для создания роли не нужен, он понадобится только при обновлении структуры базы, если в расширении есть новые таблицы.
- Откройте базу в режиме Конфигуратор.
- Выберите в меню
Конфигурация → Расширения конфигурации. - В списке найдите своё расширение и откройте его (двойной щелчок). Слева появится отдельное дерево метаданных расширения.
- Раскройте ветку
Общие → Роли. - Нажмите Добавить (или клавишу
Insert). Откроется редактор новой роли. - Задайте имя на вкладке свойств. Хорошая практика — тот же префикс, что у объектов расширения, и понятный смысл:
мр_ЗагрузкаПрайсов,мр_ОтчетПоМаржеЧтение. - Заполните Синоним — его увидят администраторы в профилях групп доступа. Пишите по-человечески: «Загрузка прайс-листов поставщиков (расширение)».
Пометка «(расширение)» в синониме окупается сразу. Через год в профиле на 200 ролей вы найдёте свою за секунду.
Свойства роли, которые стоит проверить
У роли в расширении есть те же флаги, что и у роли основной конфигурации:
- ⚙️ Устанавливать права для новых объектов — если включён, объекты, добавленные в расширение позже, получат права в этой роли автоматически. Для узкой роли его лучше снять, чтобы она не разрасталась незаметно.
- ⚙️ Устанавливать права для реквизитов и табличных частей по умолчанию — обычно оставляют включённым, иначе придётся отмечать каждый реквизит.
- ⚙️ Независимые права подчинённых объектов — включают, когда нужно запретить доступ к отдельному реквизиту при доступе к объекту в целом.
Права на объекты расширения и заимствованные объекты
Редактор роли — это таблица: слева дерево объектов, справа список прав выделенного объекта. Набор прав зависит от типа объекта.
| Тип объекта | Минимум для работы | Для ввода и изменения добавьте |
|---|---|---|
| Отчёт, обработка | Использование, Просмотр | — |
| Справочник | Чтение, Просмотр | Добавление, Изменение, Интерактивное добавление, Редактирование |
| Документ | Чтение, Просмотр | Добавление, Изменение, Проведение, Отмена проведения, интерактивные права |
| Регистр сведений | Чтение, Просмотр | Изменение, Редактирование |
| Регистр накопления | Чтение | Изменение (если пишет код под этой ролью) |
| Подсистема, общая команда | Просмотр | — |
Права-пары работают так: «Чтение» разрешает получить данные вообще (в том числе программно), «Просмотр» — открыть форму в интерфейсе. Пользователю, который работает руками, нужны оба. Если поставить только «Просмотр», форма откроется, но данные не прочитаются.
Как дать право на объект основной конфигурации
Допустим, ваш отчёт в расширении читает регистр, на который у менеджеров нет прав. Или вы добавили в типовой документ новый реквизит.
- В дереве основной конфигурации найдите нужный объект.
- Через контекстное меню выполните Добавить в расширение и выберите своё расширение.
- Объект появится в дереве расширения как заимствованный.
- Откройте роль расширения — теперь объект виден в редакторе прав. Отметьте нужные права.
Реквизит, добавленный расширением в заимствованный объект, тоже является объектом расширения. Если у роли выключено «Устанавливать права для реквизитов… по умолчанию», право на него надо отметить отдельно.
Как попасть в меню
Новый отчёт может быть доступен, но не виден. В командный интерфейс объект попадает через подсистему. Заимствуйте нужный раздел (например, подсистему «Продажи»), включите в неё свой объект и дайте в роли право Просмотр на эту подсистему. Без этого пользователь откроет отчёт только по прямой ссылке или через поиск по меню, если права на объект есть.
Сохранение и обновление базы
После правок нажмите Обновить конфигурацию
базы данных (F7) для расширения. Если в расширении появились новые таблицы — справочники, документы, регистры, реквизиты, — платформе нужна реструктуризация.
Обновление структуры базы требует, чтобы в базе не было других пользователей. Делайте это вне рабочего времени или предупредите людей: их сеансы придётся завершить. Перед реструктуризацией рабочей базы сделайте резервную копию.
Если вы получили готовый файл .cfe от разработчика, загрузка файла и обновление базы — два разных шага. Загрузить расширение
мало, его конфигурацию нужно ещё применить к базе.
Как включить роль расширения в профиль группы доступа
В типовых конфигурациях на БСП — Бухгалтерия 3.0, ЗУП 3.1, УТ 11, КА, ERP — роли пользователям выдаются через профили и группы доступа. Это главный шаг, который пропускают чаще всего.
Не выдавайте роль из Конфигуратора напрямую в базе на БСП. Подсистема управления доступом пересчитывает роли пользователей по группам доступа. Роль, назначенную в обход профиля, она снимет при ближайшем обновлении.
Путь в БП 3.0, ЗУП 3.1 и УТ 11 одинаковый: Администрирование → Настройки пользователей и прав → Профили групп доступа.
- Убедитесь, что расширение установлено и активно, а вы перезашли в программу после его установки. Иначе роли расширения в списке не будет.
- Откройте профили групп доступа.
- Поставляемый профиль («Бухгалтер», «Менеджер по продажам») изменить нельзя — его роли заблокированы. Выделите его и скопируйте. У копии укажите понятное имя, например «Бухгалтер + загрузка прайсов».
- Откройте вкладку со списком ролей (разрешённых действий) в карточке профиля.
- Найдите роль по синониму через поиск по списку и поставьте галочку.
- Запишите профиль.
Если доработкой должны пользоваться несколько профилей, создайте отдельный небольшой профиль только с ролью расширения. Его можно добавлять в группы доступа рядом с основным: права из групп складываются.
Отдельный профиль под доработку проще сопровождать. Когда расширение удалят, вы удалите один профиль, а не будете чистить пять копий типовых.
Как выдать роль пользователям
Через группы доступа (конфигурации на БСП)
- Перейдите в
Администрирование → Настройки пользователей и прав → Группы доступа. - Создайте группу или откройте существующую.
- Укажите в поле профиля скопированный или отдельный профиль с ролью расширения.
- На вкладке участников добавьте пользователей или группу пользователей.
- Запишите группу.
Роли применяются при входе в программу. Пользователю, который сейчас работает, надо перезапустить 1С. Если он открыл новую форму без перезапуска, увидит старые права.
Через Конфигуратор (простые конфигурации без БСП)
В небольших самописных базах управления доступом нет, роли выдают вручную.
- В Конфигураторе откройте
Администрирование → Пользователи. - Откройте карточку пользователя.
- На вкладке Прочие найдите роль расширения в списке и отметьте её.
- Сохраните и попросите пользователя перезайти.
Роль расширения появится в списке только если расширение подключено к базе и его конфигурация применена.
Через заимствованную роль
Если вы пошли вторым путём и дополнили типовую роль, назначать ничего не нужно. Все пользователи, у кого есть эта роль, получат права после перезапуска сеанса.
Пользователь не видит объект расширения: диагностика
Проверяйте доступ под тестовым пользователем с тем же профилем, что у сотрудника. Под администратором проверка ничего не скажет: у него права, которых нет у рядовых.
Проверка прав кодом
Если интерфейс не помогает, проверьте права программно, например во внешней обработке, запущенной под проблемным пользователем:
// Есть ли у текущего пользователя роль расширения
Сообщить("Роль: " + РольДоступна("мр_ЗагрузкаПрайсов"));
// Есть ли право чтения на конкретный объект
Сообщить("Чтение: " + ПравоДоступа("Чтение", Метаданные.Справочники.мр_ПрайсыПоставщиков));
РольДоступна отвечает, назначена ли роль в текущем сеансе. ПравоДоступа — есть ли итоговое право по всем ролям пользователя. Если роль есть, а права нет — ошибка в самой роли. Если роли нет — ошибка в профиле или группе доступа.
Если не помогло
Проверьте ограничения на уровне записей. В конфигурациях на БСП они настраиваются в группе доступа: разрешённые организации, склады, виды контрагентов. Пользователь может иметь право на справочник, но видеть пустой список, потому что ограничение отсекает все записи. Тогда смотрите вкладку ограничений доступа в группе, а не роль.