GetSubjectAllowed(Subject: ISecuritySubject; DesiredAccess: Integer; Attribute: IMetaAttribute; Selection: IDimSelection);
Subject. Субъект безопасности.
DesiredAccess. Значение, определяющие действия над элементами сегмента, возможность произвести которые необходимо проверить. Для указания значения маски необходимо использовать значения перечислимого типа MetabaseObjectPredefinedRights в комбинации с CubeSpecificRights. При раздаче прав на сегменты используются соответствующие операции Read и Write.
Attribute. Атрибут, определяющий измерение.
Selection. Отметка элементов измерения.
Метод GetSubjectAllowed позволяет получить отметку элементов измерения, доступных для совершения указанных действий указанным пользователем.
Для выполнения примера предполагается наличие в репозитории базы данных временных рядов с идентификатором «OBJ_RUBRICATOR», в которой должны быть определены сегменты и должен присутствовать атрибут показателя с идентификатором «COUNTRY», являющийся ссылкой на справочник.
Sub Main;
Var
mb: IMetabase;
rubInst: IRubricatorInstance;
Rub: IRubricator;
Segs: IRubricatorSegments;
Attr: IMetaAttribute;
Dict: IMetabaseObject;
DI: IDimInstance;
Sel: IDimSelection;
mbSec: IMetabaseSecurity;
User: IMetabaseUser;
Begin
mb := MetabaseClass.Active;
Rub := mb.ItemById("OBJ_RUBRICATOR").Bind As IRubricator;
rubInst := (Rub As IMetabaseObjectDescriptor).Open(Null) As IRubricatorInstance;
Segs := rubInst.Segments;
Attr := Rub.Facts.Attributes.FindById("COUNTRY");
Dict := Attr.ValuesObject.Bind;
DI := Dict.Open(Null) As IDimInstance;
Sel := DI.CreateSelection;
Sel.SelectAll;
mbSec := MB.Security;
User := mbSec.ResolveName("ADMIN") As IMetabaseUser;
Segs.GetSubjectAllowed(User, MetabaseObjectPredefinedRights.Read, Attr, Sel);
Debug.WriteLine(Sel.ToString);
End Sub Main;
После выполнения примера в окно консоли будут выведена отметка элементов, доступных для чтения пользователю «ADMIN».
См. также: