Assign(Value: IMetabaseObject);
Assign(Value: Prognoz.Platform.Interop.Metabase.IMetabaseObject);
Value. Объект репозитория, из которого берутся данные.
Метод Assign осуществляет копирование данных из источника, передаваемого посредством параметра Value.
Данный метод нельзя использовать для копирования объектов, имеющих вложенные объекты. Наличие вложенных объектов можно установить, получив значение свойства IMetabaseObjectDescriptor.Children. Вложенными объектами, копирование которых невозможно, являются: факты стандартного и виртуального кубов, задачи и сценарный справочник, экспресс-представления кубов.
При копировании метамодели, содержащей внутренние модели:
будут скопированы все внутренние модели;
ссылки на скопированные внутренние модели будут перенастроены;
будут перенастроены ссылки скопированных внутренних моделей на скопированную метамодель.
Для выполнения примера предполагается наличие в репозитории модуля с идентификатором «Module_1».
Добавьте ссылку на системную сборку Metabase.
Sub UserProc;
Var
MB: IMetabase;
MObj: IMetabaseObject;
CrInfo: IMetabaseObjectCreateInfo;
Begin
MB := MetabaseClass.Active;
CrInfo := MB.CreateCreateInfo;
CrInfo.ClassID := MetabaseObjectClass.KE_CLASS_MODULE;
CrInfo.Id := MB.GenerateId("New_Module");
CrInfo.Name := "Новый модуль";
CrInfo.Parent := MB.Root;
MObj := MB.CreateObject(CrInfo).Edit;
MObj.Assign(MB.ItemById("Module_1").Bind);
MObj.Save;
End Sub UserProc;
Public Shared Sub Main(Params: StartParams);
Var
MB: IMetabase;
MObj: IMetabaseObject;
CrInfo: IMetabaseObjectCreateInfo;
Begin
MB := Params.Metabase;
CrInfo := MB.CreateCreateInfo();
CrInfo.ClassId := (MetabaseObjectClass.KE_CLASS_MODULE As integer);
CrInfo.Id := MB.GenerateId("New_Module", 1);
CrInfo.Name := "Новый модуль";
CrInfo.Parent := MB.Root;
MObj := MB.CreateObject(CrInfo).Edit();
MObj.Assign(MB.ItemById["Module_1"].Bind());
MObj.Save();
End Sub;
После выполнения примера в корневом каталоге репозитория будет создан новый модуль. Листинг модуля будет скопирован из модуля «Module_1».
См. также: