IRdsLoaderBindings.Add

Синтаксис Fore

Add(BindingType: RdsLoaderBindingType): IRdsBaseBinding;

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

Add(BindingType: Prognoz.Platform.Interop.Rds.RdsLoaderBindingType): Prognoz.Platform.Interop.Rds.IRdsBaseBinding;

Параметры

BindingType. Тип создаваемой привязки.

Описание

Метод Add создает привязку с заданным типом.

Комментарии

В соответствии с указанным типом в созданной привязке необходимо будет указать соответствующий атрибут справочника. Также привязку можно будет привести к необходимому типу и задать специфические свойства. Доступны следующие типы привязок:

Пример Fore

Для выполнения примера в репозитории предполагается наличие следующих объектов:

Добавьте ссылки на системные сборки: Dal, Db, Metabase, Rds.

Описание требуемой структуры и данных для используемых объектов:

Таблица «T_DICTIONARY»

Таблица «T_ATTRVALUES»

Табличный справочник НСИ «DICT_LINKED»

Sub UserProc;
Var
    MB: IMetabase;
    CrInfo: IMetabaseObjectCreateInfo;
    LinkDictionary: IRdsDictionary;
    RdsLoader: IMetaRdsLoader;
    Bindings: IRdsLoaderBindings;
    PredBinding: IRdsPredefinedBinding;
    LinkBinding: IRdsLinkedBinding;
    ImportBinding: IRdsImportedBinding;
    MultiValueBinding: IRdsBaseBinding;
Begin

    // Получаем текущий репозиторий
    MB := MetabaseClass.Active;
    // Получаем справочник, с которым будет создана связь
    LinkDictionary := MB.ItemByIdNamespace("DICT_LINKED", MB.GetObjectKeyById("MDM")).Bind As IRdsDictionary;
    // Создаем объект для создания табличного справочника НСИ и загрузки в него данных
    RdsLoader := New MetaRdsLoader.Create;
    // Указываем таблицу, из которой будут загружены данные
    RdsLoader.TableSource := MB.ItemById("T_DICTIONARY").Bind As ITable;
    // Получаем привязки полей таблицы-источника и создаваемого табличного справочника НСИ
    Bindings := RdsLoader.Bindings;

    // Задаем привязки обязательных системных атрибутов табличного справочника НСИ
    Bindings.KeyBinding.Field := "KEY";
    Bindings.NameBinding.Field := "NAME";
    Bindings.OrderBinding.Field := "ORD";
    // Задаем привязку для атрибута «Владелец» в табличном справочнике НСИ
    PredBinding := Bindings.Add(RdsLoaderBindingType.Predefined) As IRdsPredefinedBinding;
    PredBinding.PredefinedType := RdsPredefinedAttribute.ParentKey;
    PredBinding.Field := "PARENT";
    // Задаем привязку для атрибута, который будет использоваться для связи с другим справочником
    LinkBinding := Bindings.Add(RdsLoaderBindingType.Linked) As IRdsLinkedBinding;

    // Задаем наименование и идентификатор атрибута
    LinkBinding.Id := "FORLINK";
    LinkBinding.Name := "Для связи";
    // Указываем, что связь будет создана по ключу
    LinkBinding.Reference := LinkDictionary.Attributes.Key;
    // Указываем поле в таблице-источнике, которое содержит значения для данного атрибута
    LinkBinding.Field := "FORLINK";
    // Создаем заимствованный атрибут из связанного справочника
    ImportBinding := Bindings.Add(RdsLoaderBindingType.Imported) As IRdsImportedBinding;
    // Задаем наименование и идентификатор атрибута
    ImportBinding.Id := "NAME_LINKEDDICT";
    ImportBinding.Name := "Столица";
    // Указываем привязку, в которой описан атрибут, используемый для связи с другим справочником
    ImportBinding.LinkBinding := LinkBinding;
    // Указываем, что заимствованный атрибут будет отображать
    // наименования элементов из связанного справочника
    ImportBinding.Lookup := LinkBinding.Dictionary.Attributes.Name;
    // Задаем привязку для атрибута со множественными значениями
    MultiValueBinding := Bindings.Add(RdsLoaderBindingType.UserAttribute);
    // Задаем наименование и идентификатор атрибута
    MultiValueBinding.Id := "MULTIATTR";
    MultiValueBinding.Name := "Официальные языки";
    // Указываем поле в таблице-источнике, которое содержит значения для данного атрибута
    MultiValueBinding.Field := "MULTIATTR";
    // Задаем тип данных атрибута
    MultiValueBinding.DataType := DbDataType.String;
    // Указываем, что атрибут может иметь множественные значения
    MultiValueBinding.HasMultipleValues := True;
    // Указываем таблицу, в которой хранятся множественные значения
    MultiValueBinding.DetailTableObject := MB.ItemById("T_ATTRVALUES");
    // Задаем используемые поля с данными из таблицы, в которой хранятся множественные значения
    MultiValueBinding.KeyField := "KEY";
    MultiValueBinding.OrderField := "ORDER";
    MultiValueBinding.ValueField := "VALUE";

    // Указываем, что множественный атрибут может содержать пустые значения
    MultiValueBinding.Nullable := True;
    // Задаем информацию о создаваемом справочнике
    CrInfo := MB.CreateCreateInfo;
    CrInfo.Parent := MB.ItemById("MDM");
    CrInfo.Id := MB.GenerateId("Dict", CrInfo.Parent.Key);
    // Создаем и сохраняем справочник
    (RdsLoader.CreateObject(CrInfo) As IMetabaseObject).Save;
    // Выполняем загрузку данных
    RdsLoader.Load(UpdateLoadMode.Insert);
