gifts2017

Запреты и ограничения доступа к объектам

Опубликовал Яков Коган (Yashazz) в раздел Администрирование - Защита, права, пароли

Подсистема, позволяющая несколько автоматизировать ограничение доступа к объектам (справочники, документы, ПВХ). Статический контроль (настройки построителя) и динамический (исполняемый код условия). Групповая обработка запретов.
Внимание! Требует доработки (разнесения прав на саму эту подсистему, подключения справочника "Пользователи", подключения подписок на события).

Всё выложено по просьбе http://forum.infostart.ru/forum24/topic37517/message409785/#message409785

Внимание! Требуется доработка напильником - т.к. в подсистеме нет справочника "Пользователи", его надо подключить к таблице исключительных прав доступа в форме регистра настроек и в форме групповой обработки. Если, конечно, вы хотите указывать тех пользователей, кому можно игнорировать запрет. Кроме того, советую настроить собственно доступ к настройкам - ограничить согласно вашим ролям в вашей конфигурации.

Обязательно нужно подключить подписки на события к соответствующим объектам, иначе никакого смысла в подсистеме нет.

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

На всякий случай напомню, чем принципиально отличается динамический запрет от статического. Если у вас сохранены некоторые данные, и вы используете статический запрет, который обращается к ним через построитель, т.е. считывает из БД, то как бы вы/пользователь ни изменяли данные таким образом, чтобы они уже не подпадали под запрет, в случае запрета на запись система не даст сохранить изменения - в БД-то они ещё старые, подлежащие запрету. Поэтому придётся или временно отключать запрет, или вносить нужное в список исключений, или пользоваться динамическим запретом. Динамический запрет обращается непосредственно к объекту в его текущем состоянии, в т.ч. уже отредактированном, но ещё не записанном в БД.

Выкладываю архив базы, т.к. там набита пара полезных примеров применения.

Надеюсь, кому-нибудь пригодится, хотя бы как основа для собственной разработки.

 

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

Наименование Файл Версия Размер Кол. Скачив.
AccessControlSubSystem
.dt 61,96Kb
20.11.14
149
.dt 61,96Kb 149 Скачать

См. также

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

Комментарии

1. Александр Зубцов (iov) 24.01.11 13:41
ограничить доступ к внешним обработкам можно?
2. Эстер Коган (e.kogan) 24.01.11 16:43
На изменение - легко.
На доступ (то бишь открытие самой обработки) у нас другая штука работает.
Увы, подписки на чтение объекта не существует :)
3. Ийон Тихий (cool.vlad4) 24.01.11 16:56
(2) А что за штука если не секрет? Никогда не задавался этим вопросом, но заинтересовали - помнится используя DynamicWrapperX, можно установить запрет на запуск более одного раза http://infostart.ru/public/18722/ , наверно как-то так...(разработчик DynamicWrapperX создал просто гениальнейшую вещь - теоретически одной ей можно заменить большинство ВК)
4. Эстер Коган (e.kogan) 27.01.11 10:21
Да нет, всё проще. Для конф, которые нельзя менять: проверяете права в модуле отчёта/обработки (по РольДоступна) и при недостаче ничего не делаете, кроме сигнализации, что не в своё лезет (никаких изменений). Если можно вмешиваться, но минимально - используете, например, произвольный текст алгоритма в качестве комментария (можно тэгировать) и перед использованием обработки (два, что ли, места в конфигурации) выполняете, ориентируясь на результат. Если же вы не ограничены в изменении конфигурации - вариантов вообще масса.
cool.vlad4; +1 Ответить 2
5. Ийон Тихий (cool.vlad4) 27.01.11 10:34
(4) Действительно все просто, чего-то я за деревьями леса не увидел...вот потому и в дебри пошел...голова не тем забита :D
6. Лилия (lakzn) 01.02.11 17:01
(1),(4) Посмотрите, может в вашей конфигурации есть типовой механизм для ограничения прав доступа к внешим обработкам? Например, в УПП российской и украинской есть, настраивается в режиме предприятия (включаете ограничение доступа на уровне записей для объектов вида "Внешние обработки", и потом включаете это ограничение для нужных групп пользователей).
7. Александр Зубцов (iov) 01.02.11 17:21
(6) :) Про типовой - знаю. Я конкретно это решение имею ввиду.
8. Александр Зубцов (iov) 03.02.11 21:42
ГрупповаяОбработкаЗапретовДоступа основная форма ФормулаПрименимости - тип точно строка?
9. Александр Зубцов (iov) 03.02.11 22:25
А поточнее можно алгоритм до основной и после цикла - что и зачем так?
P.S.



Для каждого подс Из Подсистемы.состав Цикл
спПодсистем.Добавить(подс.Имя,подс.Представление());
Если спВсехПодсистем.НайтиПоЗначению(подс.Имя)=Неопределено Тогда
спВсехПодсистем.Добавить(подс.Имя,подс.Представление());
КонецЕсли;
КонецЦикла;

это если поменять на

Для Каждого Подсистема Из Метаданные.Подсистемы Цикл
Для каждого Состав Из Подсистема.Состав Цикл
спПодсистем.Добавить(Подсистема.Имя,Подсистема.Представление());
Если спВсехПодсистем.НайтиПоЗначению(Подсистема.Имя)=Неопределено Тогда
спВсехПодсистем.Добавить(Подсистема.Имя,Подсистема.Представление());
КонецЕсли;
КонецЦикла;
КонецЦикла;

Будет работает в 8.2 в толстом клиенте.
Но очень жаль что нет справочки...
10. Яков Коган (Yashazz) 13.02.11 00:22
(8) У-у-упс. Конечно, не строка, а ссылка на "Алгоритмы". Извиняюсь, недоглядел.

(9) Это более широкая трактовка, применяемая в нашей конфе. До и После - для тех случаев, когда сам алгоритм должен выполняться над некой коллекцией данных; тогда в "До" определяются общие параметры, в "Основной" идёт то, что внутри цикла, т.е. для каждого элемента коллекции, а в "После" завершение, итоги, фиксация итыды.
11. Евгений Билык (evgeniy.bilyk) 26.09.11 13:39
автору спасибо за функционал
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа