AccessAttributeValue.Create

Синтаксис

Create(BitCount: Integer; Value: Variant);

Параметры

BitCount - количество субъектов доступа, для которых могут быть определены права;

Value - маска доступа. Значение маски задается 4-x байтовым двоичным числом. Каждый символ двоичного числа определяет разрешение на соответствующее действие определенному субъекту безопасности:

Номер бита соответствует порядку следования субъектов в списке на вкладке «Субъекты доступа», если нумерацию начинать с нуля. Нумерация приведена справа налево.

Значение маски ... 1 1 1 0 1 1 0
Порядок следования субъектов в списке ... 7 6 5 4 3 2 1
Значение маски, приведенной к десятичному виду 118

Маска может быть задана в числовом и символьном виде. Для задания в числовом виде двоичное число должно быть приведено к десятичному виду. Для задания в символьном виде вся маска разбивается на группы по 32 бита, затем каждая группа преобразовывается к десятичному числу. К каждому полученному десятичному числу должны быть добавлены пробелы, таким образом, чтобы получилось 12 символов. Из полученных подстрок составляется полная строка. Рассмотрим следующий пример. Значение маски в двоичном виде (34 бита): 1010101010101010101010101010101010. Для задания в строковом виде необходимо разбить строку на группы: 10101010101010101010101010101010 и 10. Каждую группу приводим к десятичному виду: 2863311530 и 2. Затем дополняем группы пробелами: "2863311530  " и "2           ". Значение строки, которое должно быть передано параметру Value: "2863311530  2           ".

Описание

Метод Create создает атрибут доступа.

Пример

Для выполнения примера в репозитории предполагается наличие справочника НСИ с идентификатором DICT_1. Для справочника НСИ в списке субъектов доступа должны присутствовать 4 пользователя/группы.

Sub UserProc;
Var
    MB: IMetabase;
    MDesc: IMetabaseObjectDescriptor;
    AOS: IAccessObjectSecurity;
    Iterator: IAccessElementsIterator;
    Level: integer;
    Element: IAccessElement;
    AttributeValue: IAccessAttributeValue;
Begin
    MB := MetabaseClass.Active;
    MDesc := MB.ItemById("DICT_1");
    AOS := MDesc.GetSecurity;
    Iterator := AOS.GetElements;
    Level := Iterator.Next;
    Element := Iterator.Current;
    Element := Element.Edit;
    AttributeValue := New AccessAttributeValue.Create(32"12          "); // значение маски задано в строковом виде
    Element.AttributeAccess(AccessElementAttributes.Read) := AttributeValue;
    Element.Apply(AccessElementApplyOptions.ByHierarhy Or AccessElementApplyOptions.ByLevel);
End Sub UserProc;

После выполнения примера будут изменены права доступа на чтение для первого элемента, всех его дочерних и для элементов, расположенных на одном уровне с первым. Для первых двух субъектов безопасности доступ к данным элементам будет запрещён. Задание маски в числовом виде приведено в примере для IAccessElement.Apply.

См. также:

AccessAttributeValue