ITsCalculationContext.ParamValues

Синтаксис Fore

ParamValues: ITsModelParamValues;

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

ParamValues[Context: Prognoz.Platform.Interop.Fore.IForeRuntimeContext]: Prognoz.Platform.Interop.Transform.ITsModelParamValues;

Описание

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

Комментарии

Параметры доступны, если их содержит рассчитываемая модель.

Пример Fore

В пример приведен пользовательский метод расчета.

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

Function UserFunction(Input: ITimeSeries): Variant;
Var
    pContext: ITsCalculationContext;
    i, k: Integer;
    pParVals: ITsModelParamValues;
    pParVal: ITsModelParamValue;
Begin
    // Получаем контекст пользовательского метода расчета
    pContext := TsCalculation.Current;
    pParVals := pContext.ParamValues;
    // Если в расчете доступны числовые параметры,
    // то увеличиваем значение наблюдений на значение параметра
    If (pParVals <> NullAnd (pParVals.Count > 0Then
        For i := 0 To pParVals.Count - 1 Do
            pParVal := pParVals.Item(i);
            If (pParVal.DataType = DbDataType.Float) Or (pParVal.DataType = DbDataType.Integer) Then
                For k := Input.StartIndex To Input.EndIndex Do
                    Input.Item(k) := Input.Item(k) + pParVal.Value;
                End For;
            End If;
        End For;
    // Если параметры отсутствуют, то заполняем ряд нулями
    Else
        For k := Input.StartIndex To Input.EndIndex Do
            Input.Item(k) := 0;
        End For;
    End If;
    // Возвращаем изменённый ряд
    Return Input;
End Function UserFunction;

Если в расчете доступны числовые параметры, то метод увеличивает значение наблюдений входного ряда на значение параметра, если параметры отсутствуют, то заполняет ряд нулями.

Пример Fore.NET

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

Imports Prognoz.Platform.Interop.Dal;
Imports Prognoz.Platform.Interop.Ms;
Imports Prognoz.Platform.Interop.Transform;

Public Shared Function UserFunction(Input: ITimeSeries): object;
Var
    TsCalc: TsCalculation;
    pContext: ITsCalculationContext;
    i, k: Integer;
    pParVals: ITsModelParamValues;
    pParVal: ITsModelParamValue;
Begin
    // Получаем контекст пользовательского метода расчета
    TsCalc := New TsCalculation.Create();
    pContext := TsCalc.Current[Null];
    pParVals := pContext.ParamValues[Null];
    // Если в расчете доступны числовые параметры,
    // то увеличиваем значение наблюдений на значение параметра
    If (pParVals <> NullAnd (pParVals.Count > 0Then
        For i := 0 To pParVals.Count - 1 Do
            pParVal := pParVals.Item[i];
            If (pParVal.DataType = DbDataType.ddtFloat) Or (pParVal.DataType = DbDataType.ddtInteger) Then
                For k := Input.StartIndex To Input.EndIndex Do
                    Input.Item[k] := (Input.Item[k] As double) + (pParVal.Value As double);
                End For;
            End If;
        End For;
    // Если параметры отсутствуют, то заполняем ряд нулями  
    Else
        For k := Input.StartIndex To Input.EndIndex Do
            Input.Item[k] := 0;
        End For;
    End If;
    // Возвращаем изменённый ряд
    Return Input;
End Function UserFunction;

См. также:

ITsCalculationContext