GetAccessSecurity(Options: Integer): IAccessObjectSecurity;
Options. Параметр не используется, зарезервирован на будущее. Для работы метода задайте любое значение.
Метод GetAccessSecurity получает политику доступа к объекту.
Для выполнения примера предполагается наличие в репозитории справочника НСИ с идентификатором RDS_DICT. Пользователь, выполняющий пример, должен обладать привилегией «Изменение метки безопасности и списка контроля доступа любого объекта».
Добавьте ссылки на системные сборки: Metabase, Rds.
Sub UserProc;
Var
MB: IMetabase;
MObj: IMetabaseObjectDescriptor;
Object: IMetabaseObject;
MS: IMetabaseObjectSecurity;
AOS: IAccessObjectSecurity;
Iterator: IAccessElementsIterator;
Level: Integer;
Element: IAccessElement;
AttributeValue: IAccessAttributeValue;
Begin
// Получим текущий репозиторий
MB := MetabaseClass.Active;
// Получим справочник НСИ
MObj := MB.ItemById("RDS_DICT");
Object := MObj.Edit;
MS := MObj As IMetabaseObjectSecurity;
// Проверим использование дискреционного контроля доступа для элементов справочника НСИ
If MS.AccessSecured Then
// Изменим права доступа первого элемента справочника
AOS := MS.GetAccessSecurity(1);
Iterator := AOS.GetElements;
Level := Iterator.Next;
Element := Iterator.Current;
Element := Element.Edit;
Debug.WriteLine(Element.Name);
AttributeValue := New AccessAttributeValue.Create(32,12);
Element.AttributeAccess(AccessElementAttributes.Read) := AttributeValue;
Element.Apply(AccessElementApplyOptions.ByHierarhy);
// Сохраним изменения
Object.Save;
End If;
End Sub UserProc;
После выполнения примера будут изменены права доступа на чтение для первого элемента справочника НСИ и всех его дочерних элементов. Для первых двух субъектов безопасности доступ к данным элементам будет запрещен.
См. также: