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