FindByKey(ParamKey: Integer): IMetabaseObjectParamControl;
FindByKey(ParamKey: UInteger): Prognoz.Platform.Interop.Metabase.IMetabaseObjectParamControl;
ParamKey. Ключ параметра вложенного объекта.
Метод FindByKey осуществляет поиск и возвращает привязку параметра вложенного объекта к параметрам текущего объекта.
Каждый объект имеет собственный диапазон ключей для параметров. Ключи начинаются с единицы.
Если во вложенном объекте отсутствует параметр с указанным ключом, то метод возвращает значение Null.
Для выполнения примера предполагается наличие в репозитории куба с идентификатором «STD_CUBE». Данный куб имеет в своей структуре измерение, которое построено на параметрическом справочнике «COUNTRY». Справочник имеет не менее двух параметров. В кубе создан один параметр. Добавьте ссылку на системную сборку Metabase.
Sub UserProc;
Var
MB: IMetabase;
MObj: IMetabaseObject;
Params: IMetabaseObjectParams;
ControlInfo: IMetabaseObjectControlInfo;
Control: IMetabaseObjectControl;
Param: IMetabaseObjectParamControl;
Begin
MB := MetabaseClass.Active;
MObj := Mb.ItemById("STD_CUBE").Edit;
//Параметры самого куба
Params := MObj.Params;
ControlInfo := Params.ControlInfo;
Control := ControlInfo.FindByKey(MB.GetObjectKeyById("COUNTRY"));
//Привязка параметров вложенного объекта
Param := Control.FindByKey(1);
Param.Expression.AsString := "2000";
Param := Control.FindByKey(2);
Param.Expression.AsString := ':' + Params.FindByKey(1).Id + "+2000";
MObj.Save;
End Sub UserProc;
При выполнении примера будет осуществлена настройка управления параметрами для указанного справочника: в качестве значения первого параметра будет передаваться фиксированное значение; значение второго параметра будет вычисляться по формуле и зависеть от указываемого значения параметра куба.
Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore.
Imports Prognoz.Platform.Interop.Metabase;
Public Shared Sub Main(Params: StartParams);
Var
MB: IMetabase;
MObj: IMetabaseObject;
ObjParams: IMetabaseObjectParams;
ControlInfo: IMetabaseObjectControlInfo;
Control: IMetabaseObjectControl;
Param: IMetabaseObjectParamControl;
Begin
MB := Params.Metabase;
MObj := Mb.ItemById["STD_CUBE"].Edit();
//Параметры самого куба
ObjParams := MObj.Params;
ControlInfo := ObjParams.ControlInfo;
Control := ControlInfo.FindByKey(MB.GetObjectKeyById("COUNTRY"));
//Привязка параметров вложенного объекта
Param := Control.FindByKey(1);
Param.Expression.AsString := "2000";
Param := Control.FindByKey(2);
Param.Expression.AsString := ':' + ObjParams.FindByKey(1).Id + "+2000";
MObj.Save();
End Sub;
См. также: