Как ограничить доступ пользователей к отдельной обработке в 1С?

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

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

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

Разберем наиболее правильный и безопасный вариант — использование механизма прав платформы 1С. Если обработка встроена в дерево метаданных конфигурации, доступ к ней полностью регулируется правами Использование и Просмотр.

Разберем по шагам порядок действий в конфигураторе:

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

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

Способ 2. Программная проверка доступности роли при открытии формы

Иногда требуется дополнительно ограничить доступ кодом или выдать пользователю понятное информационное сообщение. Посмотрим на частую ошибку: вызов метода ЭтаФорма.Закрыть() в событии ПриОткрытии.

Вызов Закрыть() в момент инициализации формы приводит к ошибкам отрисовки, визуальным мерцаниям и нестабильной работе интерфейса. Для корректного прерывания открытия формы в обычных формах используется стандартный параметр события Отказ.

Посмотрим на пример правильной реализации в модуле формы обработки:


Процедура ПриОткрытии(Отказ)
    
    Если Не РольДоступна("МожетЗакрытьПериод") И Не ПравоДоступа("Администрирование", Метаданные) Тогда
        ПоказатьПредупреждение(, "У вас недостаточно прав для открытия данной обработки!");
        Отказ = Истина;
        Возврат;
    КонецЕсли;

КонецПроцедуры

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


Если Не РольДоступна("МожетЗакрытьПериод") И Не ПравоДоступа("Администрирование", Метаданные) Тогда
    ВызватьИсключение "Недостаточно прав для выполнения алгоритма обработки!";
КонецЕсли;

Способ 3. Ограничение доступа к внешним обработкам (.epf)

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

Если требуется разграничить доступ к внешним обработкам в типовых барах (например, УТ 10.3), рассмотрим следующие варианты:

  1. Использование справочника дополнительных обработок: запретим пользователям интерактивное открытие произвольных файлов, сняв соответствующее право в роли. Сами обработки добавим в типовой справочник ВнешниеОбработки. В карточке элемента справочника укажем список пользователей, которым разрешен запуск, либо настроим ограничения на уровне записей (RLS) к группам справочника.
  2. Разграничение на уровне прав файловой системы: если файлы .epf расположены в сетевой папке, настроим права доступа NTFS операционной системы, ограничив доступ к конкретным файлам для групп доменных пользователей.
← На главную