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