PeriodControlEnd: IAlgorithmPeriodControl;
The PeriodControlEnd property returns calculation end date settings.
Executing the example requires that the repository contains a calculation algorithm with the ALGORITHM identifier. The calculation algorithm should contains at least two parameters and have calculation end date set up. The second parameter is linked to calendar dictionary that contains an attribute with the END_DATE identifier.
Add links to the Algo, Cubes, Dimensions, Metabase, Ms system assemblies. Add links to the assemblies required for working with calculation algorithms.
Sub UserProc;
Var
MB: IMetabase;
MObj, Dim: IMetabaseObjectDescriptor;
Algo: ICalcObject;
CalcAlgo: ICalcAlgorithm;
Settings: IAlgorithmSettings;
DataEnd: IAlgorithmPeriodControl;
Ms: IMsProblem;
MetaModel: IMsMetaModel;
Params: IMsModelParams;
ParamValues: IAlgorithmParameterValues;
DimInst: IDimInstance;
DimAttr: IDimAttributeInstance;
ValueList: IAlgorithmParamValueList;
Begin
MB := MetabaseClass.Active;
// Get calculation algorithm
MObj := MB.ItemById("ALGORITHM");
Algo := CalcObjectFactory.CreateCalcObject(MObj, True);
CalcAlgo := Algo As ICalcAlgorithm;
// Get algorithm calculation period settings
Settings := CalcAlgo.Settings;
DataEnd := Settings.PeriodControlEnd;
Debug.WriteLine(DataEnd.IsEnabled);
// Check if configured calculation end date is used
If DataEnd.IsEnabled Then
// Reset specified parameters and set new ones
DataEnd.Reset;
// Set the second parameter of calculation algorithm as a calculation end date
Ms := CalcAlgo.MsProblem;
MetaModel := Ms.MetaModel;
Params := MetaModel.Params;
DataEnd.Parameter := Params.Item(1);
// Get collection of calculation algorithm parameters
ParamValues := CalcAlgo.ParamValues;
ValueList := ParamValues.Values;
// Get dictionary of the second parameter
Dim := ValueList.Item(1).LinkedObject;
DimInst := Dim.Open(Null) As IDimInstance;
// Find attribute with the END_DATE identifier
DimAttr := DimInst.Attributes.FindById("END_DATE");
// Set obtained dictionary attribute
DataEnd.Attribute := DimAttr.Attribute;
// Set calendar level
DataEnd.OffsetLevel := DimCalendarLevel.Day;
// Enable displaying of calculation end date on parameters panel
DataEnd.Visible := True;
// Save changes in calculation algorithm
CalcAlgo.SaveObject;
End If;
End Sub UserProc;
After executing the example, the specified parameters of algorithm calculation end date are reset, and news ones are added:
The specified algorithm calculation end date is displayed on the parameters panel.
See also: