Для выполнения примера предполагается наличие в репозитории:
Папки с идентификатором «WORKBOOKS», в которую будет сохранена созданная рабочая книга;
База данных временных рядов с идентификатором «TSDB», на основе которой будет построена рабочая книга. В базе данных должен содержаться ряд с ключом 45718;
Экспресс-отчет или рабочая книга с идентификатором «OBJ123», из которого будет добавлен лист в создаваемую рабочую книгу.
Подключите ссылки на следующие системные сборки:
Cubes;
Express;
Laner;
Metabase (только для Fore).
Sub UserProc;
Var
MB: IMetabase;
CrInfo: IMetabaseObjectCreateInfo;
MObj: IMetabaseObject;
Exp: IEaxAnalyzer;
Source: IMetabaseObjectDescriptor;
WB: ILaner;
FactD: IRubricatorFactData;
RubFactor : IRubricatorFactor;
Series: ILanerSeries;
Begin
MB := MetabaseClass.Active;
CrInfo := MB.CreateCreateInfo;
CrInfo.ClassID := MetabaseObjectClass.KE_CLASS_WORKBOOK;
CrInfo.Id := MB.GenerateId("NewWorkbook");
CrInfo.Name := "Новая рабочая книга";
CrInfo.Parent := MB.ItemById("WORKBOOKS");
//Создаем объект репозитория «Рабочая книга»
MObj := MB.CreateObject(CrInfo).Edit;
Exp := MObj As IEaxAnalyzer;
//Определяем источник рабочей книги
Source := MB.ItemById("TSDB");
//Добавляем в рабочую книгу второй лист из экспресс-отчета/рабочей книги с указанным идентификатором
Exp.Sheets.Add(MB.ItemById("OBJ123").Bind As IEaxAnalyzer);
WB := Exp.Laner;
WB.RubricatorInstance := Source.Open(Null) As IRubricatorInstance;
//Возвращаем из базы данных временных ряд показатель с указанным ключом
FactD := WB.RubricatorInstance.GetFactData(45718);
RubFactor := FactD.Factor;
Series:= WB.Series;
//Добавляем на активный лист рабочей книги ряд из базы данных временных рядов
Series.AddCalculateSerieAsSource(RubFactor);
//Сохраняем созданный объект репозитория
MObj.Save;
End Sub UserProc;
После выполнения примера в папке с идентификатором «WORKBOOKS» будет создана рабочая книга с наименованием «Новая рабочая книга», источником которой является база данных временных рядов с идентификатором «TSDB». В рабочую книгу добавлен второй лист из экспресс-отчета/рабочей книги с идентификатором «OBJ123». На активный лист рабочей книги добавлен ряд с ключом 45718 из источника рабочей книги.
Указанная процедура является точкой входа Main в модуле Program .NET-сборки. В данный модуль должны быть импортированы сборки Express, Metabase, Laner, Cubes из системной сборки Prognoz.Platform.Interop.
Public Shared Sub Main(Params: StartParams);
Var
MB: IMetabase;
CrInfo: IMetabaseObjectCreateInfo;
MObj: IMetabaseObject;
Exp: IEaxAnalyzer;
Source: IMetabaseObjectDescriptor;
WB: ILaner;
FactD: IRubricatorFactData;
RubFactor : IRubricatorFactor;
Series: ILanerSeries;
Begin
MB := Params.Metabase;
CrInfo := MB.CreateCreateInfo();
CrInfo.ClassID := MetabaseObjectClass.KE_CLASS_WORKBOOK As integer;
CrInfo.Id := MB.GenerateId("NewWorkbook");
CrInfo.Name := "Новая рабочая книга";
CrInfo.Parent := MB.ItemById["WORKBOOKS"];
//Создаем объект репозитория «Рабочая книга»
MObj := MB.CreateObject(CrInfo).Edit();
Exp := MObj As IEaxAnalyzer;
Source := Exp.DataSourceDescriptor;
//Определяем источник рабочей книги
Source := MB.ItemById["TSDB"];
//Добавляем в рабочую книгу второй лист из экспресс-отчета/рабочей книги с указанным идентификатором
Exp.Sheets.Add(MB.ItemById["OBJ123"].Bind() As IEaxAnalyzer);
WB := Exp.Laner;
WB.RubricatorInstance := Source.Open(Null) As IRubricatorInstance;
//Возвращаем из базы данных временных ряд показатель с указанным ключом
FactD := WB.RubricatorInstance.GetFactData(45718);
RubFactor := FactD.Factor;
Series:= WB.Series;
//Добавляем на активный лист рабочей книги ряд из базы данных временных рядов
Series.AddCalculateSerieAsSource(RubFactor);
//Сохраняем созданный объект репозитория
MObj.Save();
End Sub;
Результат выполнения примера аналогичен результату примера на Fore.
См. также: