Команда  UpdateUsers_ShowErrorsDialog

Назначение

Открытие диалогового окна с ошибками обновления пользователей.

Параметры использования

Параметры команды передаются в свойстве Data. Для работы команды в данном свойстве необходимо указать следующие значения:

Параметр Описание
IMetabaseUsersUpdateErrors Информация об ошибках, которые могли произойти при обновлении пользователей. Данную информацию можно получить в свойстве IMetabaseUsersUpdate.Errors.

Особенности применения

Команда доступна для использования после обновления пользователей. Обновление пользователей происходит при выполнении метода IMetabaseSecurity.UpdateUsers.

Пример Fore

Для выполнения примера предполагается наличие формы и расположенной на ней кнопки "Button1".

Class TESTForm: Form
    Button1: Button;

    Sub Button1OnClick(Sender: Object; Args: IMouseEventArgs);
    Var
        MB: IMetabase;
        MBSec: IMetabaseSecurity;
        Users: IMetabaseUsers;
        User: IMetabaseUser;
        UserUpdate: IMetabaseUsersUpdate;
        Result: IMetabaseUsersUpdateErrors;
        Target: IUiCommandTarget;
        Context: IUiCommandExecutionContext;
    Begin
        MB := MetabaseClass.Active;
        MBSec := MB.Security;
        Users := MBSec.Users;
        UserUpdate := MBSec.CreateUsersUpdate;
        UserUpdate.Callback := New UsersUpdateCallback.Create;
        For Each User In Users Do
            UserUpdate.Add(User);
        End For;
        //Обновление всех пользователей, добавленных в менеджере безопасности
        MBSec.UpdateUsers(UserUpdate);
        //Просмотр списка ошибок, которые могли возникнуть при обновлении
        Result := UserUpdate.Errors;
        Target := WinApplication.Instance.GetPluginTarget("Adm");
        Context := Target.CreateExecutionContext;
        Context.Data := Result;
        Target.Execute("UpdateUsers_ShowErrorsDialog", Context);
    End Sub Button1OnClick;
    
End Class TESTForm;

Class UsersUpdateCallback: Object, IMetabaseUsersUpdateCallback
    UpdateResult: MetabaseUsersUpdateCallbackResult;

    Function RequestAction(ErrorInfo: IMetabaseUsersUpdateError): MetabaseUsersUpdateCallbackResult;
    Begin
        Return MetabaseUsersUpdateCallbackResult.SilentContinue;
    End Function RequestAction;
    
    Sub Process(Subject: ISecuritySubject);
    Begin
        Debug.WriteLine("Обновление пользователя: " + Subject.Name);
    End Sub Process;
    
    Function get_CallbackResult: MetabaseUsersUpdateCallbackResult;
    Begin
        Return UpdateResult;
    End Function get_CallbackResult;

    Sub set_CallbackResult(Value: MetabaseUsersUpdateCallbackResult);
    Begin
        UpdateResult := Value;
    End Sub set_CallbackResult;

End Class UsersUpdateCallback;

При нажатии на кнопку будет осуществлено обновление всех пользователей, добавленных в менеджере безопасности текущего репозитория. Если во время обновления какого-либо пользователя возникают ошибки, то обновление все равно будет продолжено. После обновления всех пользователей будет выведено окно с информацией обо всех возникших ошибка.

Пример Fore.NET

Для выполнения примера предполагается наличие .NET-формы и расположенной на ней кнопки "Button1".

Imports Prognoz.Platform.Forms.Net;
Imports Prognoz.Platform.Interop.Metabase;
Imports Prognoz.Platform.Interop.Ui;

Public Partial Class TESTForm: Prognoz.Platform.Forms.Net.ForeNetForm
    Public Constructor TESTForm();
    Begin
        InitializeComponent();
    End Constructor;

    Private Sub button1_Click(sender: System.Object; e: System.EventArgs);
    Var
        MB: IMetabase;
        MBSec: IMetabaseSecurity;
        Users: IMetabaseUsers;
        User: IMetabaseUser;
        UserUpdate: IMetabaseUsersUpdate;
        Result: IMetabaseUsersUpdateErrors;
        Target: IUiCommandTarget;
        Context: IUiCommandExecutionContext;
        WinAppCls: WinApplicationClass = New WinApplicationClassClass();
    Begin
        MB := Self.Metabase;
        MBSec := MB.Security;
        Users := MBSec.Users;
        UserUpdate := MBSec.CreateUsersUpdate();
        UserUpdate.Callback := New UsersUpdateCallback();
        For Each User In Users Do
            UserUpdate.Add(User);
        End For;
        //Обновление всех пользователей, добавленных в менеджере безопасности
        MBSec.UpdateUsers(UserUpdate);
        //Просмотр списка ошибок, которые могли возникнуть при обновлении
        Result := UserUpdate.Errors;
        Target := WinAppCls.Instance[Null].GetPluginTarget("Adm");
        Context := Target.CreateExecutionContext();
        Context.Data := Result;
        Target.Execute("UpdateUsers_ShowErrorsDialog", Context, Null);
    End Sub;

End Class;

Class UsersUpdateCallback: Object, IMetabaseUsersUpdateCallback
    UpdateResult: MetabaseUsersUpdateCallbackResult;

    Public Function RequestAction(ErrorInfo: IMetabaseUsersUpdateError): MetabaseUsersUpdateCallbackResult;
    Begin
        Return MetabaseUsersUpdateCallbackResult.muucrSilentContinue;
    End Function RequestAction;
    
    Public Sub Process(Subject: ISecuritySubject);
    Begin
        System.Diagnostics.Debug.WriteLine("Обновление пользователя: " + Subject.Name);
    End Sub Process;
    
    Public Property CallbackResult: MetabaseUsersUpdateCallbackResult
        Get
        Begin
            Return UpdateResult;
        End Get
        Set
        Begin
            UpdateResult := Value;
        End Set
    End Property CallbackResult;
End Class;

При нажатии на кнопку будет осуществлено обновление всех пользователей, добавленных в менеджере безопасности текущего репозитория. Если во время обновления какого-либо пользователя возникают ошибки, то обновление все равно будет продолжено. После обновления всех пользователей будет выведено окно с информацией обо всех возникших ошибка.

См. также:

IUiCommandTarget.Execute