IMsCalculationChainGroup.CalculationType

Синтаксис Fore

CalculationType: MsCalculationType;

Синтаксис Fore.NET

CalculationType: Prognoz.Platform.Interop.Ms.MsCalculationType;

Описание

Свойство CalculationType определяет режим расчёта группы.

Комментарии

По умолчанию группа рассчитывается в векторном режиме, то есть CalculationType = MsCalculationType.Serie.

Свойство актуально, если расчёт группы выполняется с помощью задачи трансформации.

Примечание. Если в группе используются параметры, то при расчёте динамические изменения параметров не учитываются.

Пример Fore

Для выполнения примера в репозитории предполагается наличие контейнера моделирования с идентификатором «MODEL_SPACE». Данный контейнер содержит метамодель с идентификатором «METAMODEL» и модель с идентификатором «MODEL».

Добавьте ссылки на системные сборки «Dimensions», «Metabase», «Ms».

Sub UserProc;
Var
    Metabase: IMetabase;
    ModelspaceDescr: IMetabaseObjectDescriptor;
    MetaModel: IMsMetaModel;
    CalculationChain, FolderCont: IMsCalculationChainEntries;
    Folder: IMsCalculationChainFolder;
    Period: IMsModelPeriod;
    Model: IMsModel;
    CalcModel: IMsCalculationChainModel;
Begin
    Metabase := MetabaseClass.Active;
    // Получаем контейнер моделирования
    ModelspaceDescr := Metabase.ItemById("MODEL_SPACE");
    // Получаем метамодель
    MetaModel := Metabase.ItemByIdNamespace("METAMODEL", ModelspaceDescr.Key).Edit As IMsMetaModel;
    // Получаем цепочку расчёта метамодели
    CalculationChain := MetaModel.CalculationChain;
    // Очищаем цепочку расчёта
    CalculationChain.Clear;
    // Добавляем папку в цепочку расчета
    Folder := CalculationChain.AddFolder("Исходные данные");
    // Задаем календарный уровень для расчёта папки
    Folder.Level := DimCalendarLevel.Year;
    // Задаем период расчёта папки
    Period := Folder.Period;
    Period.ForecastEndDate := DateTime.Parse("01.01.2015");
    Period.ForecastStartDate := DateTime.Parse("01.01.2010");
    Period.IdentificationEndDate := DateTime.Parse("31.12.2009");
    Period.IdentificationStartDate := DateTime.Parse("01.01.1990");
    // Задаем режим расчёта папки
    Folder.CalculationType := MsCalculationType.Pointwise;
    // Формируем содержимое папки
    FolderCont := Folder.Contents;
    // Получаем модель
    Model := Metabase.ItemByIdNamespace("MODEL", ModelspaceDescr.Key).Bind As IMsModel;
    // Добавляем модель в папку
    CalcModel := FolderCont.AddModel(Model);
    // Указываем, что модель наследует параметры периода расчёта от папки
    CalcModel.InheritModelPeriod := True;
    // Сохраняем изменения
    (MetaModel As IMetabaseObject).Save;
End Sub UserProc;

Результат выполнения примера: в цепочку метамодели будет добавлена папка, содержащая модель. Папка является группой элементов и для неё будут заданы: календарный уровень и период расчёта, режим расчёта. Модель, которая содержится в папке, наследует календарный уровень и период расчёта папки.

Пример Fore.NET

Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore.

Imports Prognoz.Platform.Interop.Dimensions;
Imports Prognoz.Platform.Interop.Ms;

Public Shared Sub Main(Params: StartParams);
Var
    Metabase: IMetabase;
    ModelspaceDescr: IMetabaseObjectDescriptor;
    MetaModel: IMsMetaModel;
    CalculationChain, FolderCont: IMsCalculationChainEntries;
    Folder: IMsCalculationChainFolder;
    Period: IMsModelPeriod;
    Model: IMsModel;
    CalcModel: IMsCalculationChainModel;
Begin
    Metabase := Params.Metabase;
    // Получаем контейнер моделирования
    ModelspaceDescr := Metabase.ItemById["MODEL_SPACE"];
    // Получаем метамодель
    MetaModel := Metabase.ItemByIdNamespace["METAMODEL", ModelspaceDescr.Key].Edit() As IMsMetaModel;
    // Получаем цепочку расчёта метамодели
    CalculationChain := MetaModel.CalculationChain;
    // Очищаем цепочку расчёта
    CalculationChain.Clear();
    // Добавляем папку в цепочку расчета
    Folder := CalculationChain.AddFolder("Исходные данные");
    // Задаем календарный уровень для расчёта папки
    Folder.Level := DimCalendarLevel.dclYear;
    // Задаем период расчёта папки
    Period := Folder.Period;
    Period.ForecastEndDate := DateTime.Parse("01.01.2015");
    Period.ForecastStartDate := DateTime.Parse("01.01.2010");
    Period.IdentificationEndDate := DateTime.Parse("31.12.2009");
    Period.IdentificationStartDate := DateTime.Parse("01.01.1990");
    // Задаем режим расчёта папки
    Folder.CalculationType := MsCalculationType.mctPointwise;
    // Формируем содержимое папки
    FolderCont := Folder.Contents;
    // Получаем модель
    Model := Metabase.ItemByIdNamespace["MODEL", ModelspaceDescr.Key].Bind() As IMsModel;
    // Добавляем модель в папку
    CalcModel := FolderCont.AddModel(Model);
    // Указываем, что модель наследует параметры периода расчёта от папки
    CalcModel.InheritModelPeriod := True;
    // Сохраняем изменения
    (MetaModel As IMetabaseObject).Save();
End Sub;

См. также:

IMsCalculationChainGroup