ISharedPluginsContainer.Plugins

Синтаксис Fore

Plugins: ISharedPlugins;

Синтаксис Fore.NET

Plugins: Prognoz.Platform.Interop.KeFore.ISharedPlugins;

Описание

Свойство Plugins возвращает объект для работы с плагинами.

Комментарии

Возвращаемый объект позволяет настроить общие параметры плагинов. Для настройки параметров конкретного плагина используйте интерфейс ISharedAdhocPlugin.

Пример Fore

Для выполнения примера в репозитории предполагается наличие:

  1. Объекта «Ресурсы» с идентификатором «RESOURCE».

  2. Формы-визуализатора с идентификатором «OBJ_ViewForm». Данная форма содержит компоненты, образующие внешний вид плагина, и код, описывающий логику работы компонентов в плагине. Форма-визуализатор должна наследоваться от класса AdhocUserViewForm.

  3. Формы-мастера с идентификатором «OBJ_MasterForm». Данная форма содержит компоненты, образующие вкладки боковой панели для настройки плагина, и код, описывающий логику применения настроек к плагину. Форма-мастер должна наследоваться от класса AdhocUserMasterForm.

В файловой системе должны существовать две пиктограммы: «C:\Icon_small.ico» размером 16х16 пикселей и «C:\Icon_large.ico» размером 32х32 пикселя. В папке «Build», содержащейся в папке с установленным веб-приложением «Форсайт. Аналитическая платформа», должен существовать скрипт «PP.SamplePlugin.js». Данный скрипт должен описывать аналог плагина, используемый в веб-приложении.

Добавьте ссылки на системные сборки: Drawing, Fore, Io, Metabase.

Sub UserProc;
Var
    mb: IMetabase;
    plugins: ISharedPlugins;
    cont: ISharedPluginsContainer;
    adhoc_plugs: ISharedAdhocPlugins;
    plugin: ISharedAdhocPlugin;
    Res: IResourceObject;
    ImgLst: IGxImageList;
    Icon: IGxIcon;
Begin
    // Получаем объект для работы с текущим репозиторием
    mb := MetabaseClass.Active;
    // Получаем объект для работы с контейнером плагинов
    cont := mb.SpecialObject(MetabaseSpecialObject.SharedParams).Edit As ISharedPluginsContainer;
    // Получаем объект для работы с плагинами
    plugins := cont.Plugins;
    // Задаем объект «Ресурсы» для плагинов
    Res := mb.ItemById("RESOURCE").Edit As IResourceObject;
    plugins.Resource := Res;
    // Задаем маленькие изображения для плагинов
    ImgLst := New GxImageList.Create;
    ImgLst.Height := 16;
    ImgLst.Width := 16;
    Icon := New GxIcon.CreateFromFile("C:\Icon_small.ico");
    ImgLst.AddIcon(Icon);
    plugins.SmallImages := ImgLst;
    // Задаем большие изображения для плагинов
    ImgLst.Clear;
    ImgLst.Height := 32;
    ImgLst.Width := 32;
    Icon := New GxIcon.CreateFromFile("C:\Icon_large.ico");
    ImgLst.AddIcon(Icon);
    plugins.LargeImages := ImgLst;
    // Получаем коллекцию плагинов инструмента "Аналитические панели"
    adhoc_plugs := plugins.AdhocPlugins;
    // Создаем новый плагин
    plugin := plugins.AdhocPlugins.Add;
    // Задаем идентификатор в верхнем регистре, совпадающий с идентификатором в js-скрипте плагина
    plugin.Id := "SAMPLEPLUGIN";
    // Задаем наименование плагина
    plugin.Name := "Пример плагина";
    plugin.IconIndex := 0;
    // Задаем форму-визуализатор и форму-мастер
    plugin.ViewForm := mb.ItemById("OBJ_ViewForm");
    plugin.MasterForm := mb.ItemById("OBJ_MasterForm");
    // Задаем относительный путь плагина из корневой папки веб-приложения
    plugin.WebUrl := "../plugins/PP.SamplePlugin.js";
    // Сохраняем созданный плагин
    (cont As IMetabaseObject).Save;
End Sub UserProc;

В результате выполнения примера в инструмент «Аналитические панели» будет подключен плагин.

Пример Fore.NET

Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore. Вместо компонентов Fore используйте их Fore.NET аналоги.

Imports Prognoz.Platform.Interop.Drawing;
Imports Prognoz.Platform.Interop.KeFore;
Imports Prognoz.Platform.Interop.ForeIO;

Public Shared Sub Main(Params: StartParams);
Var
    mb: IMetabase;
    plugins: ISharedPlugins;
    cont: ISharedPluginsContainer;
    adhoc_plugs: ISharedAdhocPlugins;
    plugin: ISharedAdhocPlugin;
    Res: IResourceObject;
    ImgLst: GxImageList;
    Icon: GxIcon;
Begin
    // Получаем объект для работы с текущим репозиторием
    mb := Params.Metabase;
    // Получаем объект для работы с контейнером плагинов
    cont := mb.SpecialObject[MetabaseSpecialObject.msoSharedParams].Edit() As ISharedPluginsContainer;
    // Получаем объект для работы с плагинами
    plugins := cont.Plugins;
    // Задаем объект «Ресурсы» для плагинов
    Res := mb.ItemById["RESOURCE"].Edit() As IResourceObject;
    plugins.Resource := Res;
    // Задаем маленькие изображения для плагинов
    ImgLst := New GxImageList.Create();
    ImgLst.Height := 16;
    ImgLst.Width := 16;
    Icon := New GxIconClass.Create();
    Icon.CreateFromFile("C:\Icon_small.ico");
    ImgLst.AddIcon(Icon);
    plugins.SmallImages := ImgLst;
    // Задаем большие изображения для плагинов
    ImgLst.Clear();
    ImgLst.Height := 32;
    ImgLst.Width := 32;
    Icon := New GxIconClass.Create();
    Icon.CreateFromFile("C:\Icon_large.ico");
    ImgLst.AddIcon(Icon);
    plugins.LargeImages := ImgLst;
    // Получаем коллекцию плагинов инструмента "Аналитические панели"
    adhoc_plugs := plugins.AdhocPlugins;
    // Создаем новый плагин
    plugin := plugins.AdhocPlugins.Add();
    // Задаем идентификатор в верхнем регистре, совпадающий с идентификатором в js-скрипте плагина
    plugin.Id := "SAMPLEPLUGIN";
    // Задаем наименование плагина
    plugin.Name := "Пример плагина";
    plugin.IconIndex := 0;
    // Задаем форму-визуализатор и форму-мастер
    plugin.ViewForm := mb.ItemById["OBJ_ViewForm"];
    plugin.MasterForm := mb.ItemById["OBJ_MasterForm"];
    // Задаем относительный путь плагина из корневой папки веб-приложения
    plugin.WebUrl := "../plugins/PP.SamplePlugin.js";
    // Сохраняем созданный плагин
    (cont As IMetabaseObject).Save();
End Sub;

См. также:

ISharedPluginsContainer