Создание рабочей книги с несколькими листами и добавление в нее данных

Для выполнения примера предполагается наличие в репозитории:

Подключите ссылки на следующие системные сборки:

Пример 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(NullAs IRubricatorInstance;
    //Возвращаем из базы данных временных ряд показатель с указанным ключом
    FactD := WB.RubricatorInstance.GetFactData(45718);
    RubFactor := FactD.Factor;
    Series:= WB.Series;
    //Добавляем на активный лист рабочей книги ряд из базы данных временных рядов
    Series.AddCalculateSerieAsSource(RubFactor);
    //Сохраняем созданный объект репозитория
    MObj.Save;
End Sub UserProc;

После выполнения примера в папке с идентификатором «WORKBOOKS» будет создана рабочая книга с наименованием «Новая рабочая книга», источником которой является база данных временных рядов с идентификатором «TSDB». В рабочую книгу добавлен второй лист из экспресс-отчета/рабочей книги с идентификатором «OBJ123». На активный лист рабочей книги добавлен ряд с ключом 45718 из источника рабочей книги.

Пример Fore.NET

Указанная процедура является точкой входа 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(NullAs IRubricatorInstance;
        //Возвращаем из базы данных временных ряд показатель с указанным ключом
        FactD := WB.RubricatorInstance.GetFactData(45718);
        RubFactor := FactD.Factor;
        Series:= WB.Series;
        //Добавляем на активный лист рабочей книги ряд из базы данных временных рядов
        Series.AddCalculateSerieAsSource(RubFactor);
        //Сохраняем созданный объект репозитория
        MObj.Save();
End Sub;

Результат выполнения примера аналогичен результату примера на Fore.

См. также:

Примеры | ILaner | ILanerSeries