Пересчет разрешений и экземпляров ключей
При самостоятельном формировании разрешений и экземпляров ключей необходимо поддерживать их актуальность. Существует перечень ситуаций, в которых необходимо обеспечить их обновление.
Пересчет разрешений доступа
Пересчет разрешений доступа требуется в следующих случаях:
- Если вы изменили алгоритм вычисления разрешений в обработчиках следующих событий:
- ВычислитьРазрешенияДоступа
- ВычислитьРазрешенияДоступаДляОбъектов
- ВычислитьКлючиДоступаДляЧтения
- ВычислитьКлючиДоступаДляИзменения
- Если вы добавили в проект новый элемент, для которого поддерживается управление доступом (справочник, HTTP-сервис и т.д.). Вычисление разрешений доступа для всего элемента проекта не выполняется автоматически;
Пересчет разрешений можно вызвать:
- Для одного элемента проекта, например, справочника
Сотрудники:
Сотрудники.ПересчитатьРазрешенияДоступа()
- Для некоторых или для всех сущностей одного элемента проекта, например, для всех элементов
справочника
Сотрудники:
Сотрудники.ПересчитатьРазрешенияДоступаДляОбъектов()
Предупреждение: Эта операция может занять длительное время если, например, справочник содержит большое количество элементов.Важно: У периодического регистра сведений вызов этого метода приведет к вызову двух событий: ВычислитьКлючиДоступаДляЧтения и ВычислитьКлючиДоступаДляИзменения. - Для всех элементов проекта или для всех их элементов данных. Например, для всех
справочников:
для Справочник из Справочники Справочник.ПересчитатьРазрешенияДоступа() ;
Пересчет экземпляров ключей доступа
Пересчет экземпляров ключей доступа требуется в следующих случаях:
- Если вы изменили алгоритм выдачи экземпляров ключей в обработчиках событий имя-ключа-доступа.ПроверитьНаличиеКлючейДоступа;
- Если изменились данные, на которых основывается выдача экземпляров ключей тем или иным пользователям: принадлежность к той или иной роли, к тому или иному подразделению и т. д. Эти данные могут храниться в структурах, создаваемых другими элементами проекта или во внешней системе.
- Если изменился набор параметров у какого-нибудь ключа доступа в проекте. В этом случае при обновлении приложения таблица ключей пользователя будет очищена. Соответственно, нужно пересчитать экземпляры этого ключа доступа и разрешения, которые могли содержать экземпляры этого класса ключа доступа.
Пересчет экземпляров ключей можно вызвать:
- Для некоторых или для всех
пользователей:
Пользователи.ПересчитатьКлючиДоступа()
- Для экземпляров определенного ключа, например для всех экземпляров ключа
КлючиГруппСотрудников:
КлючиГруппСотрудников.ПересчитатьКлючи()
- Для конкретного экземпляра ключа (пересчитать экземпляр ключа для некоторых или для всех
пользователей):
пер КлючМенеджеров = новый КлючиГруппСотрудников.Объект(ГруппыСотрудников.Менеджеры) КлючМенеджеров.Пересчитать()
- Для всех ключей доступа:
для КлючДоступа из КлючиДоступа КлючДоступа.ПересчитатьКлючи() ;