Формулировка проблемы: необходима опциональная возможность разграничивать права на просмотр дерева орг.структуры по структурным подразделениям.
Решение: в разделе конфигуратора «Настройки системы» -> «Управление модулями» -> «Доп. настройки управления модулями» необходимо реализовать новую опцию «Ограничить просмотр дерева орг.структуры». Опция представляет собой флажок (по умолчанию --- выключен):
выключенный флажок соответствует текущей реализации отображения дерева орг.структуры (до 57 итерации включительно);
для включенного флажка отображение дерева орг.структуры авторизованному пользователю должно происходить по нижеописанному алгоритму.
Примечание: подразделением 1 уровня будем называть то подразделение, которое является первым для данного пользователя вверх по его орг.структуре.
Если авторизованный пользователь - специалист
на
должности (не руководитель), то подразделение 1 уровня ему доступно
полностью (включая все его дочерние подразделения и должности).
Далее вверх по иерархии ему доступны только его руководители,
включая их И.О. и заместителей, назначение которых распространяется
на подразделение данного специалиста.
Если авторизованный пользователь - руководитель
подразделения любого уровня иерархии, то подразделение, в котором он
является руководителем, доступно ему полностью. Далее вверх по
иерархии ему доступны только его руководители, включая их И.О. и
заместителей, назначение которых распространяется на его
подразделение. Руководителю на корневой ноде всегда доступно всё
дерево орг.структуры, независимо от настроек.
Если авторизованный пользователь -
И.О. руководителя
подразделения, то ему доступно
всё то дерево, что и руководителю (без учета его делегирований),
исполняющим обязанности которого он является.
Если авторизованный пользователь -
заместитель руководителя
подразделения, то ему
доступно всё то дерево, что и руководителю (без учета его
делегирований), заместителем которого он является (при этом неважно,
заместителем всех или конкретного подразделения он является).
Если авторизованный пользователь имеет
дополнительный доступ
на какое-либо подразделение либо является там
сотрудником отдела кадров
,
то итоговое дерево орг.структуры должно являться результатом
объединения («ИЛИ») нескольких деревьев, доступных согласно каждому
из обоих вариантов дополнительного доступа.
Если авторизованный пользователь находится одновременно на нескольких должностях (например, специалист и И.О. руководителя, либо специалист в нескольких подразделениях и т.п.), то итоговое дерево орг.структуры должно являться результатом объединения («ИЛИ») нескольких деревьев, доступных согласно каждой его занимаемой должности.
Если авторизованный пользователь также обладает любым из делегированных прав на ежедневник и/или работы от одного или нескольких руководителей, то данному пользователю становится доступным всё то дерево, что и делегировавшим руководителям (без учета их собственных делегирований), т.е. итоговое дерево орг.структуры должно являться результатом объединения («ИЛИ») нескольких деревьев, доступных согласно делегированным правам.