После того, как получено описание объекта, можно перейти к непосредственной работе с ним и получить доступ к структуре объекта, его параметрам, данным, правам доступа.
Для изменения наименования, идентификатора и других общих свойств всех объектов необходимо описание объекта открыть на редактирование с помощью метода 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. Интерфейсы, отвечающие за различные объекты репозитория, описаны в разных сборках, например:
Базы данных, таблицы, запросы и другие. Сборка Db, интерфейсы IDatabase, ITable, IQuery и другие;
Справочники и справочники НСИ. Сборки Dimensions и Rds, интерфейсы IStandardDimension, ICalendarDimension, IRdsDictionary и другие;
Кубы. Сборка Cubes, интерфейсы IAutoCube, IStandardCube, ICalculatedCube и другие;
Базы данных временных рядов. Сборка Cubes, интерфейс IRubricator;
Регламентные отчёты, экспресс-отчёты и рабочие книги. Сборки Report и Express, интерфейсы IPrxReport, IEaxAnalyzer.
Более подробно можно ознакомиться, изучив список доступных сборок и их состав. Пример получения доступа к модулю и настройке регламентного отчёта:
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. Это обусловлено необходимостью задавать какие-либо специфические настройки для параметров.
См. также: