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 создает атрибут доступа.

Пример

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

Sub UserProc;

Var

MB : IMetabase;

Object : IMetabaseObjectDescriptor;

AOS : IAccessObjectSecurity;

Iterator : IAccessElementsIterator;

level : integer;

element : IAccessElement;

AttributeValue : IAccessAttributeValue;

Begin

MB := MetabaseClass.Active;

Object := MB.ItemByIdNamespace("Dict_1", MB.ItemById("RDS").Key);

AOS := Object.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