ParamProvider: IMsParamProvider;
The ParamProvider property returns an object used to work with validation rule group parameters and their values.
By default, validation rule group does not contain parameters.
Executing the example requires a form containing the WorkbookDocumentViewerBox component with the WorkbookDocumentViewerBox1 identifier and the UiErAnalayzer component with the UiErAnalyzer1 identifier. UiErAnalyzer1 is a data source for WorkbookDocumentViewerBox1 and contains a loaded workbook of the time series database with the TSDB identifier. Time series database parameters:
The mandatory time series attribute with the CITY identifier referring to the dictionary.
Validation rule group with the VALIDATION_GROUP identifier.
Add links to the Cubes, Dimensions, Metabase, Ms, Rds, Stat system assemblies.
Sub UserProc;
Var
mb: IMetabase;
FCObj: IMetabaseObject;
FC: IRubricator;
Atts: IMetaAttributes;
LinkedDict: IMetabaseObjectDescriptor;
ValidObj: IMetabaseObject;
ValidFilterGroup: IValidationGroup;
ParamProvider: IMsParamProvider;
Params: IMsModelParams;
FilterParam: IMsModelParam;
Filters: IValidationFilters;
i: Integer;
ExecSett: IValidationExecuteSettings;
Analyzer: IEaxAnalyzer;
ParamVals: IMsModelParamValues;
pDimInstance: IDimInstance;
DimSelect: IDimSelection;
ExecRun: IValidationExecRun;
DiagRep: IDiagnosticReport;
Begin
mb := MetabaseClass.Active;
FCObj := mb.ItemById("TSDB").Bind;
FC := FCObj As IRubricator;
//Get a dictionary to which the "CITY" attribute refers
Atts := FC.GetDictionary(RubricatorDictionary.Facts).Attributes;
LinkedDict := Atts.FindById("CITY").ValuesObject;
//Get validation rule group
ValidObj := Mb.ItemByIdNamespace("VALIDATION_GROUP", FCObj.Key).Edit;
ValidFilterGroup := ValidObj As IValidationGroup;
// Set threshold value for rule group exceptions
ValidFilterGroup.ExceptionsLimit := 500000;
// Get validation rule group parameters
Analyzer := UiErAnalyzer1.ErAnalyzer;
ValidFilterGroup.ParamProvider := Analyzer.ParamProvider As IMsParamProvider;
ParamProvider := ValidFilterGroup.ParamProvider;
Params := ParamProvider.Params;
Params.Clear;
// Create a parameter for validation rule group
FilterParam := Params.Add;
FilterParam.Id := "FILTER_CITY";
FilterParam.Name := "Cities for filtering block";
FilterParam.LinkedObject := LinkedDict;
FilterParam.ParamType := TsParamType.Selection;
// Save validation rule group
ValidObj.Save;
// Set execution parameters of the group of rules
ExecSett := ValidFilterGroup.CreateExecuteSettings;
ExecSett.Laner := Analyzer.Laner;
pDimInstance := LinkedDict.Open(Null) As IDimInstance;
// Create selection for element filtering
DimSelect := pDimInstance.CreateSelection;
DimSelect.DeselectAll;
DimSelect.SelectElement(0, False);
DimSelect.SelectElement(1, False);
DimSelect.SelectElement(2, False);
// Set parameter values
ParamVals := ExecSett.ParamValues;
ParamVals.FindById("FILTER_CITY").Value := DimSelect.ToVariant;
ExecRun := ValidFilterGroup.Execute(ExecSett);
DiagRep := New DiagnosticReport.Create;
DiagRep.Run := ExecRun;
DiagRep.EaxAnalyzer := Analyzer;
End Sub UserProc;
After executing the example a parameter is set for the VALIDATION_GROUP rule group. A group of rules is executed for the workbook displayed in LanerBox1.
See also: