Перейти к основному содержанию
`Ctrl`+`K`

# Удаление привилегий на уровне административного объекта

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

Место применения: `Приложение "Администратор" > Настройки > Администрируемые объекты > [Администрируемый объект] > Редактировать > Дискретные ограничения доступа`

Внимание

В текущем виде содержит незавершённый массив `arr = [...]` и захардкоженный код объекта `Act_MainMenuAvi` — перед использованием необходимо завершить логику и указать корректные значения.

Тип: JEXL-скрипт

    var arr = [...];

    var ia = sql(`
      select opg.id, opg.idacrole  from Btk_AcRoleObjPrivTypeGrant opg
      join Btk_AcObject o on o.id = opg.idacobject
                         where opg.bhasaccess = 1 and o.scode = 'Act_MainMenuAvi'
    `).asList();
    for(rv:ia) {
    if (!arr.contains(rv.idacrole)){
    	arr.add(rv.idacrole);
    }
                      var rr = Btk_AcRoleApi.load(rv.idacrole);
                      Btk_AcRoleApi.unSync(rr);
                      var rop = Btk_AcRoleObjPrivTypeGrantApi.load(rv.id);
                      Btk_AcRoleObjPrivTypeGrantApi.delete(rop);
    }

    commit();

    Btk_AcRoleGrantRegApi.lazyUpdateAll();
    commit();
    for(id:arr) {
    Btk_UserApi.recalcPrivsMulti(Btk_AcRoleApi.getUsersByRole(id));
    }

    commit();