IRdsParamsControl.ParamAttribute

Синтаксис Fore

ParamAttribute(Param: IRdsParam): IRdsAttribute;

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

ParamAttribute[Prognoz.Platform.Interop.Rds.IRdsParam]: Prognoz.Platform.Interop.Rds.IRdsAttribute;

Параметры

Param. Параметр связанного справочника, для которого необходимо определить привязку.

Описание

Свойство ParamAttribute определяет привязку параметра связываемого справочника с атрибутом текущего справочника, через значения которого будет осуществляться управление.

Пример Fore

Для выполнения примера предполагается наличие репозитория НСИ - «NSI_1», содержащего справочники НСИ с идентификаторами «Dict_1» и «Dict_2». У второго справочника имеется один параметр. Также следует подключить системные сборки Metabase, Dal и Rds.

Sub Macro;
Var
    MB: IMetabase;
    MObj: IMetabaseObject;
    Dict, Dict2: IRdsDictionary;
    Attrs: IRdsAttributes;
    LinkAttr, ParamAttr: IRdsAttribute;
    Link: IRdsLink;
    Param: IRdsParam;
    ParamsControl: IRdsParamsControl;
Begin
    MB := MetabaseClass.Active;
    MObj := MB.ItemByIdNamespace(
"Dict_1", MB.ItemById("NSI_1").Key).Edit;
    Dict := MObj 
As IRdsDictionary;
    Dict2 := MB.ItemByIdNamespace(
"Dict_2", MB.ItemById("NSI_1").Key).Bind As IRdsDictionary;
    
//Атрибуты первого справочника
    Attrs := Dict.Attributes;
    
//Атрибут для связи со справочником
    LinkAttr := Attrs.Add;
    LinkAttr.DataType := DbDataType.Integer;
    LinkAttr.Id := 
"LinkAttr";
    LinkAttr.Name := 
"Атрибут для связи";
    
//Связь с параметрическим справочником
    Link := Dict.Links.Add;
    Link.Attribute := LinkAttr;
    Link.Reference := Dict2.Attributes.Key;
    Link.Id := 
"Link";
    Link.Name := 
"Связь со справочником Dict_2";
    
//Параметр, которым необходимо управлять
    Param := Link.Reference.Dictionary.Params.Item(0);
    
//Атрибут для связи со справочником
    ParamAttr := Attrs.Add;
    ParamAttr.DataType := Param.Attribute.DataType;
    ParamAttr.Id := 
"ParamAttr";
    ParamAttr.Name := 
"Управление параметром";
    
//Привязка атрибута к параметру второго справочника
    ParamsControl := Link.ParamsControl;
    ParamsControl.ParamAttribute(Dict2.Params.Item(
0)) := ParamAttr;
    MObj.Save;
End Sub Macro;

После выполнения примера в первом справочнике будут созданы два атрибута: первый используемый для связи со справочником «Dict_2»; второй - для управления значениями параметра справочника «Dict_2». Между справочниками «Dict_1» и «Dict_2» будет настроена связь по атрибуту «Key», для управления значениями параметра связываемого справочника «Dict_2» будет использоваться атрибут «ParamAttr».

Пример Fore.NET

Для выполнения примера предполагается наличие репозитория НСИ - «NSI_1», содержащего справочники НСИ с идентификаторами «Dict_1» и «Dict_2». У второго справочника имеется один параметр. Также следует подключить системные сборки Dal и Rds.

Imports Prognoz.Platform.Interop.Dal;
Imports Prognoz.Platform.Interop.Rds;

...

Public Shared Sub Macro(Params: StartParams);
Var
    MB: IMetabase;
    MObj: IMetabaseObject;
    Dict, Dict2: IRdsDictionary;
    Attrs: IRdsAttributes;
    LinkAttr, ParamAttr: IRdsAttribute;
    Link: IRdsLink;
    Param: IRdsParam;
    ParamsControl: IRdsParamsControl;
Begin
    MB := Params.Metabase;
    MObj := MB.ItemByIdNamespace[
"Dict_1", MB.ItemById["NSI_1"].Key].Edit();
    Dict := MObj 
As IRdsDictionary;
    Dict2 := MB.ItemByIdNamespace[
"Dict_2", MB.ItemById["NSI_1"].Key].Bind() As IRdsDictionary;
    
//Атрибуты первого справочника
    Attrs := Dict.Attributes;
    
//Атрибут для связи со справочником
    LinkAttr := Attrs.Add();
    LinkAttr.DataType := DbDataType.ddtInteger;
    LinkAttr.Id := 
"LinkAttr";
    LinkAttr.Name := 
"Атрибут для связи";
    
//Связь с параметрическим справочником
    Link := Dict.Links.Add();
    Link.Attribute := LinkAttr;
    Link.Reference := Dict2.Attributes.Key;
    Link.Id := 
"Link";
    Link.Name := 
"Связь со справочником Dict_2";
    
//Параметр, которым необходимо управлять
    Param := Link.Reference.Dictionary.Params.Item[0];
    
//Атрибут для связи со справочником
    ParamAttr := Attrs.Add();
    ParamAttr.DataType := Param.Attribute.DataType;
    ParamAttr.Id := 
"ParamAttr";
    ParamAttr.Name := 
"Управление параметром";
    
//Привязка атрибута к параметру второго справочника
    ParamsControl := Link.ParamsControl;
    ParamsControl.ParamAttribute[Dict2.Params.Item[
0]] := ParamAttr;
    MObj.Save();
End Sub;

После выполнения примера в первом справочнике будут созданы два атрибута: первый используемый для связи со справочником «Dict_2»; второй - для управления значениями параметра справочника «Dict_2». Между справочниками «Dict_1» и «Dict_2» будет настроена связь по атрибуту «Key», для управления значениями параметра связываемого справочника «Dict_2» будет использоваться атрибут «ParamAttr».

См. также:

IRdsParamsControl