gifts2017

Ограничение прав на уровне отборов

Опубликовал Александр Хомяк (logarifm) в раздел Администрирование - Защита, права, пароли

Данная статья удачно применима для штатных конфигураций, где используются построители и универсальные механизмы отчетов.

Здравствуйте, уважаемые коллеги. Решил поделится одной наработкой, на звезды и огромное количество плюсов не претендую, только на ваше внимание и минутку определенного времени для оценки такого вида возможности "Ограничения прав".

 

Итак к сути. У меня в конфигурации используется RLS, все как бы хорошо, но наткнулся на проблемку в отчетах. К примеру у пользователя нету прав к документам, у которых отличное подразделение от его права, естественно право на уровне записей я для документов настроил и все отлично работает, в журналах чужие документы не видны, да и в отчетах вроде тоже, все как бы красиво, пока мои "злобные" пользователи меня не переубедили в противоположном.

Взять, к примеру, регистр накопления "Продажи" - это оборотный регистр, в котором есть измерение "Подразделение", пользователь к нему ограничен и если он попытается сформировать отчет он увидит только свои подразделения и информацию к ним, но вот элементарный обход этой ситуации. Пользователь делает в отчете только одну группировку "ДокументПродажи" и увидит все документы даже не его подразделения. Открытие документа конечно не произойдет, но вот сумма продажи уже есть, а пользователю это полностью запрещено (не скажу по каким причинам, такая безопасность практикуется здесь).

Думал.... Переписывать RLS. Но как!? Там уже у меня куча групп пользователей и филиалов, да и ролей полно в самой конфигурации и уже все шаблоны прописаны мной и протестированы...

Ура... Вот оно решение, а что если пользователям, которые ограничены к отчетности, строго  в отборе отчетов программно определять их доступ? И если даже пользователь будет сам этот отбор убивать/изменять, чтобы он проставлялся при переформировании вновь. Вот оно... Начал процесс разработки. Конечно же, тут без кода не обойтись, но и надо его максимально минимизировать. Также встал вопрос "свойств и категорий" и это удалось решить...

Архитектура разработки:

  1. В систему добавлен справочник "ХранениеИзмеренийОтчетов":
    Его реквизиты:
    • Наименование - обработка начало выбора добавлен список выбора текущих отчетов конфигурации, для возможности выбора его из списка;
    • СинонимОтчета - собственно это  и есть синоним отчета конфигурации метаданных (проставляется автоматически от изменения наименования);
    Табличная часть:
    • ИмяИзмерения - здесь надо знать точное имя измерения как оно выглядит в построителе;
    • Представление - это для своего удобства;
    • Назначение - Назначение: свойства/категории. Если данное измерение содержит свойства или категории и ограничения пользователя будут через свойства или категории, то имеет смысл здесь определить этот тип.

  2. Также в систему добавлен регистр сведений ОграничениеОтбораКОтчетам. Структуру данного регистра можно посмотреть в конфигурации.

  3. Добавлены общие модули: "НастройкаДополнительныхПрав", "VWG_СтандартныеОтчеты".

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

    А именно в процедурах:

    В процедуру  УстановитьНачальныеНастройки() добавлено:

    //+VWG VWG_СтандартныеОтчеты.УстановитьИспользованиеСвойствИКатегорий(ЭтотОбъект.Метаданные().Имя,УниверсальныйОтчет);
    //-VWG


    И в процедуру СформироватьОтчет(ТабличныйДокумент) добавлено:

    //+VWG
    VWG_СтандартныеОтчеты.ПрименитьОграничениеКИзмерениямОтчета(ЭтотОбъект.Метаданные().Имя,УниверсальныйОтчет);
    //-VWG


Здесь собственно все. Как у меня работает система, показано на скриншотах.

Благодарю за внимание.

 

P.S. Приложенная конфигурация является только примером моих объектов, сама она не запускается. Только для того, чтобы посмотреть как это интегрировать у себя. Для измерений в комментариях были прописаны типы, которые были проставлены в моей конфигурации.

Конфигурационный файл сделан на движке 8.2.10.77.

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
Конфигурация
.cf 62,12Kb
26.10.10
89
.cf 62,12Kb 89 Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Serg Kondrasgov (SergDi) 27.10.10 22:50
о боже! Человек, а не проще применить RLS к регистру...
2. Александр Кирилюк (ArtfulCrom) 31.10.10 03:03
Жесть, правда? :o

А представляете насколько легко по этим скриншотам идентифицируется компания для которой коллега пишет такие отчеты :) Регионы Украины и ТМ показаны в открытом виде, идентифицировать чья сеть представляет эти ТМ в этих регионах проще пареной репы :)

Но зачем это узнавать? Как впрочем и зачем весь этот огород вместо Правильно настроенной РЛС :)
3. Rabajaba Caspersky (Rabajaba) 02.11.10 13:06
RLS на 8.2 не вызывает тех же торможений, что были в 8.1?
4. 1C Lab (1C_Lab) 03.08.12 23:28
у rls сталкивался с проблемами производительности. взял разработку автора для внедрения в собственную базу. Нравится что можно выполнять настройку отборов по горячему без внесения изменений в кода в режиме предприятия. Автору спс.
5. Stas Bobkov (stas1kbob) 19.11.13 12:37
хорошие у автора клиенты
6. Владимир Целоусов (VTselousov) 13.03.15 16:50
Конфигурация УТ 10.3.26 выдает ошибку

{РегистрСведений.ОграничениеОтбораКОтчетам.Форма.ФормаЗаписи.Форма(82)}: Значение не является значением объектного типа (Метаданные)
ИсходнаяТаблица = Пользователь.Метаданные().Имя;
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа