IMetabaseObjectControl.FindByKey

Синтаксис Fore

FindByKey(ParamKey: Integer): IMetabaseObjectParamControl;

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

FindByKey(ParamKey: UInteger): Prognoz.Platform.Interop.Metabase.IMetabaseObjectParamControl;

Параметры

ParamKey. Ключ параметра вложенного объекта.

Описание

Метод FindByKey осуществляет поиск и возвращает привязку параметра вложенного объекта к параметрам текущего объекта.

Комментарии

Каждый объект имеет собственный диапазон ключей для параметров. Ключи начинаются с единицы.

Если во вложенном объекте отсутствует параметр с указанным ключом, то метод возвращает значение Null.

Пример Fore

Для выполнения примера предполагается наличие в репозитории куба с идентификатором «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.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;

См. также:

IMetabaseObjectControl