End Sub UserProc;

В результате выполнения примера будет настроен объект, используемый для создания табличных справочников НСИ и загрузки в них данных. В настройках объекта будет указан источник данных и созданы привязки для различных типов атрибутов. После этого будет создан справочник стран и в него будут загружены данные о столицах и используемых государственных языках.

Пример Fore.NET

Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore.

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

Public Shared Sub Main(Params: StartParams);
Var
    MB: IMetabase;
    CrInfo: IMetabaseObjectCreateInfo;
    LinkDictionary: IRdsDictionary;
    RdsLoader: IMetaRdsLoader;
    Bindings: IRdsLoaderBindings;
    PredBinding: IRdsPredefinedBinding;
    LinkBinding: IRdsLinkedBinding;
    ImportBinding: IRdsImportedBinding;
    MultiValueBinding: IRdsBaseBinding;
Begin

    // Получаем текущий репозиторий
    MB := Params.Metabase;
    // Получаем справочник, с которым будет создана связь
    LinkDictionary := MB.ItemByIdNamespace["DICT_LINKED", MB.GetObjectKeyById("MDM")].Bind() As IRdsDictionary;
    // Создаем объект для создания табличного справочника НСИ и загрузки в него данных
    RdsLoader := New MetaRdsLoader.Create();
    // Указываем таблицу, из которой будут загружены данные
    RdsLoader.TableSource := MB.ItemById["T_DICTIONARY"].Bind() As ITable;
    // Получаем привязки полей таблицы-источника и создаваемого табличного справочника НСИ
    Bindings := RdsLoader.Bindings;

    // Задаем привязки обязательных системных атрибутов табличного справочника НСИ
    Bindings.KeyBinding.Field := "KEY";
    Bindings.NameBinding.Field := "NAME";
    Bindings.OrderBinding.Field := "ORD";
    // Задаем привязку для атрибута «Владелец» в табличном справочнике НСИ
    PredBinding := Bindings.Add(RdsLoaderBindingType.rlbtPredefined) As IRdsPredefinedBinding;
    PredBinding.PredefinedType := RdsPredefinedAttribute.rpaParentKey;
    PredBinding.Field := "PARENT";
    // Задаем привязку для атрибута, который будет использоваться для связи с другим справочником
    LinkBinding := Bindings.Add(RdsLoaderBindingType.rlbtLinked) As IRdsLinkedBinding;

    // Задаем наименование и идентификатор атрибута
    LinkBinding.Id := "FORLINK";
    LinkBinding.Name := "Для связи";
    // Указываем, что связь будет создана по ключу
    LinkBinding.Reference := LinkDictionary.Attributes.Key;
    // Указываем поле в таблице-источнике, которое содержит значения для данного атрибута
    LinkBinding.Field := "FORLINK";
    // Создаем заимствованный атрибут из связанного справочника
    ImportBinding := Bindings.Add(RdsLoaderBindingType.rlbtImported) As IRdsImportedBinding;
    // Задаем наименование и идентификатор атрибута
    ImportBinding.Id := "NAME_LINKEDDICT";
    ImportBinding.Name := "Столица";
    // Указываем привязку, в которой описан атрибут, используемый для связи с другим справочником
    ImportBinding.LinkBinding := LinkBinding;
    // Указываем, что заимствованный атрибут будет отображать
    // наименования элементов из связанного справочника
    ImportBinding.Lookup := LinkBinding.Dictionary.Attributes.Name;
    // Задаем привязку для атрибута со множественными значениями
    MultiValueBinding := Bindings.Add(RdsLoaderBindingType.rlbtUserAttribute);

    // Задаем наименование и идентификатор атрибута
    MultiValueBinding.Id := "MULTIATTR";
    MultiValueBinding.Name := "Официальные языки";
    // Указываем поле в таблице-источнике, которое содержит значения для данного атрибута
    MultiValueBinding.Field := "MULTIATTR";
    // Задаем тип данных атрибута
    MultiValueBinding.DataType := DbDataType.ddtString;
    // Указываем, что атрибут может иметь множественные значения
    MultiValueBinding.HasMultipleValues := True;
    // Указываем таблицу, в которой хранятся множественные значения
    MultiValueBinding.DetailTableObject := MB.ItemById["T_ATTRVALUES"];

    // Задаем используемые поля с данными из таблицы, в которой хранятся множественные значения
    MultiValueBinding.KeyField := "KEY";
    MultiValueBinding.OrderField := "ORDER";
    MultiValueBinding.ValueField := "VALUE";
    // Указываем, что множественный атрибут может содержать пустые значения
    MultiValueBinding.Nullable := True;

    // Задаем информацию о создаваемом справочнике
    CrInfo := MB.CreateCreateInfo();
    CrInfo.Parent := MB.ItemById["MDM"];
    CrInfo.Id := MB.GenerateId("Dict", CrInfo.Parent.Key);
    // Создаем и сохраняем справочник
    (RdsLoader.CreateObject(CrInfo) As IMetabaseObject).Save();
    // Выполняем загрузку данных
    RdsLoader.Load(UpdateLoadMode.ulmInsert);
End Sub;

См. также:

IRdsLoaderBindings