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

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

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

Выясним причину проблемы с типовыми правами

Попытка просто снять флаг изменения в типовой роли или дать право только на «Чтение» к документу РегламентированныйОтчет часто приводит к ошибке открытия формы. Дело в том, что при интерактивном открытии регламентированного отчета платформа 1С производит запись во временные служебные структуры и регистры сведений. Без прав на изменение сопутствующих объектов пользователь вообще не сможет открыть форму отчета.

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

Способ 1. Блокировка записи через подписку на событие «ПередЗаписью»

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

Рассмотрим порядок действий для настройки проверки прав:

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

Посмотрим на пример реализации программного кода в общем модуле:


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

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

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

Способ 2. Защита формы через механизмы расширения конфигурации

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

Разберем по шагам создание защиты на уровне формы и сервера:

  1. Добавляем в расширение форму документа РегламентированныйОтчет или основной обработки регламентированной отчетности.
  2. Перехватываем событие ПриСозданииНаСервере.
  3. Проверяем роли пользователя и устанавливаем свойство формы ЭтаФорма.ТолькоПросмотр = Истина.
  4. Дополнительно в расширении перехватываем событие ПередЗаписью объекта, чтобы исключить запись отчета программным путем.

Посмотрим пример кода для формы в расширении:


&НаСервере
Процедура Расш1_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
    
    Если НЕ РольДоступна("ПолныеПрава") И НЕ РольДоступна("ПравоРедактированияРегламентированнойОтчетности") Тогда
        ЭтаФорма.ТолькоПросмотр = Истина;
    КонецЕсли;

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

Установка свойства ТолькоПросмотр = Истина блокирует все элементы управления, ячейки и кнопки формы отчета. Пользователь сможет просматривать данные и выводить их на печать, но не сможет внести корректировки.

Альтернативные организационные решения

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

  1. Установка даты запрета изменения данных. После того как Главный бухгалтер сформировал и сдал отчетность за период, в разделе администрирования устанавливается дата запрета изменения. Отчеты за прошлые периоды будут доступны пользователю с ролью Бухгалтер только для просмотра и печати.
  2. Сохранение отчетов в печатных формах (PDF/Excel). Сформированные регламентированные отчеты выгружаются в защищенную папку или прикрепляются к объектам базы, после чего рядовым сотрудникам отключается доступ к реестру регламентированной отчетности.
← На главную