OnBeforeCustomObjectSaveToPef(Resolver: ICustomObjectResolver);
OnBeforeCustomObjectSaveToPef(Resolver: Prognoz.Platform.Interop.Metabase.ICustomObjectResolver);
Resolver. Объект, предназначенный для работы с пользовательским объектом.
Метод OnAfterApplyCustomObject реализует событие, возникающее после применения обновления пользовательского объекта, но до его сохранения в репозиторий.
Событие возникает для каждого пользовательского объекта, присутствующего в обновлении.
Для выполнения примера в файловой системе предполагается наличие файла обновления «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.
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;
См. также: