Роли и права доступа в расширении конфигурации 1С

· 9 мин

Содержание

Чтобы добавить роль в расширение 1С, откройте расширение в Конфигураторе, в дереве найдите ветку Общие → Роли и создайте новую роль. Отметьте в ней права на объекты расширения, обновите конфигурацию базы данных. Затем включите роль в профиль группы доступа (в типовых на БСП) или прямо в список ролей пользователя (в простых конфигурациях).

Типичная боль выглядит так: доработку поставили, администратор всё видит, а бухгалтер получает Нарушение прав доступа! или вообще не находит новый отчёт в меню. Почти всегда причина одна: права на новые объекты никто не выдал. Механизм общий для платформы 8.3 и не зависит от конфигурации. Различается только последний шаг — как роль попадает к пользователю.

Как устроены права доступа в расширении конфигурации

Расширения появились в платформе 8.3.6. Права в них работают по нескольким простым правилам. Их стоит держать в голове, прежде чем добавлять роли.

  • 🔹 Права только добавляются. Роль расширения может дать пользователю доступ, но не может забрать то, что выдала роль основной конфигурации. Итоговые права — объединение всех ролей пользователя.
  • 🔹 Свои объекты расширения требуют своих прав. Новый отчёт, обработка, справочник или регистр, созданные в расширении, — это новые объекты метаданных. Их нужно явно отметить в роли.
  • 🔹 Объект основной конфигурации сначала заимствуют. Чтобы роль расширения дала право на типовой документ или справочник, этот объект добавляют в расширение как заимствованный. Только после этого он появляется в редакторе прав роли расширения.
  • 🔹 Роль основной конфигурации тоже можно заимствовать. Тогда пользователи, у которых она уже есть, получают права, отмеченные в расширении, без перенастройки профилей.

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

ПодходКогда подходитМинусы
Собственная роль расширенияДоступ нужен части пользователей; доработка самостоятельнаяНужно включить роль в профили или выдать пользователям
Заимствованная роль основной конфигурацииДоступ нужен всем, у кого есть типовая рольНельзя выдать доступ точечно; после обновления типовой конфигурации надо проверить, что расширение применяется

Для большинства доработок проще собственная роль. Её назначение видно по имени, а в профилях БСП её можно включать и снимать галочкой.

Создаём новую роль в расширении через Конфигуратор

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

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

Пометка «(расширение)» в синониме окупается сразу. Через год в профиле на 200 ролей вы найдёте свою за секунду.

Свойства роли, которые стоит проверить

У роли в расширении есть те же флаги, что и у роли основной конфигурации:

  • ⚙️ Устанавливать права для новых объектов — если включён, объекты, добавленные в расширение позже, получат права в этой роли автоматически. Для узкой роли его лучше снять, чтобы она не разрасталась незаметно.
  • ⚙️ Устанавливать права для реквизитов и табличных частей по умолчанию — обычно оставляют включённым, иначе придётся отмечать каждый реквизит.
  • ⚙️ Независимые права подчинённых объектов — включают, когда нужно запретить доступ к отдельному реквизиту при доступе к объекту в целом.

Права на объекты расширения и заимствованные объекты

Редактор роли — это таблица: слева дерево объектов, справа список прав выделенного объекта. Набор прав зависит от типа объекта.

Тип объектаМинимум для работыДля ввода и изменения добавьте
Отчёт, обработкаИспользование, Просмотр—
СправочникЧтение, ПросмотрДобавление, Изменение, Интерактивное добавление, Редактирование
ДокументЧтение, ПросмотрДобавление, Изменение, Проведение, Отмена проведения, интерактивные права
Регистр сведенийЧтение, ПросмотрИзменение, Редактирование
Регистр накопленияЧтениеИзменение (если пишет код под этой ролью)
Подсистема, общая командаПросмотр—

Права-пары работают так: «Чтение» разрешает получить данные вообще (в том числе программно), «Просмотр» — открыть форму в интерфейсе. Пользователю, который работает руками, нужны оба. Если поставить только «Просмотр», форма откроется, но данные не прочитаются.

Как дать право на объект основной конфигурации

Допустим, ваш отчёт в расширении читает регистр, на который у менеджеров нет прав. Или вы добавили в типовой документ новый реквизит.

  1. В дереве основной конфигурации найдите нужный объект.
  2. Через контекстное меню выполните Добавить в расширение и выберите своё расширение.
  3. Объект появится в дереве расширения как заимствованный.
  4. Откройте роль расширения — теперь объект виден в редакторе прав. Отметьте нужные права.

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

Как попасть в меню

Новый отчёт может быть доступен, но не виден. В командный интерфейс объект попадает через подсистему. Заимствуйте нужный раздел (например, подсистему «Продажи»), включите в неё свой объект и дайте в роли право Просмотр на эту подсистему. Без этого пользователь откроет отчёт только по прямой ссылке или через поиск по меню, если права на объект есть.

Сохранение и обновление базы

После правок нажмите Обновить конфигурацию базы данных (F7) для расширения. Если в расширении появились новые таблицы — справочники, документы, регистры, реквизиты, — платформе нужна реструктуризация.

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

Если вы получили готовый файл .cfe от разработчика, загрузка файла и обновление базы — два разных шага. Загрузить расширение мало, его конфигурацию нужно ещё применить к базе.

Как включить роль расширения в профиль группы доступа

В типовых конфигурациях на БСП — Бухгалтерия 3.0, ЗУП 3.1, УТ 11, КА, ERP — роли пользователям выдаются через профили и группы доступа. Это главный шаг, который пропускают чаще всего.

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

Путь в БП 3.0, ЗУП 3.1 и УТ 11 одинаковый: Администрирование → Настройки пользователей и прав → Профили групп доступа.

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

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

Отдельный профиль под доработку проще сопровождать. Когда расширение удалят, вы удалите один профиль, а не будете чистить пять копий типовых.

Как выдать роль пользователям

Через группы доступа (конфигурации на БСП)

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

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

Через Конфигуратор (простые конфигурации без БСП)

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

  1. В Конфигураторе откройте Администрирование → Пользователи.
  2. Откройте карточку пользователя.
  3. На вкладке Прочие найдите роль расширения в списке и отметьте её.
  4. Сохраните и попросите пользователя перезайти.

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

Через заимствованную роль

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

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

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

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

Проверка прав кодом

Если интерфейс не помогает, проверьте права программно, например во внешней обработке, запущенной под проблемным пользователем:

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

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

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

Если не помогло

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

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

Можно ли ролью расширения запретить то, что разрешает типовая роль?
Нет. Права всех ролей пользователя складываются. Чтобы ограничить доступ, уберите типовую роль из профиля или используйте ограничения на уровне записей.
Нужна ли отдельная лицензия или монопольный режим для работы ролей расширения?
Лицензии не нужны. Монопольный доступ требуется только при обновлении структуры базы, когда расширение добавляет новые таблицы или реквизиты.
Сохранится ли роль после обновления типовой конфигурации?
Да, роль живёт в расширении и обновлением типовой не затирается. Но если изменились заимствованные объекты, расширение может перестать применяться — проверьте его после каждого обновления.
Можно ли добавить роль в расширение, не открывая Конфигуратор?
Нет. Роли создаются только в Конфигураторе или в EDT. В режиме 1С:Предприятие можно лишь загрузить готовое расширение и выдать его роли пользователям.
Почему у администратора всё работает, а у пользователя нет?
У администратора другой набор ролей. Проверяйте доступ под тестовым пользователем с тем же профилем, что у сотрудника, иначе ошибка в роли останется незамеченной.