В практике администрирования 1С часто возникает задача ограничить права сотрудника узким кругом задач. Типичный пример — специалист по охране труда или кадровик, которому необходимо заполнять только статистические формы (например, «Форма 7-травматизм»), не имея при этом доступа к финансовым результатам, оборотно-сальдовой ведомости или начислениям зарплаты. Рассмотрим подробнее, как реализовать такую задачу в «1С:Бухгалтерия» (БП) и «Зарплата и управление персоналом» (ЗУП).
Это классический метод, который позволяет максимально точно ограничить права на уровне объектов метаданных. Разберем по шагам алгоритм создания такой роли, основываясь на опыте практической реализации.
УдаленныйДоступТерминалСбораДанных или аналогичной, где минимум прав. Однако, если мы хотим сэкономить время, можно скопировать роль Бухгалтер, но тогда придется методично удалять лишнее.Отчет.РегламентированныйОтчетСтатистикаФорма7Травматизм. В свойствах нашей новой роли (назовем ее ДоступКСтатОтчетам) необходимо установить галочки на права Использование и Просмотр.РегламентированнаяОтчетность.РегламентированныеОтчеты (чтение и просмотр).СохраненныеДанныеРегламентированныхОтчетов (все права для возможности сохранения).ДоступКСтатОтчетам даем право на Просмотр этой подсистемы.После назначения роли пользователю, программа, скорее всего, выдаст ошибку при запуске или формировании отчета. Выясним причину с помощью стандартных инструментов:
Запускаем сеанс от имени ограниченного пользователя и пытаемся выполнить целевое действие. Как только возникнет ошибка «Нарушение прав доступа», переходим в сеанс администратора и открываем Журнал регистрации. Фильтруем события по этому пользователю и ищем записи с уровнем «Ошибка». В тексте ошибки будет четко указано, к какому объекту (справочнику, регистру или константе) не хватило прав. Постепенно добавляя права на чтение этих «технических» объектов, мы добьемся работоспособности отчета.
Если мы не хотим вносить изменения в основную конфигурацию, воспользуемся механизмом расширений. Это современный и безопасный подход.
В расширении мы можем не только создать роль, но и программно вмешаться в работу журнала регламентированных отчетов. Проанализируем пример кода, который можно разместить в модуле формы списка регламентированных отчетов для фильтрации видимости:
&НаСервере
Процедура Расш1_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
// Проверяем, есть ли у пользователя роль ограничения
Если РольДоступна("ДоступКСтатОтчетам") Тогда
// Устанавливаем фильтр на список отчетов, чтобы скрыть лишнее
ЭлементОтбора = СписокОтчетов.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ИсточникОтчета");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.ПравоеЗначение = "Статистика";
ЭлементОтбора.Использование = Истина;
КонецЕсли;
КонецПроцедуры
Такой подход позволяет оставить пользователю доступ к общей подсистеме, но визуально скрыть все отчеты, кроме разрешенных. Это гораздо «чище» с точки зрения интерфейса, чем просто блокировать открытие «чужих» отчетов ошибкой доступа.
В программе «Зарплата и управление персоналом» задача усложняется тем, что отчеты обычно заполняются автоматически по данным регистров расчета и накопления. Если отчет (например, по травматизму) требует данных о сотрудниках, пользователь должен обладать правами на чтение справочника ФизическиеЛица и соответствующих кадровых документов.
Важный нюанс: Чтобы пользователь не увидел лишнего (размеры окладов, премий), в ЗУП следует использовать механизм RLS (Record Level Security). Рассмотрим, как это работает:
Разберем еще один вариант, который упоминали эксперты. Если нам нужно дать доступ всего к одной форме, которую пользователь заполняет руками, мы можем выгрузить этот отчет из конфигуратора как файл .erf.
В этом случае алгоритм действий будет следующим:
Использование дополнительных отчетов и обработок.Преимущество этого метода: Пользователю вообще не нужно заходить в раздел «1С-Отчетность», он запускает нужную форму через отдельное меню, что полностью исключает риск просмотра конфиденциальной отчетности организации.
Независимо от выбранного способа, помните, что современная подсистема регламентированной отчетности в 1С (БСП) требует наличия прав на следующие объекты, без которых форма просто не инициализируется:
Константа.ИспользоватьСервис1СОтчетность (Чтение).ОбщийМодуль.РегламентированнаяОтчетность (Вызов сервера).Справочник.Организации (Просмотр — для выбора организации в отчете).Таким образом, настройка доступа «только к отчетам» — это не фантастика, а вполне решаемая задача, требующая аккуратной работы с ролями и внимательного анализа ошибок доступа через технологический журнал или журнал регистрации.