Права на доработки из расширения: роль, профиль и группа доступа

· 10 мин

Содержание

Роль из расширения добавляют пользователю так же, как обычную, но в два этапа. Сначала роль создают в самом расширении в Конфигураторе и обновляют базу клавишей F7 в окне расширения. Затем в типовой конфигурации (БП 3.0, ЗУП 3.1, УТ 11) открывают Администрирование → Настройки пользователей и прав → Профили групп доступа, отмечают роль расширения в профиле и включают пользователя в группу доступа с этим профилем.

Без второго этапа ничего не заработает: бухгалтер увидит новую команду или отчёт, но при открытии получит Нарушение прав доступа!.

Как роли расширения связаны с правами пользователя

В 1С права только складываются. Если хотя бы одна роль пользователя разрешает действие, оно разрешено. Запретить что-то ролью нельзя — можно только не дать.

Отсюда простое следствие для расширений:

  • 🧩 Свои объекты расширения (новый справочник, отчёт, обработка) получают права только от тех ролей основной конфигурации, у которых включено свойство «Устанавливать права для новых объектов». В типовых решениях это обычно административные роли вроде ПолныеПрава. Рабочие роли бухгалтеров и кадровиков этот флажок, как правило, не имеют — и доработку не видят.
  • 🔑 Остальным пользователям права даёт роль, в которой они явно отмечены. Такая роль живёт внутри расширения.
  • 👤 Пользователь получает роль либо через профиль групп доступа (типовые конфигурации на БСП), либо напрямую в списке пользователей Конфигуратора (самописные и старые решения).

В расширении бывает два вида ролей.

Вид ролиЧто этоКогда выбирать
Собственная роль расширенияНовая роль, созданная в дереве расширенияДоработку видит не каждый: её нужно выдавать отдельно, через профиль
Заимствованная рольРоль основной конфигурации, взятая в расширениеНовый объект должны сразу видеть все, у кого уже есть эта роль

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

Для доработки «для всех бухгалтеров» удобнее заимствовать роль, которая и так есть в их профиле. Для узкой функции (например, обработки массовой перепроводки) лучше отдельная роль: её получат только те, кому она действительно нужна.

Шаг 1. Создать или заимствовать роль в расширении

Работа идёт в Конфигураторе. Монопольный доступ к базе на этом этапе не нужен, пока вы не обновляете структуру.

Собственная роль

  1. Откройте Конфигурация → Расширения конфигурации и дважды щёлкните нужное расширение.
  2. В дереве расширения раскройте ветку Общие → Роли, нажмите «Добавить».
  3. Задайте имя. Платформа подставит префикс из свойства расширения «Префикс имён», например мр_ДоступКОтчетуПоСкладу. Не убирайте его: префикс исключает конфликт имён с типовыми ролями после обновления.
  4. Откройте роль. Слева — дерево объектов, справа — флажки прав.
  5. Отметьте права на объекты расширения: для справочника — Чтение, Добавление, Изменение, Просмотр, Интерактивное добавление; для отчёта и обработки — Использование и Просмотр.
  6. Если в расширении есть общие команды или подсистемы, отметьте для них Просмотр — иначе команда не появится в интерфейсе.

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

Заимствованная роль

  1. В дереве основной конфигурации (левое окно при сравнении или контекстное меню на роли) выберите нужную роль и дайте команду «Добавить в расширение».
  2. Роль появится в ветке Роли расширения со значком заимствования.
  3. Откройте её и отметьте права на собственные объекты расширения. Типовые флажки останутся недоступными.

Сохранить и применить

  1. Нажмите F7 в окне расширения — «Обновить конфигурацию базы данных».
  2. Убедитесь, что в списке Конфигурация → Расширения конфигурации у расширения стоит флажок «Активно».
  3. Если расширение передают в другую базу, выгрузите его в .cfe из того же списка.

Загрузка .cfe и обновление конфигурации базы данных — два разных действия. После загрузки файла без F7 роль в базе не появится.

Шаг 2. Подключить расширение и проверить, что роль видна в базе

Если расширение загружают не через Конфигуратор, а в пользовательском режиме, путь в БП 3.0, ЗУП 3.1 и УТ 11 один: Администрирование → Печатные формы, отчеты и обработки → Расширения. Кнопка «Добавить из файла» загружает .cfe, после чего программа предлагает перезапуститься.

В этом же списке обратите внимание на две колонки.

  • 🛡️ Безопасный режим. Расширение работает с ограничениями на опасные операции (доступ к файлам, внешние компоненты, COM). На роли это не влияет, но код доработки может не выполниться, и это легко спутать с нехваткой прав.
  • ✅ Активно. Отключённое расширение не применяется, а его роли не участвуют в правах. Профиль при этом сохраняет отметки, но они ничего не дают.

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

Классическая ловушка: разработчик проверяет доработку под администратором, всё открывается, расширение уходит в работу — и у бухгалтеров Нарушение прав доступа!. Администратору права на объекты расширения обычно достаются через свойство «Устанавливать права для новых объектов» у его роли, а рабочим ролям — нет. Проверяйте доработку под пользователем с рабочим профилем, а не под администратором.

Шаг 3. Добавить роль расширения в профиль групп доступа

В типовых конфигурациях на БСП роли пользователям напрямую не назначают. Связка такая: роли → профиль групп доступа → группа доступа → пользователь.

Изменить профиль

  1. Откройте Администрирование → Настройки пользователей и прав → Профили групп доступа.
  2. Найдите профиль, который используют нужные сотрудники, например «Бухгалтер».
  3. Поставляемый профиль (с пометкой «поставляемый») изменить обычно нельзя. Скопируйте его командой копирования в списке и работайте с копией: назовите её понятно, например «Бухгалтер + отчёт по складу».
  4. В карточке профиля перейдите на вкладку Разрешенные действия (роли).
  5. Снимите флажок «Только выбранные», чтобы увидеть все роли, и найдите роль расширения по имени или префиксу через поиск формы.
  6. Отметьте роль и нажмите «Записать и закрыть».

Назначить профиль группе доступа

  1. Откройте Администрирование → Настройки пользователей и прав → Группы доступа.
  2. Создайте группу на основе нового профиля или поменяйте профиль у существующей группы.
  3. На вкладке участников добавьте пользователей.
  4. Запишите группу. БСП пересчитает роли участников в фоне.

Применить у пользователей

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

Перед тем как писать «права не работают»
Выполнено: 0 / 5

Конфигурации без БСП: назначить роль в Конфигураторе

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

  1. Откройте Администрирование → Пользователи в Конфигураторе.
  2. Дважды щёлкните пользователя и перейдите на вкладку «Прочее».
  3. В списке доступных ролей найдите роль расширения — она там есть, если расширение подключено и активно.
  4. Отметьте роль и нажмите «ОК».

То же можно сделать кодом, например в обработке администратора:

Пользователь = ПользователиИнформационнойБазы.НайтиПоИмени("Иванова");
Роль = Метаданные.Роли.Найти("мр_ДоступКОтчетуПоСкладу");
Если Пользователь <> Неопределено И Роль <> Неопределено Тогда
    Если Не Пользователь.Роли.Содержит(Роль) Тогда
        Пользователь.Роли.Добавить(Роль);
        Пользователь.Записать();
    КонецЕсли;
КонецЕсли;

В конфигурациях на БСП не назначайте роли напрямую через Конфигуратор. При следующем пересчёте групп доступа БСП приведёт состав ролей пользователя к профилям, и «ручная» роль исчезнет. Сотрудник утром потеряет доступ, который вчера был.

Почему роль не видна или прав всё равно не хватает

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

Диагностика: выберите симптом

Проверка прав из кода

Если цепочка выглядит правильной, а доступа нет, проверьте права в сеансе пользователя. Две функции встроенного языка дают ответ сразу:

// Есть ли у текущего пользователя роль расширения
Сообщить(РольДоступна("мр_ДоступКОтчетуПоСкладу"));

// Есть ли право на конкретный объект
Сообщить(ПравоДоступа("Использование", Метаданные.Отчеты.мр_ОстаткиПоСкладу));

РольДоступна вернёт Ложь — проблема в назначении роли. Вернёт Истина, но ПравоДоступа даёт Ложь — не хватает флажка в самой роли.

Ограничения на уровне записей

Типовые роли БСП часто содержат ограничения доступа к данным (RLS) по организациям и складам. Собственная роль расширения без ограничений откроет объект целиком. Если отчёт расширения читает типовые регистры, а пользователь видит не все данные, причина обычно в RLS типовой роли, а не в роли расширения.

Файловая и клиент-серверная база: что меняется

Сама процедура одинакова. Разница — в том, как изменения доходят до работающих пользователей.

ЧтоФайловая базаКлиент-серверная база
Где хранится расширениеВ файле базы 1Cv8.1CDВ базе данных СУБД, видно всем рабочим серверам кластера
Когда пользователи увидят новую рольПосле перезапуска 1СПосле нового сеанса; старые сеансы работают со старым набором прав
Как увидеть, кто ещё в старом сеансеСписок активных пользователей в программеСеансы в консоли администрирования кластера или rac session list
Пересчёт ролей БСПВ сеансе администратораВ сеансе администратора или фоновым заданием сервера

В клиент-серверной базе удобно применять права в конце дня или после короткого оповещения: сотрудники завершат работу, а утром зайдут уже с новой ролью.

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

Тестовая база перед рабочей

Порядок действий для обоих вариантов одинаковый и безопасный:

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

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

Отдельный случай — базы с разделением данных (сервис 1С:Фреш и подобные). Там расширения подключаются к области данных, и выдача ролей зависит от настроек сервиса. Права в такой базе меняют через средства сервиса, а не через Конфигуратор.

Частые вопросы

Можно ли в расширении изменить права в типовой роли, например «Бухгалтер»?
Нет. В заимствованной роли меняются только права на собственные объекты расширения. Права на типовые объекты дают типовые роли.
Что будет с ролью в профиле, если расширение удалить?
Роль пропадёт из базы, и отметка в профиле перестанет действовать. При повторной загрузке того же расширения роль с тем же именем обычно снова нужно отметить в профиле.
Нужен ли монопольный режим, чтобы добавить роль в расширение?
Только если обновление структуры требует его. Для новой роли без новых таблиц обычно достаточно F7 с работающими пользователями, но изменения они увидят после перезапуска.
Как выдать роль расширения сразу сотне пользователей?
Через профиль групп доступа: добавьте роль в профиль, которым они уже пользуются, и все участники групп с этим профилем получат её после перезахода.
Как протестировать права, не выдавая роль реальным сотрудникам?
Создайте тестового пользователя, включите его в копию рабочего профиля с ролью расширения и зайдите под ним. Так вы увидите программу глазами бухгалтера, а не администратора.