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