IAuditFilterCondition.Operation

Синтаксис

Operation(Index: Integer): Integer;

Operation[Index: integer]: integer;

Параметры

Index. Индекс позиции определяемой операции.

Количество позиций определяется свойством IAuditFilterCondition.OperationCount.

Описание

Свойство Operation определяет операции, информация по которым будет отображаться в протоколе доступа.

Комментарии

Значения операций могут совпадать, поэтому для определения однозначности операции обязательно следует задавать класс объекта, для которого данные операции будут отображаться в протоколе доступа.

Для указания операции необходимо использовать значения перечислимого типа MetabaseObjectPredefinedRights. В этом перечислении содержатся основные и дополнительные операции, на которые можно раздавать права и вести аудит доступа. Для определенных классов объектов доступны специфические операции. Для использования специфических операций, в зависимости от класса объекта, можно использовать значения следующих перечислений:

Основные, дополнительные и специфические операции, доступные для определенных типов объектов, представлены в разделе «Протоколируемые операции».

Пример

Для выполнения примера добавьте ссылки на системные сборки: Metabase, ForeSystem (для примера на Fore.NET).

Sub UserProc;
Var
    Mb: IMetabase;
    Log: IAuditLog;
    Fil: IAuditFilter;
    Con: IAuditFilterCondition;
    AL: IAuditLogons;
    AO: IAuditOperations;
    Lic: Object;
Begin
    MB := MetabaseClass.Active;
    Lic := MB.RequestLicense(UiLicenseFeatureType.Adm);
    Log := Mb.Security.OpenAuditLog;
    Fil := Log.Filter;
    Fil.Clear;
    Con := Fil.Add;
    Con.MinDate := DateTime.Parse(
"11.01.2019 00:00:00");
    Con.OperationCount := 
2;
    Con.Operation(
0) := MetabaseObjectPredefinedRights.Create_;
    Con.OperationClass(
0) := MetabaseObjectClass.KE_CLASS_METABASEUPDATEOBJECT;
    Con.Operation(
1) := MetabaseObjectPredefinedRights.Delete Or MetabaseObjectPredefinedRights.Create_;
    Con.OperationClass(
1) := MetabaseObjectClass.KE_CLASS_FOLDER;
    AL := Log.OpenLogons(
False);
    
While Not AL.Eof Do
        
Debug.WriteLine(AL.UserName + " " + AL.UserOS + " " + (DateTime.FromDouble(AL.Stamp)).ToString);
        Debug.Indent;
        AO := Log.OpenOperations(AL.Session);
        
While Not AO.Eof Do
            Debug.WriteLine(
"Операция: " + AO.Name + "; Объект:" + AO.ObjectId + "; Номер операции:" + AO.Operation.ToString);
            AO.Next;
        
End While;
        AL.Next;
        Debug.Unindent;
    
End While;
    Lic := 
Null;
End Sub UserProc;

Imports Prognoz.Platform.Interop.Metabase;
Imports Prognoz.Platform.Interop.ForeSystem;

Public Shared Sub Main(Params: StartParams);
Var
    Mb: IMetabase;
    Log: IAuditLog;
    Fil: IAuditFilter;
    Con: IAuditFilterCondition;
    AL: IAuditLogons;
    AO: IAuditOperations;
    Lic: Object;
Begin
    MB := Params.Metabase;
    Lic := MB.RequestLicense(UiLicenseFeatureType.lftAdm);
    Log := Mb.Security.OpenAuditLog();
    Fil := Log.Filter;
    Fil.Clear();

    Con := Fil.Add();
    Con.MinDate := DateTime.Parse(
"11.01.2019 00:00:00");
    Con.OperationCount := 
2;
    Con.Operation[
0] := MetabaseObjectPredefinedRights.moprCreate_ As Integer;
    Con.OperationClass[
0] := MetabaseObjectClass.KE_CLASS_METABASEUPDATEOBJECT;
    Con.Operation[
1] := (MetabaseObjectPredefinedRights.moprDelete As Integer) Or (MetabaseObjectPredefinedRights.moprCreate_ As Integer);
    Con.OperationClass[
1] := MetabaseObjectClass.KE_CLASS_FOLDER;
    AL := Log.OpenLogons(
False);
    
While Not AL.Eof() Do
        
System.Diagnostics.Debug.WriteLine(AL.UserName + " " + AL.UserOS + " " + (DateTime.FromOADate(AL.Stamp)).ToString());
        System.Diagnostics.Debug.Indent();
        AO := Log.OpenOperations(AL.Session);
        
While Not AO.Eof() Do
            System.Diagnostics.Debug.WriteLine(
"Операция: " + AO.Name + "; Объект:" + AO.ObjectId + "; Номер операции:" + AO.Operation.ToString());
            AO.Next();
        
End While;
        AL.Next();
        System.Diagnostics.Debug.Unindent();
    
End While;
    Lic := 
Null;        
End Sub;

После выполнения примера в консоль будут выведены все действия с определенными классами объектов по заданным операциям, начиная с конкретной даты «11.01.2019».

См. также:

IAuditFilterCondition