Как настроить видимость разделов и подсистем для пользователей в 1С:ERP

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

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

Понимание архитектуры интерфейса в ERP

Прежде всего, проанализируем ситуацию: в 1С:ERP видимость раздела (подсистемы первого уровня) зависит от наличия у пользователя права Просмотр на саму подсистему и хотя бы на один объект, включенный в эту подсистему. Проблема в том, что типовые роли часто включают права на объекты из разных разделов для обеспечения целостности бизнес-процессов.

Разберем основные стратегии решения этой задачи: от административных методов до программной разработки.

Решение 1: Создание «интерфейсных» ролей

Это один из самых чистых способов с точки зрения архитектуры метаданных. Суть заключается в разделении прав на данные и прав на интерфейс.

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

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

Решение 2: Использование механизма «Копирование настроек»

Если нам нужно настроить внешний вид панелей (скрыть конкретные пункты внутри разделов) без изменения прав доступа, воспользуемся штатным инструментом Библиотеки стандартных подсистем (БСП), которая встроена в ERP.

Проанализируем алгоритм действий администратора:

  1. Зайдем в систему под «эталонным» пользователем соответствующей группы (например, «Менеджер по продажам»).
  2. Вручную настроим панель разделов и панель навигации так, как это должно быть у всей группы. Для этого нажмем правой кнопкой мыши на панели разделов — Настройка панели разделов.
  3. Завершим сеанс. Теперь зайдем под администратором в раздел Администрирование — Настройки пользователей и прав — Персональные настройки пользователей — Копирование настроек.
  4. Выберем нашего эталонного пользователя в качестве источника, выберем настройку Панель разделов и укажем список пользователей (или группу), которым нужно «раскатать» этот интерфейс.

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

Решение 3: Программное управление настройками через Хранилище

Иногда требуется настроить интерфейс для сотен пользователей программно. Выясним, как это работает «под капотом». Настройки интерфейса хранятся в системном хранилище. Мы можем использовать метод Копировать объекта ХранилищеСистемныхНастроек.

Рассмотрим пример кода, который позволяет растиражировать настройки панели разделов:


Процедура КопироватьНастройкиИнтерфейса(ОтКого, Кому)
    КлючОбъекта = "Общее/ПанельРазделов/НастройкаКнопки";
    Настройки = ХранилищеСистемныхНастроек.Загрузить(КлючОбъекта, , , ОтКого);
    
    Если Настройки <> Неопределено Тогда
        Для Каждого ТекущийПользователь Из Кому Цикл
            ХранилищеСистемныхНастроек.Сохранить(КлючОбъекта, , Настройки, , ТекущийПользователь);
        КонецЦикла;
    КонецЕсли;
КонецПроцедуры

Этот метод позволяет автоматизировать процесс настройки при создании новых учетных записей или при массовом изменении структуры компании.

Решение 4: Использование функциональных опций

Проанализируем ситуацию, когда раздел не нужен вообще никому в компании или определенному набору должностей. В 1С:ERP многие разделы привязаны к ФункциональнымОпциям. Если в настройках системы отключить, например, «Производство», то подсистема исчезнет из интерфейса у всех пользователей автоматически.

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

Ограничение доступа к данным (RLS)

В тексте обсуждения упоминалось, что использование RLS (ограничение доступа на уровне записей) приводит к тормозам. Это часто случается в старых версиях или при неправильной настройке. Посмотрим на современные рекомендации для ERP:

Используйте Производительный режим RLS. Он работает через специальные таблицы доступа и значительно быстрее классического метода. Чтобы настроить доступ по одной организации (как хотел автор вопроса):

  1. Включите ограничение доступа на уровне записей в настройках прав.
  2. В Профиле групп доступа на закладке Ограничения доступа выберите вид доступа Организации.
  3. Установите значение Все запрещены, исключения назначаются в группах доступа.
  4. В конкретной Группе доступа укажите разрешенную организацию.

Резюме и рекомендации

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

← На главную