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

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

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

Для изменения наименования, идентификатора и других общих свойств всех объектов необходимо описание объекта открыть на редактирование с помощью метода 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;

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

Для настройки объекта и изменения его специфических свойств необходимо получить структуру объекта. Интерфейс 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;

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

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

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

См. также:

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