FieldsOnly: IStringList
FieldsOnly: System.Collections.Generic.IList
Свойство FieldsOnly определяет список полей/атрибутов для обновления.
По умолчанию свойство не задано, при установке обновления выполняется обновление всех полей таблицы/атрибутов справочника. Способ обновления данных определяется свойством IMetabaseUpdateDataObjectNode.BatchMode.
Для обновления отдельных полей/атрибутов укажите их идентификаторы в свойстве FieldsOnly. Заданные поля/атрибуты будут обновлены при установке обновления для всех записей таблицы/элементов справочника в соответствии с выбранным способом обновления данных объекта.
Для обновления отдельных записей/элементов используйте свойство IMetabaseUpdateDataObjectNode.PrimaryKeysOnly.
Совет. Если в таблицу/справочник были добавлены новые записи/элементы, необходимо обновить все поля/атрибуты. При обновлении всех полей/атрибутов данных из обновления будет достаточно для заполнения обязательных полей/атрибутов в обновляемом репозитории.
Для выполнения примера предполагается наличие репозитория НСИ с идентификатором «REP_NSI», расположенного в нём справочника НСИ с идентификатором «DICT_1». В справочнике НСИ предполагается наличие обычных атрибутов «ATTR4», «ATTR5», элементов справочника с ключами «1», «2».
Добавьте ссылки на системные сборки:
для примера на Fore: Metabase, Collections;
для примера на Fore.NET: Metabase.
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(1, Null);
Node.PrimaryKeysOnly.Add(2, Null);
//Определение
полного пути и имени файла, в который будет сохранено
обновление
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(1, Null);
Node.PrimaryKeysOnly.Add(2, Null);
//Определение полного пути и имени файла, в который будет сохранено обновление.
MUpdate.SaveToFileNF("C:\Dict_1.pefx");
End Sub;
После выполнения примера будет создано новое обновление. Файл обновления будет расположен в указанной директории. В обновление будут включены атрибуты «ATTR4», «ATTR5» элементов с ключами «1», «2» справочника НСИ "DICT_1". При установке обновления будут обновлены только атрибуты «ATTR4», «ATTR5» элементов справочника с ключами «1», «2». Остальные атрибуты и элементы обновлены не будут.
См. также: