Как настроить профиль групп доступа в 1С:УНФ и отключить определенные роли?

Программист 1С v8.3 (Управляемые формы) 1С:Управление нашей фирмой Управленческий учет Торговля и дистрибуция
← На главную

В этой статье мы подробно разберем задачу настройки прав доступа в конфигурации "1С:Управление нашей фирмой" (УНФ). Рассмотрим гибкую настройку прав в 1С:УНФ, которая позволяет убрать лишнее из типовых профилей. Часто возникает ситуация, когда типовой профиль (например, "Продажи") в целом подходит сотруднику, но содержит лишние права — например, возможность устанавливать цены или видеть себестоимость.

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

Постановка задачи

Допустим, нам необходимо настроить доступ для менеджеров. За основу мы хотим взять предопределенный профиль "Продажи", но с одним исключением: менеджеры не должны иметь доступ к установке цен номенклатуры (пункт меню Продажи / Цены и скидки / Установка цен).

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

Способ 1. Создание профиля в режиме "1С:Предприятие" (Рекомендуемый для быстрой настройки)

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

Разберем процесс по шагам:

  1. Заходим в раздел Настройки — Настройки пользователей и прав.
  2. Открываем справочник Профили групп доступа.
  3. Находим в списке типовой профиль Продажи.
  4. Нажимаем кнопку Скопировать (или F9).
  5. В открывшемся окне нового профиля меняем наименование, например, на "Продажи (без установки цен)".
  6. В табличной части "Разрешенные действия (роли)" мы видим полный список ролей, унаследованных от типового профиля. Здесь мы можем снимать галочки с тех ролей, которые нам не нужны.
  7. Записываем профиль и назначаем его пользователям или группе доступа.

Важный нюанс: При таком подходе связь с типовым профилем теряется. Если при обновлении 1С разработчики добавят в типовой профиль "Продажи" новую роль (например, для работы с новым документом "Акцизная накладная"), в вашем скопированном профиле эта роль автоматически не появится. Вам придется отслеживать изменения релизов и добавлять новые роли вручную, иначе у пользователей может перестать работать часть функционала.

Способ 2. Создание поставляемого профиля через Расширение (Для программистов)

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

В типовых конфигурациях на базе БСП (Библиотека Стандартных Подсистем), к которым относится УНФ, управление ролями и профилями доступа построено на том, что профили формируются программно в общем модуле. Чтобы быстрее разобраться в программном управлении доступом, рекомендуем изучить справочник по методам БСП с примерами использования.

Посмотрим на техническую реализацию:

  1. В конфигураторе создаем новое расширение.
  2. Заимствуем общий модуль УправлениеДоступомПереопределяемый.
  3. Нам нужна процедура ПриЗаполненииПоставляемыхПрофилейГруппДоступа.

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

Параметр процедуры ПараметрыОбновления представляет собой структуру со следующими важными полями:

Если вы хотите разрешить редактирование даже типовых (поставляемых) профилей в режиме предприятия, можно использовать следующий код в расширении (в режиме "После"):


Процедура ПриЗаполненииПоставляемыхПрофилейГруппДоступа(ОписаниеПрофилей, ПараметрыОбновления) Экспорт
    // Разрешаем изменение поставляемых профилей администратором
    ПараметрыОбновления.Вставить("ЗапретитьИзменениеПрофилей", Ложь);
КонецПроцедуры

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

Более надежный вариант — создать свой собственный поставляемый профиль в коде. Для этого можно воспользоваться обработкой из состава БСП "Инструменты разработчика: Управление доступом" (если она включена в состав) или просто скопировать определение профиля "Продажи" в свой код, сгенерировать новый Идентификатор и убрать лишние строки Описание.Роли.Добавить(...).

Как найти нужную роль для отключения?

Самый сложный вопрос для начинающих специалистов: "Как понять, какую именно роль нужно отключить, чтобы пропал конкретный пункт меню?". В нашем примере это "Установка цен".

Метод "перебора всех ролей" крайне неэффективен, так как ролей в современных конфигурациях сотни.

Способ А: Через Конфигуратор (Самый точный)

Интерфейс программы строится на основе прав доступа к объектам метаданных. Если у пользователя нет права "Просмотр" на объект, то и пункт меню, ведущий к этому объекту, отображаться не будет.

  1. Откройте Конфигуратор.
  2. Найдите объект, который открывается по нужному пункту меню. В случае "Установка цен" — это документ УстановкаЦенНоменклатуры (или УстановкаЦен в зависимости от версии).
  3. Нажмите правой кнопкой мыши на этот объект в дереве метаданных и выберите пункт "Права".
  4. Откроется окно настройки прав. В верхней части вы увидите список ролей.
  5. Вам нужно найти роли, у которых установлена галочка в колонке "Просмотр", "Чтение" или "Интерактивное добавление".

Обычно имена ролей говорят сами за себя. Скорее всего, вы найдете роли типа:

Именно эти роли нужно найти в вашем профиле доступа и отключить.

Способ Б: Через отчет "Права доступа" (В режиме Предприятия)

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

  1. Зайдите в меню Все функции (или "Функции для технического специалиста").
  2. Найдите отчет Права доступа (название может незначительно отличаться в разных версиях БСП).
  3. В настройках отчета выберите интересующий вас объект метаданных (Документ "Установка цен").
  4. Сформируйте отчет. Он покажет таблицу: какие роли дают право чтения/изменения этого объекта.

Важные замечания по отключению ролей

При отключении ролей следует помнить о системе зависимостей и шаблонах прав в 1С.

1. Базовые права.
Никогда не отключайте роль БазовыеПраваУНФ (или аналогичную, например Пользователь). Без этой роли пользователь не сможет даже запустить программу. Обычно она включена во все типовые профили по умолчанию.

2. Иерархия прав.
Если вы хотите запретить редактирование, но оставить просмотр, ищите роли, начинающиеся со слова ДобавлениеИзменение... или Редактирование.... Оставьте включенной роль Чтение... или Просмотр....

3. Роли "Полные права".
Убедитесь, что в профиле случайно не включена роль ПолныеПрава или АдминистраторСистемы. Если такая роль включена, то отключение мелких ролей (типа "Редактирование цен") не даст эффекта, так как "Полные права" перекрывают все запреты.

4. Роль vs RLS (Ограничение доступа на уровне записей).
Важно различать отключение функционала и ограничение видимости данных.

Итог

Для решения задачи автора темы оптимальным является следующий алгоритм:

  1. В режиме Конфигуратора найти документ УстановкаЦен и выяснить точное название роли, дающей право на его добавление и изменение (например, ДобавлениеИзменениеЦенНоменклатуры).
  2. В режиме Предприятия скопировать профиль "Продажи".
  3. В новом профиле снять галочку с найденной роли.
  4. Назначить новый профиль пользователям.

Этот метод позволяет гибко настроить доступ, не прибегая к сложному программированию, но требует внимания при последующих обновлениях базы.

← На главную