OnAskConstraintsHandling(
Node: IMetabaseUpdateNode;
Details: String;
Var Handling: UpdateDataConstraintsHandlingType);
Node - объект обновления, для которого сгенерировано событие.
Details - информация об ошибке.
Handling - переменная, определяющая способ обработки ограничения целостности.
Метод OnAskConstraintsHandling реализует событие, возникающее при необходимости обработать ограничение целостности данных обновляемого объекта. Данное событие генерируется во время применения обновления.
Для выполнения примера предполагается наличие файла обновления с наименованием "NSIDictionary.pef". Данное обновление содержит информацию о справочнике НСИ.
Sub Main;
Var
MB: IMetabase;
MUpdate: IMetabaseUpdate;
Progress: MyUpdateProgress;
Begin
MB := MetabaseClass.Active;
MUpdate := MB.CreateUpdate;
MUpdate.LoadFromFile("c:\NSIDictionary.pef");
Progress := New MyUpdateProgress.Create;
MUpdate.Apply(Progress);
End Sub Main;
Class MyUpdateProgress: UpdateProgress
Sub OnAskConstraintsHandling(Node: IMetabaseUpdateNode; Details: String; Var Handling: UpdateDataConstraintsHandlingType);
Begin
Handling := UpdateDataConstraintsHandlingType.KeepTableUnchanged;
End Sub OnAskConstraintsHandling;
Sub OnProgress(Data: IMetabaseUpdateProgressData);
Begin
Select Case Data.Stage
Case MetabaseUpdateProgressStage.Start: Debug.WriteLine("Начало обновления объектов");
Case MetabaseUpdateProgressStage.Prepare: Debug.WriteLine("Подготовка объекта");
Case MetabaseUpdateProgressStage.Apply: Debug.WriteLine("Обновление объекта");
Case MetabaseUpdateProgressStage.Finish: Debug.WriteLine("Обновления объектов завершено");
End Select;
Debug.WriteLine("Текущее " + Data.Current.ToString + " из " + Data.Total.ToString + " Объект " + Data.Node.Label);
End Sub OnProgress;
End Class MyUpdateProgress;
После выполнения примера будет осуществлено обновление справочника НСИ из файла обновления "NSIDictionary.pef". Для обработки событий, возникающих во время обновления, используется пользовательский класс "MyUpdateProgress". Статус выполнения обновления будет выведен в консоль среды разработки. Если в справочнике-приемнике существуют элементы, на которые имеются ссылки и которые отсутствуют в обновлении, обновление справочника производиться не будет.
См. также: