SaveEx(FileName: String; Progress: IMetabaseUpdateProgress);
SaveEx(FileName: string; Progress: Prognoz.Platform.Interop.Metabase.IMetabaseUpdateProgress);
FileName. Наименование файла, в который будет сохранена база данных временных рядов;
Progress. Объект, реализующий события, возникающие при выполнении копировании.
Метод SaveEx копирует базу данных временных рядов в файл с возможностью обработки событий, возникающих во время копирования.
В результате выполнения метода создается ZIP-архив, содержащий необходимые файлы с информацией о базе данных временных рядов и данными временных рядов. В качестве значения параметра FileName укажите путь и наименование файла вместе с расширением «zip».
Для выполнения примера в репозитории предполагается наличие базы данных временных рядов с идентификатором «TSDB».
Добавьте ссылки на системные сборки: Cubes, Metabase.
Sub UserProc;
Var
Mb: IMetabase;
RubUpdateEx: ICubeMetaUpdateEx;
Rub: IRubricator;
Progress: MyUpdateProgress;
Begin
// Получаем текущий репозиторий
Mb := MetabaseClass.Active;
// Создаем объект копирования
RubUpdateEx := New CubeMetaUpdateClass.Create;
// Получаем базу данных временных рядов
Rub := Mb.ItemById("TSDB").Bind As IRubricator;
// Указываем копируемую
базу данных временных рядов
RubUpdateEx.Rubricator := Rub;
// Создаем объект, реализующий события, которые происходят во время копирования
Progress := New MyUpdateProgress.Create;
// Выполняем сохранение в файл
RubUpdateEx.SaveEx("C:\Replication.zip", Progress);
End Sub UserProc;
// Класс, реализующий события, которые происходят во время копирования
Class MyUpdateProgress: UpdateProgress
// Событие, возникающее при ошибках копирования
Sub OnError(Data: IMetabaseUpdateProgressData; Var Ignore: Boolean);
Begin
Debug.WriteLine("Ошибка копирования объекта обновления '" + Data.Node.Label + "'");
Debug.WriteLine("Текст ошибки: " + Data.Error.Message);
If Data.Object <> Null Then
Debug.WriteLine("Источник ошибки: " + Data.Object.Id);
Debug.WriteLine("Ключ объекта: " + Data.Object.Key.ToString);
End If;
Debug.WriteLine("Объект будет пропущен");
Ignore := True;
End Sub OnError;
End Class MyUpdateProgress;
В результате выполнения примера база данных временных рядов «TSDB» будет сохранена в файл «C:\Replication.zip». Если при сохранении возникнут ошибки, то они будут выведены в окно консоли.
Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore.
Imports Prognoz.Platform.Interop.Cubes;
…
Public Shared Sub Main(Params: StartParams);
Var
Mb: IMetabase;
RubUpdateEx: ICubeMetaUpdateEx;
Rub: IRubricator;
Progress: MyUpdateProgress;
Begin
// Получаем текущий репозиторий
Mb := Params.Metabase;
// Создаем объект копирования
RubUpdateEx := New CubeMetaUpdateClass.Create();
// Получаем базу данных временных рядов
Rub := Mb.ItemById["TSDB"].Bind() As IRubricator;
// Указываем копируемую базу данных временных рядов
RubUpdateEx.Rubricator := Rub;
// Создаем объект, реализующий события, которые происходят во время копирования
Progress := New MyUpdateProgress.Create();
// Выполняем сохранение в файл
RubUpdateEx.SaveEx("C:\Replication.zip", Progress);
End Sub;
…
// Класс, реализующий события, которые происходят во время копирования
Public Class MyUpdateProgress: IMetabaseUpdateProgress
// Событие, возникающее при ошибках копирования
Public Sub OnError(Data: IMetabaseUpdateProgressData; Var Ignore: Boolean);
Begin
System.Diagnostics.Debug.WriteLine("Ошибка копирования объекта обновления '" + Data.Node.Label + "'");
System.Diagnostics.Debug.WriteLine("Текст ошибки: " + Data.Error.Message);
If Data.Object <> Null Then
System.Diagnostics.Debug.WriteLine("Источник ошибки: " + Data.Object.Id);
System.Diagnostics.Debug.WriteLine("Ключ объекта: " + Data.Object.Key.ToString());
End If;
System.Diagnostics.Debug.WriteLine("Объект будет пропущен");
Ignore := True;
End Sub;
Public Sub OnContext(Context: IMetabaseUpdateContext);
Begin
End Sub;
Public Sub OnProgress(Data: IMetabaseUpdateProgressData);
Begin
End Sub;
Public Sub OnAskConstraintsHandling(Node: IMetabaseUpdateNode; Details: String; Var Handling: UpdateDataConstraintsHandlingType);
Begin
End Sub;
Public Sub OnAskReflectRights(Var Cancel: Boolean);
Begin
End Sub;
Public Sub OnResolve(Node: IMetabaseUpdateNode; Resolver: IMetabaseUpdateResolver);
Begin
End Sub;
Public Sub OnSkip(Data: IMetabaseUpdateProgressData);
Begin
End Sub;
Public Sub OnNullLinks(Node: IMetabaseUpdateNode; Links: IMetabaseUpdateNullLinks);
Begin
End Sub;
Public Sub OnBeforeCustomObjectSaveToPef(Resolver: ICustomObjectResolver);
Begin
End Sub;
Public Sub OnAfterApplyCustomObject(Resolver: ICustomObjectResolver);
Begin
End Sub;
End Class MyUpdateProgress;
См. также: