В практической деятельности администраторов и разработчиков 1С нередко возникает задача жесткого ограничения прав пользователей. Например, когда в базу допускается оператор ввода первичных документов, стажер или внешний аудитор, которому необходимо предоставить доступ только к конкретным журналам документов, полностью скрыв от него обобщающие отчеты, баланс, оборотно-сальдовую ведомость и финансовые результаты.
На профильных форумах часто можно встретить мнение, что простой и надежной «галочки» для скрытия вообще всех отчетов в системе не существует. Нам предлагают либо полностью переписывать права доступа, либо использовать интерфейсные настройки, которые легко обойти. На самом деле в 1С:Бухгалтерия 3.0 (БП 3.0) существует целый комплекс штатных и программных механизмов, позволяющих решить эту задачу со стопроцентной надежностью.
В этой статье мы подробно разберем, как скрыть отчеты от пользователя, начиная от простых настроек видимости интерфейса и заканчивая жестким ограничением прав на уровне платформы «1С:Предприятие» и использованием расширений конфигурации.
Для того чтобы пользователь не просто не видел отчеты в меню, но и физически не мог открыть их по прямой ссылке, через поиск или с помощью консоли запросов, необходимо ограничить его права на уровне ролей. Это абсолютно стандартный механизм, настраиваемый в режиме «1С:Предприятие» под правами администратора.
Давайте разберем этот процесс по шагам:
Бухгалтер (без доступа к отчетам).Чтение стандартных отчетов — эта роль дает доступ к ОСВ (оборотно-сальдовой ведомости), карточке счета, анализу счета и другим стандартным бухгалтерским отчетам.Работа с регламентированной отчетностью (а также смежные роли чтения регламентированных отчетов) — отвечает за видимость налоговых деклараций, баланса и статистической отчетности.Чтение дополнительных отчетов и обработок — блокирует возможность запускать внешние отчетики, загруженные в базу через справочник дополнительных обработок.Бухгалтер (без доступа к отчетам) взамен старого стандартного профиля.После применения этих настроек пользователь при попытке сформировать отчет или перейти по прямой ссылке на форму отчета получит системное сообщение о нарушении прав доступа. Этот метод является наиболее безопасным и рекомендуется к внедрению в первую очередь.
Проанализируем альтернативный вариант, когда нам не нужно вручную копировать и редактировать профили. Фирма «1С» поставляет в коробке готовые профили с уже усеченными правами.
Если специфика работы сотрудника связана исключительно с выпиской первичных документов (счетов, накладных, актов), мы можем назначить ему стандартный профиль Менеджер по продажам или Менеджер по закупкам вместо профиля Бухгалтер. У этих профилей по умолчанию полностью отсутствуют роли на просмотр регламентированной бухгалтерской отчетности и стандартных бухгалтерских отчетов по счетам. Пользователь сможет полноценно вводить документы, но финансовая картина предприятия останется для него закрытой.
Если в вашей базе установлены специфические внешние отчёты, разработанные программистами под ваши нужды, стандартное отключение ролей может не сработать, если эти отчеты используют общие права на запуск внешних обработок. В этом случае на помощь приходит встроенный механизм RLS (ограничение доступа на уровне записей).
Выясним, как настроить ограничения для дополнительных отчетов:
Бывают ситуации, когда нужно скрыть не все отчеты, а только конкретные управленческие варианты отчетов, построенные на Системе компоновки данных (СКД).
Рассмотрим, как ограничить видимость конкретного варианта отчета:
Если перед вами стоит задача реализовать нетривиальную логику (например, скрывать отчеты динамически в зависимости от времени суток, филиала пользователя или других условий), стандартных профилей может не хватить. В таком случае, как справедливо посоветовали на форуме, лучшим решением будет создание небольшого расширения конфигурации.
Давайте посмотрим на пример реализации такого механизма. Мы создадим расширение и перехватим событие открытия форм отчетов, проверяя права текущего пользователя программным путем.
Ниже представлен пример кода, который можно разместить в общем модуле расширения или в обработчике перед открытием формы отчета:
&НаКлиенте
Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
// Проверим, обладает ли пользователь административными правами
Если НЕ РольДоступна("ПолныеПрава") И НЕ РольДоступна("РуководительПолномочия") Тогда
ПоказатьПредупреждение(, "У вас нет прав на формирование отчетов в данной базе!");
Отказ = Истина; // Блокируем открытие формы отчета
КонецЕсли;
КонецПроцедуры
Использование расширений позволяет гибко управлять интерфейсом и правами, не снимая конфигурацию «1С:Бухгалтерия» с поддержки, что критически важно для последующих автоматических обновлений базы.
В завершение проанализируем способ, предложенный в сообщении 1 на форуме — скрытие отчетов через настройку панели навигации разделов.
Действительно, зайдя под пользователем в любой раздел (например, «Продажи» или «Банк и касса»), можно нажать на шестеренку в правом верхнем углу панели навигации, выбрать пункт Настройка навигации (или Настройка действий) и перенести все отчеты из правой колонки (выбранные команды) в левую (доступные команды).
Почему этот способ считается ненадежным?
e1cib/app/Отчет.ОборотноСальдоваяВедомость, он сможет беспрепятственно открыть его через меню «Переход по ссылке».Таким образом, настройку интерфейса навигации можно использовать исключительно как вспомогательную меру для разгрузки рабочего экрана пользователя от лишней информации, но никак не для обеспечения реальной безопасности конфиденциальных данных.
Для гарантированного скрытия всех отчетов от пользователя в «1С:Бухгалтерия 3.0» используйте комбинированный подход:
Чтение стандартных отчетов и Работа с регламентированной отчетностью.