ImplementationURL : String;
ImplementationURL : System.String;
Свойство ImplementationURL устанавливает URL-адрес скрипта, реализующего операции объекта класса, которые будут выполняться из веб-приложения «Форсайт. Аналитическая платформа».
Из интерфейса URL-адрес скрипта устанавливается в диалоге «Классы объектов» на вкладке «Операции».
Для выполнения примера предполагается наличие в репозитории объекта-ресурсы с идентификатором «OBJ_RES». В файловой системе должны присутствовать две пиктограммы: «C:\Icon_small.ico» и «C:\Icon_large.ico».
Sub UserProc;
Var
Mb: IMetabase;
Object: IMetabaseObject;
CustomClassExtender: IMetabaseCustomExtender;
CustClasses: IMetabaseCustomClasses;
CustomClass: IMetabaseCustomClass;
Operations: IMetabaseCustomClassOperations;
Operation: IMetabaseCustomClassOperation;
CreateInfo: IMetabaseObjectCreateInfo;
Description: IMetabaseObjectDescriptor;
ImgList: IGxImageList;
ImgList32: IGxImageList;
Icon: IGxIcon;
CustomObject: IMetabaseCustomObject;
Begin
Mb := MetabaseClass.Active;
// Создание контейнера пользовательских классов
CreateInfo := Mb.CreateCreateInfo;
CreateInfo.ClassId := MetabaseObjectClass.KE_CLASS_CUSTOM_EXTENDER;
CreateInfo.Name := "CUSTOM_EXTENDER";
CreateInfo.Permanent := True;
CreateInfo.Parent := Mb.Root;
Description := Mb.CreateObject(CreateInfo);
Object := Description.Edit;
CustomClassExtender := Object As IMetabaseCustomExtender;
ImgList := New GxImageList.Create;
ImgList.Height := 16;
Icon := New GxIcon.CreateFromFile("C:\Icon_small.ico");
ImgList.AddIcon(Icon);
CustomClassExtender.SmallImages := ImgList;
ImgList32 := New GxImageList.Create;
ImgList32.Height := 32;
Icon := New GxIcon.CreateFromFile("C:\Icon_large.ico");
ImgList32.AddIcon(Icon);
CustomClassExtender.LargeImages := ImgList32;
CustomClassExtender.IsShared := True;
CustomClassExtender.Resource := Mb.ItemById("OBJ_RES").Bind As IResourceObject;
CustomClassExtender.NameResource := "ID_CUSTOM_EXTENDER";
// Добавление пользовательского класса в контейнер
CustClasses := CustomClassExtender.Classes;
CustomClass := CustClasses.Add;
CustomClass.Description := "Собственный класс";
CustomClass.ImageIndex := 0;
// URL-адрес скрипта, реализующего операции
CustomClass.ImplementationURL := "https://site/CoolScript.js";
Operations := CustomClass.Operations;
Operation := Operations.Add(0);
Operation.Name := "Новый метод";
Object.Save;
End Sub UserProc;
После выполнения примера будет создан контейнер пользовательских классов, содержащий один класс. Для контейнера будет определен идентификатор строкового ресурса «ID_CUSTOM_EXTENDER» из ресурсов «OBJ_RES». Для класса будет определена одна операция. В репозитории будет создан объект пользовательского класса. Источником большой пиктограммы для объекта будет файл «C:\Icon_large.ico», маленькой - «C:\Icon_small.ico». Для класса будет установлен URL-адрес скрипта, реализующего обработчик операции объекта класса в веб-приложении - https://site/CoolScript.js.
Условия и результат выполнения аналогичны примеру Fore.
Public Shared Sub Main(Params: StartParams);
Var
Mb: IMetabase;
Object: IMetabaseObject;
CustomClassExtender: IMetabaseCustomExtender;
CustClasses: IMetabaseCustomClasses;
CustomClass: IMetabaseCustomClass;
Operations: IMetabaseCustomClassOperations;
Operation: IMetabaseCustomClassOperation;
CreateInfo: IMetabaseObjectCreateInfo;
Description: IMetabaseObjectDescriptor;
ImgList: GxImageList;
ImgList32: GxImageList;
Icon: GxIcon;
CustomObject: IMetabaseCustomObject;
Begin
Mb := Params.Metabase;
// Создание контейнера пользовательских классов
CreateInfo := Mb.CreateCreateInfo();
CreateInfo.ClassId := MetabaseObjectClass.KE_CLASS_CUSTOM_EXTENDER As Int32;
CreateInfo.Name := "CUSTOM_EXTENDER";
CreateInfo.Permanent := True;
CreateInfo.Parent := Mb.Root;
Description := Mb.CreateObject(CreateInfo);
Object := Description.Edit();
CustomClassExtender := Object As IMetabaseCustomExtender;
ImgList := New GxImageList.Create();
ImgList.Height := 16;
Icon := New GxIconClass();
Icon.CreateFromFile("C:\Icon_small.ico");
ImgList.AddIcon(Icon);
CustomClassExtender.SmallImages := ImgList;
ImgList32 := New GxImageList.Create();
ImgList32.Height := 32;
Icon := New GxIcon.Create();
Icon.CreateFromFile("C:\Icon_large.ico");
ImgList32.AddIcon(Icon);
CustomClassExtender.LargeImages := ImgList32;
CustomClassExtender.IsShared := True;
CustomClassExtender.Resource := Mb.ItemById["OBJ_RES"].Bind() As IResourceObject;
CustomClassExtender.NameResource := "ID_CUSTOM_EXTENDER";
// Добавление пользовательского класса в контейнер
CustClasses := CustomClassExtender.Classes;
CustomClass := CustClasses.Add();
CustomClass.Description := "Собственный класс";
CustomClass.ImageIndex := 0;
// URL-адрес скрипта, реализующего операции
CustomClass.ImplementationURL := "https://site/CoolScript.js";
Operations := CustomClass.Operations;
Operation := Operations.Add(0);
Operation.Name := "Новый метод";
Object.Save();
End Sub;
End Class;
См. также: