ICubeMetaUpdateEx.SaveEx

Синтаксис Fore

SaveEx(FileName: String; Progress: IMetabaseUpdateProgress);

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

SaveEx(FileName: string; Progress: Prognoz.Platform.Interop.Metabase.IMetabaseUpdateProgress);

Параметры

FileName. Наименование файла, в который будет сохранена база данных временных рядов;

Progress. Объект, реализующий события, возникающие при выполнении копировании.

Описание

Метод SaveEx копирует базу данных временных рядов в файл с возможностью обработки событий, возникающих во время копирования.

Комментарии

В результате выполнения метода создается ZIP-архив, содержащий необходимые файлы с информацией о базе данных временных рядов и данными временных рядов. В качестве значения параметра FileName укажите путь и наименование файла вместе с расширением «zip».

Пример Fore

Для выполнения примера в репозитории предполагается наличие базы данных временных рядов с идентификатором «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.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;

См. также:

ICubeMetaUpdateEx