PeriodControlStart: IAlgorithmPeriodControl;
Свойство PeriodControlStart возвращает настройки даты начала расчёта.
Для выполнения примера предполагается наличие в репозитории алгоритма расчёта с идентификатором ALGORITHM. В алгоритме расчёта должно быть добавлено не менее двух параметров. К первому параметру привязан календарный справочник, в котором содержится атрибут с идентификатором START_DATE.
Добавьте ссылки на системные сборки: Algo, Dimensions, Metabase, Ms. Также добавьте ссылки на сборки, которые необходимы для работы с алгоритмами расчёта.
Sub UserProc;
Var
MB: IMetabase;
MObj, Dim: IMetabaseObjectDescriptor;
Algo: ICalcObject;
CalcAlgo: ICalcAlgorithm;
Settings: IAlgorithmSettings;
Start: IAlgorithmPeriodControl;
Ms: IMsProblem;
MetaModel: IMsMetaModel;
Params: IMsModelParams;
ParamValues: IAlgorithmParameterValues;
DimInst: IDimInstance;
DimAttr: IDimAttributeInstance;
ValueList: IAlgorithmParamValueList;
Begin
MB := MetabaseClass.Active;
// Получим алгоритм расчёта
MObj := MB.ItemById("ALGORITHM");
Algo := CalcObjectFactory.CreateCalcObject(MObj, True);
CalcAlgo := Algo As ICalcAlgorithm;
// Получим настройки периода расчёта алгоритма
Settings := CalcAlgo.Settings;
// Получим настройки даты начала расчёта
Start := Settings.PeriodControlStart;
// Зададим первый параметр алгоритма расчёта в качестве даты начала расчёта
Ms := CalcAlgo.MsProblem;
MetaModel := Ms.MetaModel;
Params := MetaModel.Params;
Start.Parameter := Params.Item(0);
// Получим коллекцию параметров алгоритма расчёта
ParamValues := CalcAlgo.ParamValues;
ValueList := ParamValues.Values;
// Получим справочник первого параметра
Dim := ValueList.Item(0).LinkedObject;
DimInst := Dim.Open(Null) As IDimInstance;
// Найдем атрибут с идентификатором «START_DATE»
DimAttr := DimInst.Attributes.FindById("START_DATE");
// Зададим полученный атрибут справочника
Start.Attribute := DimAttr.Attribute;
// Зададим уровень календаря
Start.OffsetLevel := DimCalendarLevel.Day;
// Зададим смещение даты начала расчёта
Start.OffsetValue := 2;
// Включим отображение даты начала расчёта на панели параметров
Start.Visible := True;
// Выполним проверку на наличие изменений в настройках периода расчёта
If Settings.IsDirty Then
// Сохраним изменения в алгоритме расчёта
CalcAlgo.SaveObject;
End If;
End Sub UserProc;
В результате выполнения примера будут заданы параметры даты начала расчёта алгоритма:
Заданная дата начала расчёта алгоритма будет отображаться на панели параметров.
См. также: