<< Click to Display Table of Contents >> Объектная модель > Основные механизмы > CallContext – контекст вызова CalledFromAccessRights – код вызван из контекста назначения прав
|
![]() ![]() |
Метод используется для проверки того, что код вызван из контекста назначения прав доступа. Доступен в событии UI-фильтрация (UIFiltering) для наследников от Sungero.CoreEntities.Users и Sungero.CoreEntities.Groups.
Синтаксис
C# |
public static bool CalledFromAccessRights() |
Возвращаемое значение
Результат проверки. True, если код вызван:
•из панели «Управление доступом» в карточке сущности или списке записей;
•из диалога «Изменение доступа к записям» в списке записей.
Иначе – false.
Пример. Исключение закрытых записей пользователей, подразделений и НОР из выборки, если событие фильтрации вызвано из контекста назначения прав
Чтобы скрыть закрытые записи, добавьте код в событие UI-фильтрации для справочников Сотрудники, Подразделения и Наши организации.
Код обработчика для справочника Сотрудники:
partial class EmployeeUiFilteringServerHandler<T>
{
public override IQueryable<T> Filtering(IQueryable<T> query, Sungero.Domain.UiFilteringEventArgs e)
{
query = base.Filtering(query, e);
// Не показывать системных пользователей при назначении прав доступа
if (CallContext.CalledFromAccessRights())
query = query.Where(x => x.IsSystem != true);
return query;
}
}
Код обработчика для справочника Подразделения:
partial class DepartmentUiFilteringServerHandler<T>
{
public override IQueryable<T> Filtering(IQueryable<T> query, Sungero.Domain.UiFilteringEventArgs e)
{
query = base.Filtering(query, e);
// Показать только действующие подразделения при выдаче прав доступа.
if (CallContext.CalledFromAccessRights())
query = query.Where(x => x.Status == Sungero.Company.Department.Status.Active);
return query;
}
}
Код обработчика для справочника Наши организации:
partial class BusinessUnitUiFilteringServerHandler<T>
{
public override IQueryable<T> Filtering(IQueryable<T> query, Sungero.Domain.UiFilteringEventArgs e)
{
query = base.Filtering(query, e);
// Показать только действующие НОР при выдаче прав доступа.
if (CallContext.CalledFromAccessRights())
query = query.Where(x => x.Status == Sungero.Company.BusinessUnit.Status.Active);
return query;
}
}
© Компания Directum, 2024 |