IMsFormulaTransform.RefreshAttributesStructure

Синтаксис Fore

RefreshAttributesStructure;

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

RefreshAttributesStructure();

Описание

Метод RefreshAttributesStructure обновляет структуру атрибутов модели.

Комментарии

Метод актуален, если модель основана на атрибутах.

Пример Fore

Для выполнения примера предполагается наличие базы данных временных рядов с идентификатором «TSDB», содержащей во внутреннем контейнере моделирования модель детерминированного уравнения с идентификатором «MODEL_ATTR».

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

Sub UserProc;
Var
    Mb: IMetabase;
    RubrDescr: IMetabaseObjectDescriptor;
    Rubr: IRubricator;
    MsDescr: IMetabaseObjectDescriptor;
    Model: IMsModel;
    Transform: IMsFormulaTransform;
    TransformVarables: IMsFormulaTransformVariables;
    Coord: IMsFormulaTransformCoord;
    Calc: IMsMethodCalculation;
    Period: IMsModelPeriod;
    Formula: IMsFormula;
Begin
    // Получаем БД временных рядов
    Mb := MetabaseClass.Active;
    RubrDescr := Mb.ItemById("TSDB");
    Rubr := RubrDescr.Bind As IRubricator;
    // Получаем внутренний контейнер моделирования
    MsDescr := Rubr.ModelSpace;
    // Получаем модель
    Model := Mb.ItemByIdNamespace("MODEL_ATTR", MsDescr.Key).Edit As IMsModel;
    // Получаем параметры модели
    Transform := Model.Transform;
    // Задаем параметры для расчёта модели
    TransformVarables := Transform.Outputs;
    Coord := Transform.CreateCoord(TransformVarables.Item(0));
    Calc := Transform.CreateCalculation;
    Period := Calc.Period;
    Period.IdentificationStartDate := Model.Period.IdentificationStartDate;
    Period.IdentificationEndDate := Model.Period.IdentificationEndDate;
    Period.ForecastStartDate := Model.Period.ForecastStartDate;
    Period.ForecastEndDate := Model.Period.ForecastEndDate;
    Calc.CurrentPoint := Model.Period.IdentificationStartDate;
    // Обновляем структуру атрибутов модели
    Transform.RefreshAttributesStructure;
    // Выполняем расчёт модели
    Formula := Transform.FormulaItem(0);
    (Formula.Method As IMsDeterministicTransform).Execute(Calc, Coord);
    // Сохраняем изменения
    (Model As IMetabaseObject).Save;
End Sub UserProc;

Результат выполнения примера: обновлена структура атрибутов модели «MODEL_ATTR», модель рассчитана.

Пример Fore.NET

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

Imports Prognoz.Platform.Interop.Cubes;
Imports Prognoz.Platform.Interop.Ms;

Public Shared Sub Main(Params: StartParams);
Var
    Mb: IMetabase;
    RubrDescr: IMetabaseObjectDescriptor;
    Rubr: IRubricator;
    MsDescr: IMetabaseObjectDescriptor;
    Model: IMsModel;
    Transform: IMsFormulaTransform;
    TransformVarables: IMsFormulaTransformVariables;
    Coord: IMsFormulaTransformCoord;
    Calc: IMsMethodCalculation;
    Period: IMsModelPeriod;
    Formula: IMsFormula;
Begin
    // Получаем БД временных рядов
    Mb := Params.Metabase;
    RubrDescr := Mb.ItemById["TSDB"];
    Rubr := RubrDescr.Bind() As IRubricator;
    // Получаем внутренний контейнер моделирования
    MsDescr := Rubr.ModelSpace;
    // Получаем модель
    Model := Mb.ItemByIdNamespace["Model_ATTR", MsDescr.Key].Edit() As IMsModel;
    // Получаем параметры модели
    Transform := Model.Transform;
    // Задаем параметры для расчёта модели
    TransformVarables := Transform.Outputs;
    Coord := Transform.CreateCoord(TransformVarables.Item[0]);
    Calc := Transform.CreateCalculation();
    Period := Calc.Period;
    Period.IdentificationStartDate := Model.Period.IdentificationStartDate;
    Period.IdentificationEndDate := Model.Period.IdentificationEndDate;
    Period.ForecastStartDate := Model.Period.ForecastStartDate;
    Period.ForecastEndDate := Model.Period.ForecastEndDate;
    Calc.CurrentPoint := Model.Period.IdentificationStartDate;
    // Обновляем структуру атрибутов модели
    Transform.RefreshAttributesStructure();
    // Выполняем расчёт модели
    Formula := Transform.FormulaItem[0];
    (Formula.Method As IMsDeterministicTransform).Execute(Calc, Coord);
    // Сохраняем изменения
    (Model As IMetabaseObject).Save();
End Sub;

См. также:

IMsFormulaTransform