IMetabaseUpdateDataObjectNode.FieldsOnly

Синтаксис

FieldsOnly: IStringList

FieldsOnly: System.Collections.Generic.IList

Описание

Свойство FieldsOnly определяет список полей/атрибутов для обновления.

Комментарии

По умолчанию свойство не задано, при установке обновления выполняется обновление всех полей таблицы/атрибутов справочника. Способ обновления данных определяется свойством IMetabaseUpdateDataObjectNode.BatchMode.

Для обновления отдельных полей/атрибутов укажите их идентификаторы в свойстве FieldsOnly. Заданные поля/атрибуты будут обновлены при установке обновления для всех записей таблицы/элементов справочника в соответствии с выбранным способом обновления данных объекта.

Для обновления отдельных записей/элементов используйте свойство IMetabaseUpdateDataObjectNode.PrimaryKeysOnly.

Совет. Если в таблицу/справочник были добавлены новые записи/элементы, необходимо обновить все поля/атрибуты. При обновлении всех полей/атрибутов данных из обновления будет достаточно для заполнения обязательных полей/атрибутов в обновляемом репозитории.

Пример

Для выполнения примера предполагается наличие репозитория НСИ с идентификатором «REP_NSI», расположенного в нём справочника НСИ с идентификатором «DICT_1». В справочнике НСИ предполагается наличие обычных атрибутов «ATTR4», «ATTR5», элементов справочника с ключами «1», «2».

Добавьте ссылки на системные сборки:

Sub UserProc;
Var
    Mb: IMetabase;
    MUpdate: IMetabaseUpdate;
    RootFolder: IMetabaseUpdateFolderNode;
    Node: IMetabaseUpdateDataObjectNode;
Begin
    
//Определение текущего репозитория
    Mb := MetabaseClass.Active;
    
//Вызов менеджера обновлений для создания нового обновления
    MUpdate := Mb.CreateUpdate;
    
//Создание структуры обновления
    RootFolder := MUpdate.RootFolder;
    Node := RootFolder.Add(MetabaseUpdateNodeType.DataObject) 
As IMetabaseUpdateDataObjectNode;
    //Определение способа обновления объекта 
    Node.BatchMode := ObjectUpdateDataBatchMode.UpdateInsert;
    
//Получение объекта (справочника НСИ), расположенного в объекте-контейнере (репозитории НСИ)
    Node.Object := Mb.ItemByIdNamespace("DICT_1", Mb.ItemById("REP_NSI").Key).Bind;
    
//Определение способа обновления данных объекта 
    Node.UpdatePart := MetabaseObjectUpdatePart.DataMetadata;
    
//Перечисление атрибутов справочника, которые необходимо обновить
    Node.FieldsOnly.Add("ATTR4");
    
Node.FieldsOnly.Add("ATTR5");
    //Перечисление элементов справочника, которые необходимо обновить
    Node.PrimaryKeysOnly.Add(1Null);
    Node.PrimaryKeysOnly.Add(
2Null);
    
//Определение полного пути и имени файла, в который будет сохранено обновление
    MUpdate.SaveToFileNF("C:\Dict_1.pefx");
End Sub UserProc;

Imports System;
Imports Prognoz.Platform.Interop.Metabase;

Public Shared Sub Main(Params: StartParams);
Var
    Mb: IMetabase;
    MUpdate: IMetabaseUpdate;
    RootFolder: IMetabaseUpdateFolderNode;
    Node: IMetabaseUpdateDataObjectNode;
Begin
    
//Определение текущего репозитория
    Mb := Params.Metabase;
    
//Вызов менеджера обновлений для создания нового обновления
    MUpdate := Mb.CreateUpdate();
    
//Создание структуры обновления из одного объекта
    RootFolder := MUpdate.RootFolder;
    Node := RootFolder.Add(MetabaseUpdateNodeType.untDataObject) 
As IMetabaseUpdateDataObjectNode;
    
//Определение способа обновления объекта - данные объекта будут обновлены и дополнены новыми записями
    Node.BatchMode := ObjectUpdateDataBatchMode.obupdabamoUpdateInsert;
    
//Получение объекта (справочника НСИ), расположенного в объекте-контейнере (репозитории НСИ)
    Node.Object := Mb.ItemByIdNamespace["DICT_1", Mb.ItemById["REP_NSI"].Key].Bind();
    
//Определение способа обновления данных объекта - будут обновлены данные и метаданные объекта
    Node.UpdatePart := MetabaseObjectUpdatePart.moupDataMetadata;
    
//Перечисление атрибутов справочника, которые необходимо обновить
    Node.FieldsOnly.Add("ATTR4");
    Node.FieldsOnly.Add(
"ATTR5");
    //Перечисление элементов справочника, которые необходимо обновить
    Node.PrimaryKeysOnly.Add(1Null);
    Node.PrimaryKeysOnly.Add(
2Null);
    
//Определение полного пути и имени файла, в который будет сохранено обновление.
    MUpdate.SaveToFileNF("C:\Dict_1.pefx");
End Sub;

После выполнения примера будет создано новое обновление. Файл обновления будет расположен в указанной директории. В обновление будут включены атрибуты «ATTR4», «ATTR5» элементов с ключами «1», «2» справочника НСИ "DICT_1". При установке обновления будут обновлены только атрибуты «ATTR4», «ATTR5» элементов справочника с ключами «1», «2». Остальные атрибуты и элементы обновлены не будут.

См. также:

IMetabaseUpdateDataObjectNode