IRdsImportSchemaAttribute.DetailTable

Синтаксис Fore

DetailTable: String;

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

DetailTable: String;

Описание

Свойство DetailTable определяет физическое имя таблицы, содержащей записи для множественных значений атрибута справочника.

Комментарии

Свойство является обязательным. Также для корректного импорта необходимо задать свойство IRdsImportSchemaAttribute.DetailTableObject.

Пример Fore

Для выполнения примера в репозитории предполагается наличие таблиц с идентификаторами «TABLE_EXP», «TABLE_EXP_VALUE» и репозитория НСИ с идентификатором «MDM_REPO», содержащий справочник НСИ с идентификатором «MDM_DICTIONARY». Данные объекты должны использовать одну БД и соответствовать следующим требованиям:

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

Sub UserImport;
Var
    MB: IMetabase;
    MObj: IMetabaseObject;
    Dict: IRdsDictionary;
    Import: IRdsImportSchemas;
    SchemaImport: IRdsImportSchema;
    Attrs: IRdsAttributes;
    TableObj: IMetabaseObjectDescriptor;
    Table: ITable;
    SchemaImportAttr: IRdsImportSchemaAttribute;
    DictInst: IRdsDictionaryInstance;
Begin
    MB := MetabaseClass.Active;
    // Получаем справочник НСИ
    MObj := MB.ItemByIdNamespace("MDM_DICTIONARY_IMPORT", MB.ItemById("MDM_REPO").Key).Edit;
    Dict := MObj As IRdsDictionary;
    // Получаем атрибуты справочника НСИ
    Attrs := Dict.Attributes;
    // Создаем новую схему импорта
    Import := Dict.ImportSchemas;
    SchemaImport := Import.Add;
    SchemaImport.Id := "IMPORT_SCHEME";
    SchemaImport.Name := "Схема импорта №1";
    // Задаем привязку системных атрибутов справочника НСИ
    SchemaImport.Mappings(Attrs.Key).FieldName := "KEY";
    SchemaImport.Mappings(Attrs.Name).FieldName := "NAME";
    SchemaImport.Mappings(Attrs.Order).FieldName := "ORD";
    SchemaImport.Mappings(Attrs.ParentKey).FieldName := "PARENT_KEY";
    // Получаем таблицу «TABLE_EXP»
    TableObj := MB.ItemById("TABLE_EXP");
    Table := TableObj.Bind As ITable;
    // Указываем, что импорт значений системных атрибутов
    // будет выполняться из таблицы «TABLE_EXP»
    SchemaImport.TableObject := TableObj;
    SchemaImport.TableName := Table.NativeName;
    // Задаем привязку атрибута, который может принимать множественные значения
    SchemaImportAttr := SchemaImport.Mappings(Attrs.FindById("ATTRIBUTE"));
    //Получаем таблицу «TABLE_EXP_VALUE»
    TableObj := MB.ItemById("TABLE_EXP_VALUE");
    // Указываем, что импорт множественных значений атрибута
    // будет выполняться из таблицы «TABLE_EXP_VALUE»
    Table := TableObj.Bind As ITable;
    SchemaImportAttr.DetailTable := Table.NativeName;
    SchemaImportAttr.DetailTableObject := TableObj;
    // Задаем параметры импорта множественных значений атрибута
    SchemaImportAttr.Attribute.Hidden := False;
    SchemaImportAttr.FieldName := "KEY_EXP";
    SchemaImportAttr.KeyField := "KEYFIELD";
    SchemaImportAttr.ValueField := "VALUEFIELD";
    SchemaImportAttr.OrderField := "ORDERFIELD";
    // Сохраняем схему импорта
    MObj.Save;
    // Выполняем импорт
    DictInst := Dict.Open(Null);
    DictInst.ImportData(SchemaImport);
End Sub UserImport;

После выполнения примера в справочнике НСИ будет создана новая схема импорта. Значения атрибутов справочника «MDM_DICTIONARY» импортируются из одноименных полей таблицы «TABLE_EXP». Множественные значения атрибута «ATTRIBUTE» импортируются из таблицы «TABLE_EXP_VALUE». Импорт будет выполнен.

Пример Fore.NET

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

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

Public Shared Sub Main(Params: StartParams);
Var
    MB: IMetabase;
    MObj: IMetabaseObject;
    Dict: IRdsDictionary;
    Import: IRdsImportSchemas;
    SchemaImport: IRdsImportSchema;
    Attrs: IRdsAttributes;
    TableObj: IMetabaseObjectDescriptor;
    Table: ITable;
    SchemaImportAttr: IRdsImportSchemaAttribute;
    DictInst: IRdsDictionaryInstance;
Begin
    MB := Params.Metabase;
    
// Получаем справочник НСИ
    MObj := MB.ItemByIdNamespace["MDM_DICTIONARY_IMPORT", MB.ItemById["MDM_REPO"].Key].Edit();
    Dict := MObj 
As IRdsDictionary;
    
// Получаем атрибуты справочника НСИ
    Attrs := Dict.Attributes;
    
// Создаем новую схему импорта
    Import := Dict.ImportSchemas;
    SchemaImport := Import.Add();
    SchemaImport.Id := 
"IMPORT_SCHEME";
    SchemaImport.Name := 
"Схема импорта №1";
    
// Задаем привязку системных атрибутов справочника НСИ
    SchemaImport.Mappings[Attrs.Key].FieldName := "KEY";
    SchemaImport.Mappings[Attrs.Name].FieldName := 
"NAME";
    SchemaImport.Mappings[Attrs.Order].FieldName := 
"ORD";
    SchemaImport.Mappings[Attrs.ParentKey].FieldName := 
"PARENT_KEY";
    
// Получаем таблицу «TABLE_EXP»
    TableObj := MB.ItemById["TABLE_EXP"];
    Table := TableObj.Bind() 
As ITable;
    
// Указываем, что импорт значений системных атрибутов
    // будет выполняться из таблицы «TABLE_EXP»
    SchemaImport.TableObject := TableObj;
    SchemaImport.TableName := Table.NativeName;
    
// Задаем привязку атрибута, который может принимать множественные значения
    SchemaImportAttr := SchemaImport.Mappings[Attrs.FindById("ATTRIBUTE")];
    
//Получаем таблицу «TABLE_EXP_VALUE»
    TableObj := MB.ItemById["TABLE_EXP_VALUE"];
    
// Указываем, что импорт множественных значений атрибута
    // будет выполняться из таблицы «TABLE_EXP_VALUE»   
    Table := TableObj.Bind() As ITable;
    SchemaImportAttr.DetailTable := Table.NativeName;
    SchemaImportAttr.DetailTableObject := TableObj;
    
// Задаем параметры импорта множественных значений атрибута
    SchemaImportAttr.Attribute.Hidden := False;
    SchemaImportAttr.FieldName := 
"KEY_EXP";
    SchemaImportAttr.KeyField := 
"KEYFIELD";
    SchemaImportAttr.ValueField := 
"VALUEFIELD";
    SchemaImportAttr.OrderField := 
"ORDERFIELD";
    
// Сохраняем схему импорта
    MObj.Save();
    
// Выполняем импорт
    DictInst := Dict.Open(Null);
    DictInst.ImportData(SchemaImport);
End Sub;

См. также:

IRdsImportSchemaAttribute