Открытие диалогового окна с ошибками обновления пользователей.
Параметры команды передаются в свойстве Data. Для работы команды в данном свойстве необходимо указать следующие значения:
| Параметр | Описание |
| IMetabaseUsersUpdateErrors | Информация об ошибках, которые могли произойти при обновлении пользователей. Данную информацию можно получить в свойстве IMetabaseUsersUpdate.Errors. |
Команда доступна для использования после обновления пользователей. Обновление пользователей происходит при выполнении метода IMetabaseSecurity.UpdateUsers.
Для выполнения примера предполагается наличие формы и расположенной на ней кнопки "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;
При нажатии на кнопку будет осуществлено обновление всех пользователей, добавленных в менеджере безопасности текущего репозитория. Если во время обновления какого-либо пользователя возникают ошибки, то обновление все равно будет продолжено. После обновления всех пользователей будет выведено окно с информацией обо всех возникших ошибка.
Для выполнения примера предполагается наличие .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;
При нажатии на кнопку будет осуществлено обновление всех пользователей, добавленных в менеджере безопасности текущего репозитория. Если во время обновления какого-либо пользователя возникают ошибки, то обновление все равно будет продолжено. После обновления всех пользователей будет выведено окно с информацией обо всех возникших ошибка.
См. также: