Как ограничить права и видимость настроек в «Универсальном отчете» 1С?

Программист 1С v8.3 (Управляемые формы) 1C:Бухгалтерия
← На главную

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

Метод 1. Программное управление видимостью элементов через расширение

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

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

Рассмотрим пример кода, который можно разместить в модуле формы расширения:


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

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

Метод 2. Использование механизма «Варианты отчетов» (БСП)

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

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

  1. Откроем Универсальный отчет, настроим его так, как нужно кладовщикам (выберем нужный регистр, поля, отборы).
  2. Сохраним этот вариант под понятным названием, например, «Остатки на складах (для кладовщиков)».
  3. Перейдем в раздел Администрирование — Печатные формы, отчеты и обработки — Отчеты и обработки.
  4. Найдем наш сохраненный вариант. Здесь можно указать, каким именно пользователям или группам доступа он будет виден.

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

Метод 3. Создание упрощенного отчета на базе СКД

Если задача стоит максимально жестко — пользователь не должен иметь доступа даже к интерфейсу «Универсального отчета», — проанализируем вариант создания собственного отчета. Многие начинающие разработчики боятся Системы Компоновки Данных (СКД), но мы можем использовать «хитрый» способ переноса настроек.

Разберем алгоритм действий:

  1. В «Универсальном отчете» нажмем кнопку «Изменить вариант».
  2. В открывшемся окне выберем Еще — Сохранить настройки в файл. Мы получим XML-схему со всеми отборами и группировками.
  3. В Конфигураторе создадим новый объект Отчет в нашем расширении.
  4. Создадим основную схему компоновки данных и нажмем кнопку «Загрузить схему из файла».
  5. В свойствах отчета на закладке «Состав» или в самой схеме на закладке «Настройки» снимем галочку «Включать в панель настроек» для тех элементов, которые не должны меняться.

Таким образом, мы создаем изолированный инструмент, который использует мощь Универсального отчета, но лишен его интерфейсных рисков.

Метод 4. Ограничение на уровне прав доступа (RLS)

Посмотрим на ситуацию со стороны безопасности данных. Если ваша цель — скрыть не кнопки, а конкретные записи (например, чтобы кладовщик видел только свой склад), то управление формой не поможет. Здесь в силу вступает механизм RLS (Row Level Security).

Даже если пользователь сможет открыть настройки и добавить поле «Сумма», при настроенном RLS система вернет пустые значения или просто не покажет строки, на которые у пользователя нет прав Чтение. Это самый фундаментальный способ защиты, который работает независимо от того, какой отчет открыл пользователь.

Рекомендации по выбору решения

Подведем итог и выберем оптимальный путь в зависимости от ваших навыков и задач:

Важно помнить, что Универсальный отчет — это мощный инструмент администратора. Для рядовых сотрудников лучше создавать специализированные рабочие места или фиксированные варианты отчетов, чтобы минимизировать риск получения ими конфиденциальной информации или поломки сложной настройки.

← На главную