evm написал:
Можно попробовать где-то в БД, над которой строится юниверс, положить табличку с полным перечислением подразделений, доступных для пользователей либо групп пользователей. И во всех юниверсах фильтровать список доступных подразделений одинаковым запросом к этой табличке.
Тогда в ограничения прав на уровне юниверса пишем примерно такой селект:
select distinct orgunit from access_table where user_id = @variable('BOUSER')
Если вести соответствие на уровне групп пользователей, то и в таблицу и в селект добавятся еще эти группы, но общая идея та же.
При этом встанет ряд очевидных проблем вроде защиты этой таблички от правки кем попало, средств ее ведения-заполнения и т.д. Но иногда это единственный вариант, если количество возможных уровней доступа и частота их правки велики.
У нас был еще более тяжелый вариант - возможных сочетаний пользователь-подразделение было существенно больше, причем права нужно было определять по иерархии оргструктуры, вдобавок разным для разных отчетов способом. Решили примерно так же, как я описал, но поскольку невозможно было сделать статичную таблицу с полным перечислением всех полномочий, то сделали хранимую процедуру, в которую передавался логин пользователя и тип отчета, в нее запихнули всю логику обхода иерархии, она на выходе возвращала список доступных подразделений. И на нее ссылался запрос в ограничении прав в юниверсе.
Сделали всё, как Вы сказали! Работает! Огромное спасибо! Вы ОЧЕНЬ помогли!
Спасибо! Попробую так настроить. Если получится-отпишусь
