Как запретить расшифровку регламентированной отчетности для определенных пользователей в 1С:УПП 1.3

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

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

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

Архитектура механизма расшифровки в регламентированной отчетности

Для начала разберем, как устроен механизм расшифровки в регламентированных отчетах 1С. Каждый отчет (например, бухгалтерский баланс) представляет собой сложную обработку. При автоматическом заполнении система генерирует ТабличныйДокумент, в ячейки которого программно записываются не только значения, но и параметры расшифровки.

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

Таким образом, нам достаточно перехватить выполнение именно в этой общей точке, чтобы ограничение заработало централизованно для абсолютно всех регламентированных отчетов базы данных.

Решение 1. Изменение общего модуля конфигурации

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

Выясним процедуру, которую нужно доработать. В общем модуле РегламентированнаяОтчетностьКлиент найдем процедуру, отвечающую за расшифровку. Добавим в её начало проверку доступности специализированной роли. Сначала нам потребуется создать новую роль в конфигураторе, например, ЗапретРасшифровкиРегламентированнойОтчетности, или наоборот использовать проверку на отсутствие роли ПолныеПрава.

Рассмотрим пример кода, который внедряется в начало процедуры:


Процедура ОткрытьРасшифровкуОтчета(ПараметрыРасшифровки, СтандартнаяОбработка) Экспорт

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

    // Далее идет типовой код системы...
КонецПроцедуры

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

Решение 2. Использование расширения конфигурации (рекомендуемый способ)

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

Разберем этот процесс по шагам:

  1. Создайте новое расширение в конфигураторе (меню «Конфигурация» — «Расширения конфигурации»).
  2. Перенесите в расширение общий модуль РегламентированнаяОтчетностьКлиент.
  3. В модуле расширения создайте процедуру-перехватчик с аннотацией &Перед для процедуры ОткрытьРасшифровкуОтчета.

Посмотрим на пример реализации такого перехватчика в расширении:


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

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

Использование свойства СтандартнаяОбработка = Ложь предотвращает дальнейшее выполнение оригинального кода платформы, аккуратно прерывая операцию без аварийного завершения работы программы.

Комплексная безопасность данных (почему одной блокировки интерфейса мало)

Блокировка кнопки или двойного клика мыши на форме отчета — это ограничение исключительно на уровне интерфейса (UI). Опытный пользователь или проверяющий легко сможет обойти этот запрет, если у него останутся права на чтение первичных данных. Проанализируем критически важные уязвимости, которые необходимо закрыть параллельно с отключением расшифровки:

1. Доступ к стандартным бухгалтерским отчетам

Если у проверяющего сотрудника открыт доступ к Оборотно-сальдовой ведомости (ОСВ), Карточке счета или Анализу счета, то запрет расшифровки в балансе теряет смысл. Пользователь просто откроет параллельно ОСВ по интересующему счету (например, 60 или 62) и увидит всю необходимую конкретику. Для такого пользователя необходимо полностью отключить права на запуск стандартных отчетов.

2. Доступ к регистрам напрямую

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

3. Права на выгрузку и сохранение файлов

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

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

← На главную