Как ограничить видимость объектов и настроить права доступа в типовой конфигурации 1С без изменения основной конфигурации?

Программист 1С v8.3 (Управляемые формы) 1C:Бухгалтерия
← На главную

При работе с типовыми решениями 1С, такими как 1С:Бухгалтерия 3.0, часто возникает задача максимально упростить интерфейс для конкретного пользователя. Например, когда сотруднику для работы требуется всего одна подсистема и несколько видов документов, а всё остальное многообразие функций только отвлекает и создает риск случайного ввода данных в ненужные разделы. Рассмотрим подробно, как решить эту задачу, сохранив конфигурацию на поддержке и используя современные инструменты платформы 1С:Предприятие 8.3.

Способ 1. Использование стандартных механизмов БСП (Профили групп доступа)

Прежде чем приступать к разработке расширений, проанализируем возможности, которые предоставляет «Библиотека стандартных подсистем» (БСП), на которой построена 1С:Бухгалтерия. В режиме «1С:Предприятие» существует мощный инструмент управления правами.

Разберем по шагам, как настроить права через профили:

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

Важный нюанс: в управляемом интерфейсе подсистемы (разделы панели разделов) отображаются только тогда, когда у пользователя есть права хотя бы на один объект, входящий в эту подсистему. Таким образом, грамотно настроив состав ролей, мы автоматически скроем лишние разделы интерфейса.

Способ 2. Создание собственной роли в расширении конфигурации

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

Рассмотрим процесс создания расширения:

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

После обновления расширения в режиме «1С:Предприятие» эта роль станет доступна для выбора в профилях групп доступа. Мы сможем назначить её пользователю вместе с минимальным набором базовых прав.

Способ 3. Управление командным интерфейсом через расширение

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

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

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


&НаСервере
Процедура Расш1_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
    // Проверяем, является ли пользователь тем самым "ограниченным" сотрудником
    Если РольДоступна("Расш1_РольТолькоДляПродаж") Тогда
        // Скрываем лишние элементы формы
        Элементы.ГруппаСпецНастройки.Видимость = Ложь;
        
        // Или отключаем видимость конкретных команд
        Элементы.ФормаПечатьСертификата.Видимость = Ложь;
    КонецЕсли;
КонецПроцедуры

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

Способ 4. Использование функциональных опций

Посмотрим на ситуацию шире. Иногда видимость целых блоков в 1С:Бухгалтерии управляется через Функциональные опции. Если задача состоит в том, чтобы скрыть, например, функционал учета в валюте или розничных продаж для всех пользователей в данной базе, это делается простым снятием соответствующих галочек в разделе Главное — Функциональность.

Однако, если ограничения касаются только одного пользователя, этот метод не подходит. В этом случае лучше комбинировать Способ 1 (Профили) и Способ 3 (Расширение интерфейса).

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

Подводя итог, наиболее правильный алгоритм действий для настройки интерфейса «6 документов и 1 подсистема» выглядит так:

Помните, что cfe (файл расширения) — это не замена cf (файлу конфигурации). Вы не загружаете конфигурацию в расширение, а лишь указываете расширению, какие объекты основной конфигурации оно должно «видеть» и модифицировать. Это позволяет сохранять систему максимально типовой и облегчает процесс последующих обновлений программы фирмой «1С».

← На главную