При администрировании и разработке в конфигурациях 1С (например, 1С:Управление торговлей 10.3) часто возникает задача ограничить возможность запуска одной конкретной обработки для большинства пользователей, сохранив при этом доступ к остальному функционалу системы. Рассмотрим все доступные способы решения этой задачи: от штатной настройки прав в конфигураторе до программных проверок и особенностей работы с внешними обработками.
Разберем наиболее правильный и безопасный вариант — использование механизма прав платформы 1С. Если обработка встроена в дерево метаданных конфигурации, доступ к ней полностью регулируется правами Использование и Просмотр.
Разберем по шагам порядок действий в конфигураторе:
Роли.МожетЗакрытьПериод или ПравоЗапускаСпециальнойОбработки).Использование (при необходимости также Просмотр).Пользователь). Перейдем на закладку Права у целевой обработки и снимем флаги использования у всех ролей, кроме созданной специализированной роли и роли ПолныеПрава.При таком подходе пользователь без назначенной роли не сможет открыть обработку через интерфейс, а при попытке программного создания объекта (Обработки.ИмяОбработки.Создать()) платформа автоматически выдаст исключение о нарушении прав доступа.
Иногда требуется дополнительно ограничить доступ кодом или выдать пользователю понятное информационное сообщение. Посмотрим на частую ошибку: вызов метода ЭтаФорма.Закрыть() в событии ПриОткрытии.
Вызов Закрыть() в момент инициализации формы приводит к ошибкам отрисовки, визуальным мерцаниям и нестабильной работе интерфейса. Для корректного прерывания открытия формы в обычных формах используется стандартный параметр события Отказ.
Посмотрим на пример правильной реализации в модуле формы обработки:
Процедура ПриОткрытии(Отказ)
Если Не РольДоступна("МожетЗакрытьПериод") И Не ПравоДоступа("Администрирование", Метаданные) Тогда
ПоказатьПредупреждение(, "У вас недостаточно прав для открытия данной обработки!");
Отказ = Истина;
Возврат;
КонецЕсли;
КонецПроцедуры
Если обработка может запускаться программно без открытия экранной формы, проверку прав необходимо дублировать непосредственно в модуле объекта обработки (например, перед выполнением ключевых алгоритмов):
Если Не РольДоступна("МожетЗакрытьПериод") И Не ПравоДоступа("Администрирование", Метаданные) Тогда
ВызватьИсключение "Недостаточно прав для выполнения алгоритма обработки!";
КонецЕсли;
Выясним причину, почему для внешних файлов обработок штатные роли платформы работают иначе. Право роли Интерактивное открытие внешних отчетов и обработок является глобальным. Платформа 1С не позволяет средствами ролей дать доступ к файлу одной внешней обработки через меню Файл — Открыть и одновременно заблокировать другую.
Если требуется разграничить доступ к внешним обработкам в типовых барах (например, УТ 10.3), рассмотрим следующие варианты:
ВнешниеОбработки. В карточке элемента справочника укажем список пользователей, которым разрешен запуск, либо настроим ограничения на уровне записей (RLS) к группам справочника..epf расположены в сетевой папке, настроим права доступа NTFS операционной системы, ограничив доступ к конкретным файлам для групп доменных пользователей.