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

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

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

Способ 1. Использование механизма «Быстрого доступа» в БСП

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

  1. Перейдем в раздел АдминистрированиеПечатные формы, отчеты и обработки.
  2. Откроем справочник Дополнительные отчеты и обработки и выберем нужный элемент.
  3. В карточке отчета найдем таблицу Команды.
  4. В колонке Быстрый доступ можно указать конкретных пользователей или группы пользователей.

Важный нюанс: если список «Быстрого доступа» пуст, отчет видят все пользователи, у которых есть доступ к разделу, где размещен отчет. Как только вы добавляете туда хотя бы одного человека, отчет автоматически скрывается из списка для всех остальных. Это позволяет эффективно управлять видимостью без изменения программного кода.

Способ 2. Ограничение доступа на уровне записей (RLS)

Выясним, как использовать механизм RLS (Record Level Security) для более жесткого контроля. В современных версиях УНФ и других конфигурациях реализовано разграничение прав на уровне элементов справочника ДополнительныеОтчетыИОбработки. Чтобы понять, какие роли уже имеют доступ к справочнику, можно выполнить анализ прав доступа к объекту.

Рассмотрим алгоритм настройки:

  1. Сначала убедимся, что в программе включена опция Ограничивать доступ на уровне записей (Настройки пользователей и прав).
  2. Перейдем к настройке Профилей групп доступа. В этом поможет специальная обработка на просмотр прав и поиск подходящего профиля — для этого есть обработка анализа прав доступа по группам и профилям с RLS.
  3. В нужном профиле на закладке Ограничения доступа проверим наличие вида доступа Дополнительные отчеты и обработки.
  4. Если данный вид доступа активен, мы можем задать значения (конкретные отчеты), которые разрешены или запрещены для данного профиля.

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

Способ 3. Программная проверка прав внутри отчета

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

Посмотрим на пример кода, который следует разместить в процедуре ПриКомпоновкеРезультата в модуле объекта отчета:


Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
    
    // Проверяем наличие специальной роли или полных прав
    Если РольДоступна("ПолныеПрава") Или РольДоступна("ПросмотрУправленческойОтчетности") Тогда
        // Разрешаем штатное формирование
        Возврат;
    Иначе
        // Блокируем формирование
        СтандартнаяОбработка = Ложь;
        ДокументРезультат.Очистить();
        Сообщить("У вас недостаточно прав для формирования данного управленческого отчета!");
    КонецЕсли;

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

Разберем, что здесь происходит. Мы перехватываем событие начала компоновки. Если пользователь не обладает нужной ролью, мы устанавливаем СтандартнаяОбработка = Ложь, что предотвращает выполнение запросов к базе данных, и выводим предупреждение. Это максимально надежный способ защиты данных внутри самого файла отчета. Для быстрой проверки состава ролей в системе удобно использовать список профилей с отбором по роли.

Способ 4. Настройка доступа через варианты отчетов

Если дополнительный отчет зарегистрирован в системе и использует механизм вариантов отчетов БСП, то права можно регулировать через панель отчетов. Проанализируем этот путь:

Многие внешние отчеты при подключении создают записи в справочнике ВариантыОтчетов. Для каждого варианта в пользовательском режиме можно нажать кнопку «Настроить» или «Изменить» и в появившемся окне указать список лиц, которым доступен этот вариант. Если вам сложно определить, где именно задаются права, используйте поиск прав доступа для пользователя, чтобы быстро найти нужные настройки для конкретного сотрудника.

Способ 5. Ограничение через «Назначение» в карточке обработки

Посмотрим на ситуацию, когда отчет должен быть доступен только в контексте определенных документов. В поле Назначение карточки дополнительной обработки можно указать конкретные типы объектов (например, только документ ЗаказПокупателя). В этом случае обработка не будет отображаться в общем списке отчетов, а появится только в выпадающем меню «Отчеты» или «Печать» конкретного документа. Таким образом, доступ к ней будет ограничен правами пользователя на сам документ-хозяин.

Резюме и рекомендации

Подводя итог, выберем оптимальную стратегию в зависимости от количества отчетов:

Помните, что безопасность в 1С — это комплекс мер. Сочетание настройки видимости в интерфейсе и контроля прав на уровне записей обеспечит наиболее надежную защиту вашей информационной системы.

← На главную