OnAskConstraintsHandling(
Update: IMetabaseUpdate;
Node: IMetabaseUpdateNode;
Details: String;
Var Handling: UpdateDataConstraintsHandlingType);
Update. Обновление, применяемое к текущему репозиторию.
Node. Объект обновления, для которого сгенерировано событие.
Details. Информация об ошибке.
Handling. Переменная, определяющая способ обработки ограничения целостности.
Метод OnAskConstraintsHandling реализует событие, возникающее при необходимости обработать ограничение целостности данных обновляемого объекта.
Public Class CUpdateEvents: UpdateEvents
Public Sub OnBeginUpdate(Update: IMetabaseUpdate);
Var
Flag: IMetabaseUpdateProperty;
Begin
Debug.WriteLine("Обновление объектов репозитория");
Flag := Update.Properties.FindById("Ver");
If Flag <> Null Then
Flag.Value := "1.1";
End If;
End Sub OnBeginUpdate;
Public Sub OnAskConstraintsHandling(Update: IMetabaseUpdate; Node: IMetabaseUpdateNode;
Details: String; Var Handling: UpdateDataConstraintsHandlingType);
Begin
Handling := UpdateDataConstraintsHandlingType.KeepTableUnchanged;
End Sub OnAskConstraintsHandling;
Public Sub OnAskReflectRights(Var Cancel: Boolean);
Begin
Cancel := True;
End Sub OnAskReflectRights;
Public Sub OnUpdateObject(Update: IMetabaseUpdate; CurrentNode: IMetabaseUpdateNode;
Var Skip: Boolean);
Begin
If CurrentNode.NodeType = MetabaseUpdateNodeType.DeleteObject Then
Skip := True;
End If;
End Sub OnUpdateObject;
Public Sub OnEndUpdate(Update: IMetabaseUpdate);
Begin
Debug.WriteLine("Обновление объектов окончено");
End Sub OnEndUpdate;
End Class CUpdateEvents;
Данный пример является шаблоном для модуля обновления. При применении обновления, содержащего данный модуль, будут осуществляться следующие проверки:
Если обновление содержит флаг обновления с идентификатором "Ver", то для данного флага будет выставлено значение "1.1". Обновляться будут только те объекты, для которых условие обновления соответствует "Ver=1.1".
При нарушении целостности данных, обновление всего объекта будет пропущено.
Обновление прав на объекты, для которых это необходимо, будет осуществляться только на уровне платформы.
В обновлении будут пропущены элементы, осуществляющие удаление объектов репозитория.
См. также: