IMsFormulaTransform.CalculationOption

Синтаксис

CalculationOption(Option: MsCalculationOptions): Boolean;

Параметры

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

Описание

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

Комментарии

Допустимые значения:

Если при получении опция возвращает значение 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

Пример

Для выполнения примера в репозитории предполагается наличие контейнера моделирования с идентификатором 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.

См. также:

IMsFormulaTransform