Как разрешить пользователю работу только с одним конкретным внешним отчетом?

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

В практике администрирования 1С часто возникает ситуация, когда в целях безопасности пользователям запрещается использование любых внешних отчетов и обработок. Это достигается путем отключения роли ИнтерактивноеОткрытиеВнешнихОтчетовИОбработок (или аналогичной в типовых решениях). Однако иногда бизнес-процесс требует, чтобы пользователь имел доступ ровно к одному специфическому внешнему файлу, не получая при этом возможности запускать любой произвольный код. Проанализируем способы решения этой задачи, начиная от изменения структуры метаданных и заканчивая использованием штатных подсистем.

Способ 1: Встраивание отчета в расширение конфигурации

Это наиболее современный и «чистый» метод, который позволяет не снимать основную конфигурацию с поддержки. Рассмотрим этот процесс по шагам. Когда мы добавляем отчет в расширение, он перестает считаться «внешним» с точки зрения платформенных прав на интерактивное открытие файлов (меню «Файл» — «Открыть»).

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

Таким образом, пользователь сможет запустить этот конкретный отчет через интерфейс (панель отчетов), но не сможет открыть никакой другой внешний файл, так как общая роль на внешние обработки у него по-прежнему отключена.

Способ 2: Использование подсистемы «Дополнительные отчеты и обработки» (БСП)

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

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

  1. Убедимся, что у пользователя отключена роль Интерактивное открытие внешних отчетов и обработок.
  2. Зайдем в систему под администратором и перейдем в справочник Дополнительные отчеты и обработки.
  3. Загрузим наш внешний отчет в справочник.
  4. В карточке настройки отчета укажем разделы интерфейса (команды), где он будет доступен, и выберем конкретных пользователей в списке «Быстрый доступ».
  5. Проверим наличие у пользователя роли Использование дополнительных отчетов и обработок. Эта роль позволяет работать только с теми объектами, которые администратор уже проверил и загрузил в базу.

В этой ситуации пользователь видит только те элементы, которые ему явно назначены. Возможность «подсунуть» системе свой произвольный файл у него отсутствует, так как механизм Файл — Открыть заблокирован платформой.

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

Иногда требуется оставить отчет именно в виде внешнего файла. В этом случае нам придется включить пользователю роль на использование внешних отчетов, но ограничить выполнение кода внутри самого объекта. Разберем, как это реализовать с помощью встроенного языка 1С.

В модуле объекта или в форме отчета (в обработчике ПриОткрытии или ПриСозданииНаСервере) мы можем добавить проверку на наличие определенной роли или соответствие имени пользователя. Рассмотрим пример кода:


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

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

Этот метод считается менее надежным, так как опытный пользователь может изменить код внешнего отчета, удалив эту проверку, если у него есть доступ к файлу на диске. Поэтому данный способ рекомендуется использовать только в связке с ограничением прав доступа на уровне файловой системы (права Windows на папку с отчетом).

Способ 4: Использование типового RLS (Data Level Security)

Проанализируем ситуацию, когда необходимо задействовать механизм RLS (Ограничение доступа на уровне записей). Если мы используем «Дополнительные отчеты и обработки», мы можем настроить профиль групп доступа таким образом, чтобы ограничить видимость элементов самого справочника ДополнительныеОтчетыИОбработки.

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

  1. Включим использование ограничений доступа на уровне записей в настройках программы.
  2. Создадим группу доступа к отчетам.
  3. В профиле пользователя укажем ограничение, при котором ему доступны только элементы справочника Дополнительные отчеты и обработки, входящие в определенную категорию или имеющие определенное значение реквизита.

Это позволит пользователю видеть в общем списке «Дополнительных отчетов» только одну разрешенную строку, даже если в базе зарегистрированы десятки других обработок.

Важные замечания по безопасности и «Безопасному режиму»

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

  1. Либо создать Профиль безопасности (в серверном варианте работы).
  2. Либо добавить в код отчета специальную функцию СведенияОВнешнейОбработке, где указать необходимые разрешения (для БСП).

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

← На главную