CalculationType: MsCalculationType;
CalculationType: Prognoz.Platform.Interop.Ms.MsCalculationType;
Свойство CalculationType определяет режим расчёта группы.
По умолчанию группа рассчитывается в векторном режиме, то есть CalculationType = MsCalculationType.Serie.
Свойство актуально, если расчёт группы выполняется с помощью задачи трансформации.
Примечание. Если в группе используются параметры, то при расчёте динамические изменения параметров не учитываются.
Для выполнения примера в репозитории предполагается наличие контейнера моделирования с идентификатором «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.
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;
См. также: