IValidationExecData.ByScenario

Синтаксис Fore

ByScenario: Boolean;

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

ByScenario: boolean;

Описание

Свойство ByScenario определяет, рассчитывать ли валидацию в измерении сценариев.

Комментарии

Возможные значения:

Пример Fore

Для выполнения примера предполагается наличие базы данных временных рядов с идентификатором FC_COMM. Добавьте ссылки на системные сборки: Cubes, Dimensions, Matrix, Metabase.

Sub UserProc;
Var
    mb: IMetabase;
    Inst: IRubricatorInstance;
    ArrVali: Array[0..1Of Integer;
    MatCop, Mat: IMatrix;
    CooSrc, CooRes: IMatrixCoord;
    ItSrc, ItRes: IMatrixIterator;
    vVal: Variant;
    ValiDExecKey: Integer;
    ValiRun: IValidationExecRun;
    ValiData: IValidationExecData;
    Sel: IDimSelectionSet;
    Revi: IRubricatorRevision;
    bByScenario: Boolean;
Begin
    mb := MetabaseClass.Active;
    Inst := mb.ItemById("FC_COMM").Open(NullAs IRubricatorInstance;
    ValiDExecKey := 80;
    ValiData := Inst.GetValidationExecData(ValiDExecKey, DictionaryGetDataOptions.None);
    bByScenario := ValiData.ByScenario;
    Sel := Null;
    ValiRun := Inst.LoadValidationRun(ValiData, New ValidationExecSelection.CreateSelection(Sel));
    Mat := ValiRun.Matrix;
    MatCop := ((New MatrixFactory.Create) As IMatrixFactory).CreateMatrix(Mat.Dimensions);
    MatCop.OperationMatrix(MatrixOperation.Append, Mat);
    Mat.Clear;
    Mat.ValueFlag := 1;
    ItSrc := MatCop.CreateIterator;
    CooSrc := MatCop.CreateCoord;
    ItRes := Mat.CreateIterator;
    CooRes := Mat.CreateCoord;
    ItSrc.Move(IteratorDirection.First);
    While ItSrc.Valid Do
        ItSrc.PutCurrentPos(CooSrc);
        CooRes.Assign(CooSrc);
        ItRes.PutCoord(CooRes);
        ItRes.ValueFlag := 0;
            vVal := ItSrc.Value;
            If Not vVal.IsEmpty Then
                ItRes.Value := (vVal As Double) = 0.0 ? 0 : 1;
            End If;
            ItRes.ValueFlag := 1;
        ItSrc.Move(IteratorDirection.Next);
    End While;
    ValiData := Inst.GetValidationExecData(-1, DictionaryGetDataOptions.Create);
    ValiData.Name := (Inst As IMetabaseObjectInstance).Object.Name;
    ValiData.ByScenario := bByScenario;
    ArrVali[0] := 3668;
    ArrVali[1] := 3677;
    ValiData.Validations := ArrVali;
    (ValiData As IRubricatorRecord).Save;
    ValiDExecKey := ValiData.Key;
    ValiRun.EphemeralFacts := False;
    Debug.WriteLine("Признак расчета в измерении сценариев: " + ValiRun.ByScenario.ToString);
    Revi := Inst.OpenRevision("Validation");
    ValiRun.Revision := Revi;
    Inst.SaveValidationRun(ValiRun, ValiData);
End Sub UserProc;

После выполнения примера загружаются данные по валидации с ключом «80», у которой установлен признак расчета по сценариям. Затем эти данные сохраняются в новый расчет валидации также в измерении по сценариям.

Пример Fore.NET

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

Imports Prognoz.Platform.Interop.Matrix;
Imports Prognoz.Platform.Interop.Cubes;
Imports Prognoz.Platform.Interop.Dimensions;
Imports Prognoz.Platform.Interop.Rds;
Imports Prognoz.Platform.Interop.ForeSystem;


Public Shared Sub Main(Params: StartParams);
Var
    mb: IMetabase;
    Inst: IRubricatorInstance;
    ArrVali: Array[0..1Of Integer;
    MatCop, Mat: IMatrix;
    CooSrc, CooRes: IMatrixCoord;
    ItSrc, ItRes: IMatrixIterator;
    vVal: object;
    ValiDExecKey: uinteger;
    ValiRun: IValidationExecRun;
    ValiData: IValidationExecData;
    Sel: IDimSelectionSet;
    Revi: IRubricatorRevision;
    bByScenario: Boolean;
    ExecSel: ValidationExecSelection;
Begin
    mb := Params.Metabase;
    Inst := mb.ItemById["FC_COMM"].Open(NullAs IRubricatorInstance;
    ValiDExecKey := 21;
    ValiData := Inst.GetValidationExecData(ValiDExecKey, DictionaryGetDataOptions.dgdoNone);
    bByScenario := ValiData.ByScenario;
    Sel := Null;
    ExecSel := New ValidationExecSelectionClass.Create();
    ExecSel.CreateSelection(Sel);
    ValiRun := Inst.LoadValidationRun(ValiData, ExecSel);
    Mat := ValiRun.Matrix;
    MatCop := ((New MatrixFactory.Create()) As IMatrixFactory).CreateMatrix(Mat.Dimensions);
    MatCop.OperationMatrix(MatrixOperation.moAppend, Mat);
    Mat.Clear();
    Mat.ValueFlag := 1;
    ItSrc := MatCop.CreateIterator();
    CooSrc := MatCop.CreateCoord();
    ItRes := Mat.CreateIterator();
    CooRes := Mat.CreateCoord();
    ItSrc.Move(IteratorDirection.itdFirst);
    While ItSrc.Valid Do
        ItSrc.PutCurrentPos(CooSrc);
        CooRes.Assign(CooSrc);
        ItRes.PutCoord(CooRes);
        ItRes.ValueFlag := 0;
            vVal := ItSrc.Value;
            If Not (vVal = NullThen
                ItRes.Value := (vVal As Double) = 0.0 ? 0 : 1;
            End If;
            ItRes.ValueFlag := 1;
        ItSrc.Move(IteratorDirection.itdNext);
    End While;
    ValiData := Inst.GetValidationExecData(-1 As uinteger, DictionaryGetDataOptions.dgdoCreate);
    ValiData.Name := (Inst As IMetabaseObjectInstance).Object.Name;
    ValiData.ByScenario := bByScenario;
    ArrVali[0] := 3668;
    ArrVali[1] := 3677;
    ValiData.Validations := ArrVali;
    (ValiData As IRubricatorRecord).Save();
    ValiDExecKey := ValiData.Key;
    ValiRun.EphemeralFacts := False;
    System.Diagnostics.Debug.WriteLine("Признак расчета в измерении сценариев: " + ValiRun.ByScenario.ToString());
    Revi := Inst.OpenRevision("Validation");
    ValiRun.Revision := Revi;
    Inst.SaveValidationRun(ValiRun, ValiData);
End Sub;

См. также:

IValidationExecData