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

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

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

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

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

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

Более того, в коде типовых конфигураций часто встречается конструкция:


Если РольДоступна("ПолныеПрава") Тогда
    // Разрешить выполнение операции
КонецЕсли;

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

Решение 1: Создание настраиваемого профиля групп доступа

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

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

Такой подход безопасен для обновлений, так как мы используем только существующие типовые роли. Однако мы можем столкнуться с тем, что некоторые объекты (например, специфические регистры в 1С:УНФ) доступны только роли ПолныеПрава.

Решение 2: Использование расширений для добавления недостающих прав

Если при использовании первого метода пользователь получает ошибки доступа (например, при попытке выполнить «Закрытие месяца»), выясним, каких именно прав не хватает. Часто это права на технические регистры, такие как АмортизацияВА или доступ к Плану счетов.

Вместо изменения основной конфигурации, воспользуемся механизмом расширений:

  1. Создадим новое расширение конфигурации.
  2. Добавим в расширение новую роль, например, дор_ПочтиПолныеПрава.
  3. В этой роли установим права только на те объекты, доступ к которым «забыт» методистами 1С в типовых профилях.
  4. Добавим эту роль в наш созданный профиль в пользовательском режиме.

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


&После("ВыполнитьДействиеПомощника")
Процедура дор_ВыполнитьДействиеПомощника(Параметры)
    // Разрешаем выполнение операции без проверки прав на административные данные
    УстановитьПривилегированныйРежим(Истина);
    // Логика выполнения
    УстановитьПривилегированныйРежим(Ложный);
КонецПроцедуры

Метод ограничения выгрузки данных через право «Вывод»

Если задача стоит именно в предотвращении копирования данных, проанализируем платформенное право Вывод. Это право отвечает за возможность сохранения табличных документов в файлы (Excel, PDF), печать и копирование в буфер обмена.

Даже если у пользователя «почти полные права», мы можем программно или через роль запретить Вывод. Посмотрим на программную реализацию запрета вывода в расширении для всех форм:


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

Особенности настройки в 1С:УНФ

В конфигурации «Управление нашей фирмой» есть свои нюансы. Выясним причину, по которой «умный пользователь» может не видеть отчеты, такие как «Анализ бизнеса». В УНФ права на эти отчеты часто жестко связаны с ролью ПолныеПрава. Для решения этой проблемы в расширении необходимо:

  1. Найти отчет в дереве метаданных.
  2. Добавить его в расширение.
  3. В вашей кастомной роли (из расширения) установить права Просмотр и Отчеты для этого объекта.

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

Рекомендации по технической реализации

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

  1. Используйте типовой отчет «Права доступа» (находится в карточке пользователя), чтобы увидеть, какие роли дают доступ к конкретному документу или регистру.
  2. Если объект доступен только через ПолныеПрава, создайте роль в расширении и дайте права на Чтение, Просмотр и Изменение (если требуется) именно на этот объект.
  3. Избегайте предоставления права АдминистрированиеДанных — именно оно позволяет выполнять такие действия, как удаление помеченных объектов и выгрузку базы.
  4. Для проверки прав в коде вместо проверки имени роли РольДоступна("ПолныеПрава") старайтесь использовать проверку конкретного права доступа через функцию ПравоДоступа().

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

← На главную