IMsFormulaTransform.CalculationOption

Синтаксис Fore

CalculationOption(Option: MsCalculationOptions): Boolean;

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

CalculationOption[Option: Prognoz.Platform.Interop.Ms.MsCalculationOptions]: boolean;

Параметры

Option. Одна или несколько опций, которые могут применяться при расчете модели.

Описание

Свойство CalculationOption определяет, применяется ли указанная опция при расчете модели.

Комментарии

Для применения значения одной или нескольких опций установите значение True, для сброса - False.

Если при получении опция возвращает значение True, то она применяется, если False - нет. Если получается значение нескольких опций сразу, то True возвращается, если все запрашиваемые опции применяются, иначе возвращается False.

Если применяется опция MsCalculationOptions.IntersectPeriods и MsCalculationOptions.UseTransformPeriod,то есть выполняется пересечение периодов модели и её объекта-родителя, то учитывайте следующие особенности:

Пример пересечения периодов модели и её объекта-родителя:

Значение IMsModelPeriod.AllowForecastBeforeIdent Периоды модели Периоды объекта-родителя Периоды после пересечения
Идентификация Прогнозирование Идентификация Прогнозирование Идентификация Прогнозирование
False 1980-2000 2001-2010 1990-2005 2006-2020 1990-2000 2006-2010
False 1980-2000 2001-2010 1970-1990 1991-1999 1980-1990 1990-1990
False 1980-2000 2001-2010 2001-2005 2006-2008 2006-2006 2006-2008
False 1980-2000 2001-2010 2011-2014 2014-2017 Модель не рассчитывается
True 1980-2000 1990-2010 1990-2001 1998-2005 1990-2000 1998-2005

Пример Fore

Для выполнения примера в репозитории предполагается наличие контейнера моделирования с идентификатором «MS», содержащего задачу моделирования с идентификатором «PROBLEM_CALC_OPTIONS». В цепочку расчета данной задачи должна входить модель с идентификатором «MODEL_CALC_OPTIONS».

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

Sub UserProc;
Var
    mb: IMetabase;
    MsKey: Integer;
    Problem: IMsProblem;
    CalcChain: IMsCalculationChainEntries;
    ChainModel: IMsCalculationChainModel;
    Model: IMsModel;
    Transform: IMsFormulaTransform;
Begin
    // Получаем текущий репозиторий
    mb := MetabaseClass.Active;
    // Получаем ключ контейнера моделирования
    MsKey := mb.GetObjectKeyById("MS");
    // Получаем задачу моделирования
    Problem := mb.ItemByIdNamespace("PROBLEM_CALC_OPTIONS", MsKey).Bind As IMsProblem;
    // Получаем цепочку расчета, используемую задачей
    CalcChain := Problem.MetaModel.CalculationChain;
    // Получаем модель
    ChainModel := CalcChain.FindById("MODEL_CALC_OPTIONS"As IMsCalculationChainModel;
    Model := ChainModel.EditModel;
    // Получаем параметры расчета модели
    Transform := Model.Transform;
    // Указываем, что выполняется пересечение периодов модели и её объекта-родителя
    Transform.CalculationOption(MsCalculationOptions.IntersectPeriods
        Or MsCalculationOptions.UseExistingData) := True;
    // Сохраняем изменения  
    (Model As IMetabaseObject).Save;
End Sub UserProc;

В результате выполнения примера для модели «MODEL_CALC_OPTIONS» будет применяться пересечение её периодов расчета и периодов расчета задачи моделирования «PROBLEM_CALC_OPTIONS».

Пример Fore.NET

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

Imports Prognoz.Platform.Interop.Ms;

Public Shared Sub Main(Params: StartParams);
Var
    mb: IMetabase;
    MsKey: uinteger;
    Problem: IMsProblem;
    CalcChain: IMsCalculationChainEntries;
    ChainModel: IMsCalculationChainModel;
    Model: IMsModel;
    Transform: IMsFormulaTransform;
Begin
    // Получаем текущий репозиторий
    mb := Params.Metabase;
    // Получаем ключ контейнера моделирования
    MsKey := mb.GetObjectKeyById("MS");
    // Получаем задачу моделирования
    Problem := mb.ItemByIdNamespace["PROBLEM_CALC_OPTIONS", MsKey].Bind() As IMsProblem;
    // Получаем цепочку расчета, используемую задачей
    CalcChain := Problem.MetaModel.CalculationChain;
    // Получаем модель
    ChainModel := CalcChain.FindById("MODEL_CALC_OPTIONS"As IMsCalculationChainModel;
    Model := ChainModel.EditModel;
    // Получаем параметры расчета модели
    Transform := Model.Transform;
    // Указываем, что выполняется пересечение периодов модели и её объекта-родителя
    Transform.CalculationOption[MsCalculationOptions.mscoIntersectPeriods
        Or MsCalculationOptions.mscoUseExistingData] := True;
    // Сохраняем изменения  
    (Model As IMetabaseObject).Save();
End Sub;

См. также:

IMsFormulaTransform