Права на доработки из расширения: роль, профиль и группа доступа
Содержание
Роль из расширения добавляют пользователю так же, как обычную, но в два этапа. Сначала роль создают в самом расширении в Конфигураторе и обновляют базу клавишей F7 в окне расширения. Затем в типовой конфигурации (БП 3.0, ЗУП 3.1, УТ 11) открывают Администрирование → Настройки пользователей и прав → Профили групп доступа, отмечают роль расширения в профиле и включают пользователя в группу доступа с этим профилем.
Без второго этапа ничего не заработает: бухгалтер увидит новую команду или отчёт, но при открытии получит Нарушение прав доступа!.
Как роли расширения связаны с правами пользователя
В 1С права только складываются. Если хотя бы одна роль пользователя разрешает действие, оно разрешено. Запретить что-то ролью нельзя — можно только не дать.
Отсюда простое следствие для расширений:
- 🧩 Свои объекты расширения (новый справочник, отчёт, обработка) получают права только от тех ролей основной конфигурации, у которых включено свойство «Устанавливать права для новых объектов». В типовых решениях это обычно административные роли вроде
ПолныеПрава. Рабочие роли бухгалтеров и кадровиков этот флажок, как правило, не имеют — и доработку не видят. - 🔑 Остальным пользователям права даёт роль, в которой они явно отмечены. Такая роль живёт внутри расширения.
- 👤 Пользователь получает роль либо через профиль групп доступа (типовые конфигурации на БСП), либо напрямую в списке пользователей Конфигуратора (самописные и старые решения).
В расширении бывает два вида ролей.
| Вид роли | Что это | Когда выбирать |
|---|---|---|
| Собственная роль расширения | Новая роль, созданная в дереве расширения | Доработку видит не каждый: её нужно выдавать отдельно, через профиль |
| Заимствованная роль | Роль основной конфигурации, взятая в расширение | Новый объект должны сразу видеть все, у кого уже есть эта роль |
В заимствованной роли можно отметить права только на собственные объекты расширения. Права на типовые объекты в ней не меняются — это защищает основную конфигурацию от тихого расширения доступа.
Для доработки «для всех бухгалтеров» удобнее заимствовать роль, которая и так есть в их профиле. Для узкой функции (например, обработки массовой перепроводки) лучше отдельная роль: её получат только те, кому она действительно нужна.
Шаг 1. Создать или заимствовать роль в расширении
Работа идёт в Конфигураторе. Монопольный доступ к базе на этом этапе не нужен, пока вы не обновляете структуру.
Собственная роль
- Откройте
Конфигурация → Расширения конфигурациии дважды щёлкните нужное расширение. - В дереве расширения раскройте ветку
Общие → Роли, нажмите «Добавить». - Задайте имя. Платформа подставит префикс из свойства расширения «Префикс имён», например
мр_ДоступКОтчетуПоСкладу. Не убирайте его: префикс исключает конфликт имён с типовыми ролями после обновления. - Откройте роль. Слева — дерево объектов, справа — флажки прав.
- Отметьте права на объекты расширения: для справочника —
Чтение,Добавление,Изменение,Просмотр,Интерактивное добавление; для отчёта и обработки —ИспользованиеиПросмотр. - Если в расширении есть общие команды или подсистемы, отметьте для них
Просмотр— иначе команда не появится в интерфейсе.
У роли есть свойство «Устанавливать права для новых объектов». Если флажок включён, на каждый новый объект расширения права будут ставиться автоматически. Для узкой роли его лучше выключить и отмечать права вручную.
Заимствованная роль
- В дереве основной конфигурации (левое окно при сравнении или контекстное меню на роли) выберите нужную роль и дайте команду «Добавить в расширение».
- Роль появится в ветке
Ролирасширения со значком заимствования. - Откройте её и отметьте права на собственные объекты расширения. Типовые флажки останутся недоступными.
Сохранить и применить
- Нажмите F7 в окне расширения — «Обновить конфигурацию базы данных».
- Убедитесь, что в списке
Конфигурация → Расширения конфигурацииу расширения стоит флажок «Активно». - Если расширение передают в другую базу, выгрузите его в
.cfeиз того же списка.
Загрузка .cfe и обновление конфигурации базы данных — два разных действия. После загрузки файла без F7 роль в базе не появится.
Шаг 2. Подключить расширение и проверить, что роль видна в базе
Если расширение загружают не через Конфигуратор, а в пользовательском режиме, путь в БП 3.0, ЗУП 3.1 и УТ 11 один: Администрирование → Печатные формы, отчеты и обработки → Расширения. Кнопка «Добавить из файла» загружает .cfe, после чего программа предлагает перезапуститься.
В этом же списке обратите внимание на две колонки.
- 🛡️ Безопасный режим. Расширение работает с ограничениями на опасные операции (доступ к файлам, внешние компоненты, COM). На роли это не влияет, но код доработки может не выполниться, и это легко спутать с нехваткой прав.
- ✅ Активно. Отключённое расширение не применяется, а его роли не участвуют в правах. Профиль при этом сохраняет отметки, но они ничего не дают.
После подключения и перезапуска роли расширения попадают в общий список ролей информационной базы. Проверить это проще всего на шаге 3: роль должна появиться в списке ролей профиля.
Классическая ловушка: разработчик проверяет доработку под администратором, всё открывается, расширение уходит в работу — и у бухгалтеров Нарушение прав доступа!. Администратору права на объекты расширения обычно достаются через свойство «Устанавливать права для новых объектов» у его роли, а рабочим ролям — нет. Проверяйте доработку под пользователем с рабочим профилем, а не под администратором.
Шаг 3. Добавить роль расширения в профиль групп доступа
В типовых конфигурациях на БСП роли пользователям напрямую не назначают. Связка такая: роли → профиль групп доступа → группа доступа → пользователь.
Изменить профиль
- Откройте
Администрирование → Настройки пользователей и прав → Профили групп доступа. - Найдите профиль, который используют нужные сотрудники, например «Бухгалтер».
- Поставляемый профиль (с пометкой «поставляемый») изменить обычно нельзя. Скопируйте его командой копирования в списке и работайте с копией: назовите её понятно, например «Бухгалтер + отчёт по складу».
- В карточке профиля перейдите на вкладку
Разрешенные действия (роли). - Снимите флажок «Только выбранные», чтобы увидеть все роли, и найдите роль расширения по имени или префиксу через поиск формы.
- Отметьте роль и нажмите «Записать и закрыть».
Назначить профиль группе доступа
- Откройте
Администрирование → Настройки пользователей и прав → Группы доступа. - Создайте группу на основе нового профиля или поменяйте профиль у существующей группы.
- На вкладке участников добавьте пользователей.
- Запишите группу. БСП пересчитает роли участников в фоне.
Применить у пользователей
Права сеанса фиксируются при входе. Пользователь, который работал в момент изменения профиля, должен закрыть 1С и зайти заново. До этого он продолжит получать Нарушение прав доступа!.
Конфигурации без БСП: назначить роль в Конфигураторе
В самописных решениях и простых конфигурациях без подсистемы управления доступом роль выдают напрямую.
- Откройте
Администрирование → Пользователив Конфигураторе. - Дважды щёлкните пользователя и перейдите на вкладку «Прочее».
- В списке доступных ролей найдите роль расширения — она там есть, если расширение подключено и активно.
- Отметьте роль и нажмите «ОК».
То же можно сделать кодом, например в обработке администратора:
Пользователь = ПользователиИнформационнойБазы.НайтиПоИмени("Иванова");
Роль = Метаданные.Роли.Найти("мр_ДоступКОтчетуПоСкладу");
Если Пользователь <> Неопределено И Роль <> Неопределено Тогда
Если Не Пользователь.Роли.Содержит(Роль) Тогда
Пользователь.Роли.Добавить(Роль);
Пользователь.Записать();
КонецЕсли;
КонецЕсли;
В конфигурациях на БСП не назначайте роли напрямую через Конфигуратор. При следующем пересчёте групп доступа БСП приведёт состав ролей пользователя к профилям, и «ручная» роль исчезнет. Сотрудник утром потеряет доступ, который вчера был.
Почему роль не видна или прав всё равно не хватает
Сначала определите, на каком звене цепочки обрыв: роль в расширении → расширение активно → роль в профиле → пользователь в группе → новый сеанс. Частые сочетания симптома и причины собраны в виджете.
Проверка прав из кода
Если цепочка выглядит правильной, а доступа нет, проверьте права в сеансе пользователя. Две функции встроенного языка дают ответ сразу:
// Есть ли у текущего пользователя роль расширения
Сообщить(РольДоступна("мр_ДоступКОтчетуПоСкладу"));
// Есть ли право на конкретный объект
Сообщить(ПравоДоступа("Использование", Метаданные.Отчеты.мр_ОстаткиПоСкладу));
РольДоступна вернёт Ложь — проблема в назначении роли. Вернёт Истина, но ПравоДоступа даёт Ложь — не хватает флажка в самой роли.
Ограничения на уровне записей
Типовые роли БСП часто содержат ограничения доступа к данным (RLS) по организациям и складам. Собственная роль расширения без ограничений откроет объект целиком. Если отчёт расширения читает типовые регистры, а пользователь видит не все данные, причина обычно в RLS типовой роли, а не в роли расширения.
Файловая и клиент-серверная база: что меняется
Сама процедура одинакова. Разница — в том, как изменения доходят до работающих пользователей.
| Что | Файловая база | Клиент-серверная база |
|---|---|---|
| Где хранится расширение | В файле базы 1Cv8.1CD | В базе данных СУБД, видно всем рабочим серверам кластера |
| Когда пользователи увидят новую роль | После перезапуска 1С | После нового сеанса; старые сеансы работают со старым набором прав |
| Как увидеть, кто ещё в старом сеансе | Список активных пользователей в программе | Сеансы в консоли администрирования кластера или rac session list |
| Пересчёт ролей БСП | В сеансе администратора | В сеансе администратора или фоновым заданием сервера |
В клиент-серверной базе удобно применять права в конце дня или после короткого оповещения: сотрудники завершат работу, а утром зайдут уже с новой ролью.
Принудительно завершать сеансы через консоль кластера ради прав не нужно. Если всё же решили, предупредите людей: незаписанные документы будут потеряны.
Тестовая база перед рабочей
Порядок действий для обоих вариантов одинаковый и безопасный:
- Отладьте роль в копии базы: создайте роль, отметьте права, обновите расширение.
- Проверьте доступ под тестовым пользователем с рабочим профилем.
- Выгрузите расширение в
.cfeи загрузите его в рабочую базу. - В рабочей базе повторите настройку профиля: отметки ролей в профилях хранятся в данных, а не в расширении, и сами не переносятся.
Последний пункт часто забывают. Расширение приезжает с ролью, но профили в рабочей базе о ней не знают — и доступа нет ни у кого, кроме администратора.
Отдельный случай — базы с разделением данных (сервис 1С:Фреш и подобные). Там расширения подключаются к области данных, и выдача ролей зависит от настроек сервиса. Права в такой базе меняют через средства сервиса, а не через Конфигуратор.