Копирование контейнера моделирования.
Параметры команды передаются в свойстве IUiCommandExecutionContext.Data. Для работы команды в данном свойстве необходимо указать следующее значение:
Тип значения | Описание |
IMetabaseObjectCopyInfo | Объект с параметрами копирования объекта репозитория «Контейнер моделирования». |
Команда применяется только для контейнера моделирования
Для выполнения примера предполагается наличие формы, содержащей кнопку с идентификатором Button1.
В репозитории предполагается наличие контейнера моделирования с идентификатором MS_PLUGIN.
Добавьте ссылки на системные сборки: Fore, Metabase, Ms, UI.
Пример является обработчиком события OnClick для кнопки Button1.
Sub Button1OnClick(Sender: Object; Args: IMouseEventArgs);
Var
Mb: IMetabase;
CInfo: IMetabaseObjectCopyInfo;
Target: IUiCommandTarget;
Context: IUiCommandExecutionContext;
Begin
// Получаем текущий репозиторий
Mb := MetabaseClass.Active;
// Создаем объект для покирования и задаём параметры
CInfo := MB.CreateCopyInfo;
CInfo.Id := MB.GenerateId("MS_PLUGIN_COPY");
CInfo.Name := "Копия контейнера";
CInfo.WithData := True;
CInfo.Source := MB.ItemById("MS_PLUGIN");
CInfo.Destination := MB.Root;
// Получаем плагин Ms
Target := WinApplication.Instance.GetPluginTarget("Ms");
// Создаём контекст для выполнения команды
Context := Target.CreateExecutionContext;
// Передаём параметр команды
Context.Data := CInfo;
// Выполняем команду
Target.Execute("CopyModelSpace", Context);
End Sub Button1OnClick;
Imports Prognoz.Platform.Interop.Fore;
Imports Prognoz.Platform.Interop.Metabase;
Imports Prognoz.Platform.Interop.Ms;
Imports Prognoz.Platform.Interop.Ui;
…
Private Sub button1_Click(sender: System.Object; e: System.EventArgs);
Var
Mb: IMetabase;
CInfo: IMetabaseObjectCopyInfo;
Target: IUiCommandTarget;
WinApp: WinApplicationClassClass = New WinApplicationClassClass();
RunContext: ForeRuntimeContext;
Context: IUiCommandExecutionContext;
Begin
// Получаем текущий репозиторий
Mb := Self.Metabase;
// Создаем объект для покирования и задаём параметры
CInfo := MB.CreateCopyInfo();
CInfo.Id := MB.GenerateId("MS_PLUGIN_COPY", 0);
CInfo.Name := "Копия контейнера";
CInfo.WithData := True;
CInfo.Source := MB.ItemById["MS_PLUGIN"];
CInfo.Destination := MB.Root;
// Получаем плагин Ms
RunContext := (Mb As IForeServices).GetRuntime().Context;
Target := WinApp.Instance[RunContext].GetPluginTarget("Ms");
// Создаём контекст для выполнения команды
Context := target.CreateExecutionContext();
// Передаём параметр команды
Context.Data := CInfo;
// Выполняем команду
Target.Execute("CopyModelSpace", Context, RunContext);
End Sub;
В результате выполнения примера при нажатии на кнопку Button1 будет выполнено копирование контейнера моделирования вместе с данными.
См. также: