Вызов диалога редактирования существующего пользовательского класса.
Отсутствуют
Если редактирование существующего пользовательского класса выполнено успешно, то метод Execute вернет значение True, иначе False.
Для выполнения примера предполагается наличие в пользовательских метаданных репозитория пользовательского класса с идентификатором CUSTOMCLASS.
Добавьте ссылки на системные сборки: Metabase, Ui, Fore (для примера на Fore.NET).
Sub UserProc;
Var
Mb: IMetabase;
Target: IUiCommandTarget;
Context: IUiCommandExecutionContext;
CustomExtender: IMetabaseCustomExtender;
Type: MetabaseSpecialObject;
Result: Boolean;
Data: Array Of Variant;
Begin
Mb := MetabaseClass.Active;
Type := MetabaseSpecialObject.CustomExtender;
Target := WinApplication.Instance.GetPluginTarget("Std");
Context := Target.CreateExecutionContext;
Data := New Variant[2];
CustomExtender := Mb.SpecialObject(Type).Bind As IMetabaseCustomExtender;
Data[0] := MetabaseClass.Active;
Data[1] := CustomExtender.Classes.FindById("CUSTOMCLASS").Key;
Context.Data := Data;
Result := Target.Execute("EditCustomClass", Context);
Debug.WriteLine(Result);
End Sub UserProc;
Imports Prognoz.Platform.Interop.Metabase;
Imports Prognoz.Platform.Interop.Ui;
Imports Prognoz.Platform.Interop.Fore;
…
Public Shared Sub Main(Params: StartParams);
Var
Mb: IMetabase;
Target: IUiCommandTarget;
Context: IUiCommandExecutionContext;
CustomExtender: IMetabaseCustomExtender;
Type: MetabaseSpecialObject;
Result: Object;
Data: Array Of Object;
Svc: IForeServices;
RunContext: ForeRuntimeContext;
WinApp: WinApplicationClassClass = New WinApplicationClassClass();
Begin
Mb := Params.Metabase;
Type := MetabaseSpecialObject.msoCustomExtender;
Svc := Params.Metabase As IForeServices;
RunContext := Svc.GetRuntime().Context;
Target := WinApp.Instance[RunContext].GetPluginTarget("Std");
Context := Target.CreateExecutionContext();
Data := New Object[2];
CustomExtender := Mb.SpecialObject[Type].Bind() As IMetabaseCustomExtender;
Data[0] := Params.Metabase;
Data[1] := CustomExtender.Classes.FindById("CUSTOMCLASS").Key;
Context.Data := Data;
Result := Target.Execute("EditCustomClass", Context, RunContext);
System.Diagnostics.Debug.WriteLine(Result);
End Sub;
После выполнения примера будет открыт диалог редактирования пользовательского класса с идентификатором CUSTOMCLASS. Измените параметры класса и нажмите кнопку «ОК». В консоль будет выведен результат редактирования класса.
См. также: