IMetabaseUpdateProgress.OnAfterApplyCustomObject

Синтаксис Fore

OnBeforeCustomObjectSaveToPef(Resolver: ICustomObjectResolver);

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

OnBeforeCustomObjectSaveToPef(Resolver: Prognoz.Platform.Interop.Metabase.ICustomObjectResolver);

Параметры

Resolver. Объект, предназначенный для работы с пользовательским объектом.

Описание

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

Комментарии

Событие возникает для каждого пользовательского объекта, присутствующего в обновлении.

Пример Fore

Для выполнения примера в файловой системе предполагается наличие файла обновления «C:\CustomObjData.pefx». Данный файл должен содержать пользовательский объект, в котором записаны какие-либо данные. Также предполагается наличие текстового файла «C:\From.txt», содержащего данные, которые должны быть записаны в пользовательский объект.

Добавьте ссылки на системную сборку Metabase.

Sub UserProc;
Var
    Mb: IMetabase;
    Update: IMetabaseUpdate;
    Progress: MyUpdateProgress;
Begin
    // Получаем текущий репозиторий
    Mb := MetabaseClass.Active;
    // Создаем обновление
    Update := Mb.CreateUpdate;
    // Загружаем параметры обновления из файла
    Update.LoadFromFileNF("C:\CustomObjData.pefx");
    // Создаем объект, реализующий события, которые происходят во время обновления
    Progress := New MyUpdateProgress.Create;
    // Выполняем обновление
    Update.ApplyEx(Progress, Null);
End Sub UserProc;

// Класс, реализующий события, которые происходят во время обновления
Class MyUpdateProgress: UpdateProgress
    // Событие, возникающее после применения обновления пользовательского объекта,
    // но до момента сохранения его в репозиторий
    Sub OnAfterApplyCustomObject(Resolver: ICustomObjectResolver);
    Begin
        // Читаем данные из пользовательского объекта в текстовый файл
        Resolver.ReadToFile("C:\To.txt");
        // Записываем данные в пользовательский объект из текстового файла
        Resolver.WriteFromFile("C:\From.txt");
    End Sub OnAfterApplyCustomObject;
    
End Class MyUpdateProgress;

В результате выполнения примера будет применено обновление «C:\CustomObjData.pefx». Данные из пользовательского объекта в обновлении будут выгружены в файл «C:\To.txt», а в объект будут записаны данные из файла «C:\From.txt».

Пример Fore.NET

Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore.

Public Shared Sub Main(Params: StartParams);
Var
    Mb: IMetabase;
    Update: IMetabaseUpdate;
    Progress: MyUpdateProgress;
Begin
    // Получаем текущий репозиторий
    Mb := Params.Metabase;
    // Создаем обновление
    Update := Mb.CreateUpdate();
    // Загружаем параметры обновления из файла
    Update.LoadFromFileNF("C:\CustomObjData.pefx", UpdateLoadMode.ulmReplace);
    // Создаем объект, реализующий события, которые происходят во время обновления
    Progress := New MyUpdateProgress.Create();
    // Выполняем обновление
    Update.ApplyEx(Progress, Null);
End Sub;

// Класс, реализующий события, которые происходят во время обновления
Public Class MyUpdateProgress: IMetabaseUpdateProgress
    // Событие, возникающее после применения обновления пользовательского объекта,
    // но до момента сохранения его в репозиторий
    Public Sub OnAfterApplyCustomObject(Resolver: ICustomObjectResolver);
    Begin
        // Читаем данные из пользовательского объекта в текстовый файл
        Resolver.ReadToFile("C:\To.txt");
        // Записываем данные в пользовательский объект из текстового файла
        Resolver.WriteFromFile("C:\From.txt");
    End Sub OnAfterApplyCustomObject;
    
    Public Sub OnProgress(Data: IMetabaseUpdateProgressData);
    Begin
    End Sub;
    
    Public Sub OnError(Data: IMetabaseUpdateProgressData; Var Ignore: Boolean);
    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 OnContext(Context: IMetabaseUpdateContext);
    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;
End Class MyUpdateProgress;

См. также:

IMetabaseUpdateProgress