Настройка свойств и параметров объектов

После того, как получено описание объекта, можно перейти к непосредственной работе с ним и получить доступ к структуре объекта, его параметрам, данным, правам доступа.

Редактирование описания объекта

Для изменения наименования, идентификатора и других общих свойств всех объектов необходимо описание объекта открыть на редактирование с помощью метода IMetabaseObjectDescriptor.EditDescriptor, изменить свойства и сохранить описание с помощью метода IMetabaseObjectDescriptor.SaveDescriptor:

Sub Main;
Var
    Mb: IMetabase;
    MDesc: IMetabaseObjectDescriptor;
Begin
    Mb := MetabaseClass.Active;
    
// Получение описания объекта
    MDesc := Mb.ItemById("Report");
    
// Редактирование описания объекта
    MDesc := MDesc.EditDescriptor;
    
//Изменение наименования
    MDesc.Name := MDesc.Name + " (последняя версия)";
    
//Сохранение описания
    MDesc.SaveDescriptor;
End Sub Main;

Imports Prognoz.Platform.Interop.Metabase;

Public Shared Sub Main(Params: StartParams);
Var
    Mb: IMetabase;
    MDesc: IMetabaseObjectDescriptor;
Begin
    Mb := Params.Metabase;
    
// Получение описания объекта
    MDesc := Mb.ItemById["Report"];
    
// Редактирование описания объекта
    MDesc := MDesc.EditDescriptor();
    
//Изменение наименования
    MDesc.Name := MDesc.Name + " (последняя версия)";
    
//Сохранение описания
    MDesc.SaveDescriptor();
End Sub;

Получение структуры объекта

Для настройки объекта и изменения его специфических свойств необходимо получить структуру объекта. Интерфейс IMetabaseObject описывает общую структуру всех объектов репозитория, для его получения предназначены два метода в описании объекта - IMetabaseObjectDescriptor.Bind и IMetabaseObjectDescriptor.Edit. Метод Bind вернёт структуру объекта, доступную для чтения; Edit - вернёт структуру, доступную для редактирования. Для дальнейшей работы необходимо структуру, описываемую интерфейсом IMetabaseObject, привести к интерфейсу, который отвечает за соответствующий тип объекта. Приведение типов осуществляется с помощью операции As. Интерфейсы, отвечающие за различные объекты репозитория, описаны в разных сборках, например:

Более подробно можно ознакомиться, изучив список доступных сборок и их состав.

Sub Main;
Var
    Mb: IMetabase;
    MObj: IMetabaseObject;
    Report: IPrxReport;
Begin
    Mb := MetabaseClass.Active;
    
// Получение структуры объекта
    MObj := Mb.ItemById("Module").Bind;
    
// Открытие структуры объекта на редактирование
    MObj := Mb.ItemById("Report").Edit;
    
// Приведение структуры к интерфейсу, предназначенному для работы с регламентными отчётами
    Report := MObj As IPrxReport;
    
// Изменение настроек в регламентном отчёте
    Report.ActiveSheet := Report.Sheets.FindByName("Результаты");
    Report.Options.DisplayTabs := TriState.OffOption;
    
//...
    // Сохранение изменений
    MObj.Save;
End Sub Main;

Imports Prognoz.Platform.Interop.ForeSystem;
Imports Prognoz.Platform.Interop.Metabase;
Imports Prognoz.Platform.Interop.Report;

Public Shared Sub Main(Params: StartParams);
Var
    Mb: IMetabase;
    MObj: IMetabaseObject;
    Report: IPrxReport;
Begin
    Mb := Params.Metabase;
    
// Получение структуры объекта
    MObj := Mb.ItemById["Module"].Bind();
    
// Открытие структуры объекта на редактирование
    MObj := Mb.ItemById["Report"].Edit();
    
// Приведение структуры к интерфейсу, предназначенному для работы с регламентными отчётами
    Report := MObj As IPrxReport;
    
// Изменение настроек в регламентном отчёте
    Report.ActiveSheet := Report.Sheets.FindByName("Результаты");
    Report.Options.DisplayTabs := TriState.tsOffOption;
    
//...
    // Сохранение изменений
    MObj.Save();
End Sub;

Настройка параметров объектов

Большинство объектов, реализованных «Форсайт. Аналитическая платформа», могут иметь набор параметров, за счёт которых осуществляется фильтрация отбираемых данных, управление другими объектами или какие-либо другие действия. Значения параметров запрашиваются при открытии объекта. Список параметров объекта формируется в свойстве IMetabaseObjectDescriptor.Params.

При настройке списка параметров объект должен находиться в состоянии редактирования.

Sub Main;
Var
    Mb: IMetabase;
    MObj: IMetabaseObject;
    Params: IMetabaseObjectParams;
    Param: IMetabaseObjectParam;
Begin
    Mb := MetabaseClass.Active;
    
// Получение описания объекта
    MObj := Mb.ItemById("Report").Edit;
    
// Редактирование списка параметров
    Params := MObj.Params;
    Param := Params.Add;
    Param.Id := 
"Start_Date";
    Param.Name := 
"Начальная дата";
    Param.DataType := DbDataType.Date;
    Param := Params.Add;
    Param.Id := 
"End_Date";
    Param.Name := 
"Конечная дата";
    Param.DataType := DbDataType.Date;
    
// Сохранение объекта
    MObj.Save;
End Sub Main;

Public Shared Sub Main(Params: StartParams);
Var
    Mb: IMetabase;
    MObj: IMetabaseObject;
    ObjParams: IMetabaseObjectParams;
    Param: IMetabaseObjectParam;
Begin
    Mb := Params.Metabase;
    
// Получение описания объекта
    MObj := Mb.ItemById["Report"].Edit();
    
// Редактирование списка параметров
    ObjParams := MObj.Params;
    Param := ObjParams.Add();
    Param.Id := 
"Start_Date";
    Param.Name := 
"Начальная дата";
    Param.DataType := DbDataType.ddtDate;
    Param := ObjParams.Add();
    Param.Id := 
"End_Date";
    Param.Name := 
"Конечная дата";
    Param.DataType := DbDataType.ddtDate;
    
// Сохранение объекта
    MObj.Save();
End Sub;

Также ряд объектов имеют собственные наборы параметров, например доступ к параметрам табличных справочников НСИ осуществляется через свойство IRdsDictionary.Params. Это обусловлено необходимость задавать какие-либо специфические настройки для параметров.

См. также:

Разработка прикладного приложения