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