Как настроить доступ пользователя только к авансовым отчетам в 1С

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

При настройке прав доступа в современных конфигурациях 1С (таких как «1С:Комплексная автоматизация 2», «1С:ERP Управление предприятием» или «1С:Бухгалтерия предприятия 3.0») администраторы и разработчики часто сталкиваются с задачей жесткого ограничения прав. Типичный пример: необходимо предоставить подотчетному лицу или профильному менеджеру доступ исключительно к авансовым отчетам и связанным справочникам, полностью скрыв остальной функционал программы.

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

Почему нельзя просто дать одну роль «Добавление и изменение авансовых отчетов»?

В современных конфигурациях 1С права доступа строятся по модульному принципу. Документ Документ.АвансовыйОтчет не существует изолированно. Он тесно связан со справочниками физических лиц, контрагентов, валют, статей расходов, а также с регистрами накопления, в которых хранится информация о взаиморасчетах с подотчетными лицами. Кроме того, динамический список формы документа делает запросы к смежным таблицам для вывода аналитики.

Поэтому для решения задачи нам потребуется настроить три ключевые составляющие:

  1. Минимальный системный профиль для успешного запуска клиентского приложения.
  2. Интерфейсную видимость через создание выделенной подсистемы в расширении.
  3. Доступ к связанным метаданным (справочникам, регистрам и документам-основаниям).

---

Шаг 1. Настройка базовых системных ролей БСП для запуска клиента

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

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

---

Шаг 2. Создание интерфейса и скрытие «лишних» разделов через расширение

Проанализируем проблему видимости: даже если у пользователя есть права на документ, соответствующий раздел (например, «Казначейство» в КА/ERP) может не отображаться, если у него нет прав на саму подсистему или на другие документы этого раздела. И наоборот, если дать доступ к разделу «Казначейство», пользователь увидит огромное количество пустых или недоступных для него журналов.

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

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

Благодаря этому приеме у пользователя на панели разделов отобразится только одна наша подсистема с единственным пунктом меню — «Авансовые отчеты». Все остальные разделы типовой конфигурации будут автоматически скрыты, так как у пользователя нет прав на просмотр их родительских подсистем.

---

Шаг 3. Настройка прав на связанные объекты и регистры

Теперь разберем технические зависимости. Динамический список авансовых отчетов в КА 2.4 / ERP активно использует левые соединения. Если у пользователя не будет прав на чтение связанных таблиц, список либо откроется пустым, либо система выдаст ошибку нарушения прав доступа при чтении данных. Для автоматического анализа зависимостей и подбора метаданных подойдёт конструктор прав доступа с автоподбором ролей БСП.

Чтобы этого избежать, добавим в наш профиль доступа роли на чтение следующих объектов метаданных:

---

Особенности настройки для «1С:Бухгалтерия предприятия 3.0»

Если в ERP и Комплексной автоматизации разработчики предусмотрели готовые раздельные роли вроде ЧтениеАвансовыхОтчетов и ДобавлениеИзменениеАвансовыхОтчетов, то в «1С:Бухгалтерии 3.0» из коробки подобные права жестко привязаны к профилю бухгалтера. Для БП 3.0 придется создавать роли вручную в расширении. При необходимости можно использовать готовое расширение для настройки прав к авансовым отчетам в Бухгалтерии 3.0.

Помимо вышеперечисленных базовых справочников, в БП 3.0 крайне важно предоставить права чтения на специфические объекты:

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


Если РольДоступна("РМ_ОсновнаяРольПодотчетника") Тогда
    // Выполняем специфическую настройку интерфейса для подотчетного лица
    // Например, скрываем ненужные элементы навигации или устанавливаем параметры по умолчанию
    АвтоустановкаПараметровИнтерфейсаПодотчетника();
КонецЕсли;

Резюме

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

← На главную