Исходные данные.
- Типовая конфигурация, находящаяся на поддержке. Вносить изменения Заказчик категорически отказывается.
- Все «нетиповые» отчеты и обработки реализованы внешними и хранятся в справочнике «Внешние обработки».
- Высказано пожелание иметь возможность самостоятельно, без привлечения программиста, управлять доступом к вышеуказанным отчетам и обработкам.
Способ реализации.
В отчет (обработку) добавлена табличная часть «Права доступа», в которой перечислены либо список пользователей, либо роли. Галочками пользователь с полными правами может рулить — кому давать доступ, кому нет.
Хранение таблицы прав организовано в регистре сведений «Настройки пользователей», более подробно об этом здесь: «Внешний» справочник или Хранение данных между сеансами работы внешних обработок.
Перед открытием формы происходит заполнение таблицы прав доступа либо из сохраненной ранее настройки, либо значениями по-умолчанию (при первом старте, например).
После этого производится собственно проверка доступа.
Минусы реализации.
- Достаточная трудоемкость при наличии большого количества внешних отчетов/обработок.
- Некоторая неуниверсальность, поскольку при создании нового отчета/обработки необходимо помнить об этом механизме разграничения прав.
Возможно, минусов еще больше, но как альтернативный вариант реализации, я думаю, имеет право на существование.
Отчет, предлагаемый для скачивания, не содержит функциональной нагрузки и призван только продемонстрировать пример реализации этого механизма.
Без всех этих заморочек,проверку прав доступа можно осуществлять в самом внешнем отчете или обработке. Заказчик явно переусердствует. Вариант решения — любой каприз за ваши деньги. За программистов обидно.
Считаю, что запрещать надо не запускать отчет, а запрещать доступ к определенным данным. То есть, если нет права Расчет зарплаты, например, то хоть зазапускайся, но расчетную ведомость не получишь.
А чем стандартный RLS не подошёл?
Имеет право на жизнь.
(2) dka80, не очень такой подход. Тот же ЗУП для того что бы доработанную карточку Т-2(выводятся сведения о компенсации отпуска) в клиент-серверном варианте мог выводить кадровик ему нужно или давать права расчетчика или давать право на чтение соответствующих регистров.
Куда проще ограничить на запуск данной обработки. Чем давать или по сути полные права к подсистеме расчета или лезть в конфигуратор….
Такой подход возможен если у тебя в конфигурации очень гибкая настройка ролей и прав. А если у тебя как в ЗУПе или в БП 2,5 роли…
(3) TODD22, тем, что:
1. Изменять конфигурацию нельзя.
2. Пользователь с полными правами должен иметь возможность менять права доступа к отчету/обработке по своему усмотрению
3. Каким Вы видите шаблон ограничений RLS для реализации этой задачи?
Как вариант разграничения прав — очень даже нормальный…
Я за то, чтобы конкретную обработку мог пользовать именно тот, кому это положено, а не все, кто имеет доступ к обрабатываемым объектам…
Идея интересная, а главное механизм реально осуществим и работает! Согласен с (2) dka80 на 100%, но для этого необходимы изменения типовой конфигурации. Если же конфигурация на поддержке, и чуть не единственный способ что-то изменить — использование механизма внешних отчетов и обработок, представленый способ разграничения доступа — отличный. Еще раз спасибо за идею.
а группы пользователей не подойдет для данных целей, добавил в начале группу, а потом уже в группы накидывай или удаляй пользователей как хочется
(9) vx_gas, в текущем примере реализовано ограничение только по списку пользователей и ролей.
Однако, полет фантазии не ограничен ничем 🙂
(6) таким, как он реализован в типовых конфигурациях, в том же ЗУП. Там доступ к каждому внешнему отчету можно разрешить для группы или конкретного пользователя. Поэтому расчетчики, например, не видят кадровых отчетов, и наоборот.
Для меня эта информация оказалась полезной, возьму на вооружение.
Столкнулись с такой же проблемой. Доступ к данным есть у пользователей, но конкретными отчетами/выборками по этим данным имеют право пользоваться не все их них. Работаем в УТ11. Есть мысль запретить пользователям самостоятельно настраивать под себя список отчетов. Но для этого скорее всего придется снимать с поддержки часть объектов.