Пересчет разрешений и экземпляров ключей

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

Пересчет разрешений доступа

Пересчет разрешений доступа требуется в следующих случаях:

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

Пересчет экземпляров ключей доступа

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