RdsMergeCallback.OnBeforeProcess

Синтаксис

OnBeforeProcess(Var Cancel: Boolean);

Параметры

Cancel. Параметр, определяющий будет ли производиться дальнейшая синхронизация элементов. Если в качестве значения параметра передается True - синхронизация отменяется. Значения всех элементов остаются без изменения. Если передать значение False - осуществляется дальнейшая синхрозация, для всех элементов имеющих разные значения генерируется событие OnConflictResolve.

Описание

Метод OnBeforeProcess реализует событие, возникающее после этапа сравнения элементов и непосредственно перед самой синхронизацией элементов, имеющих различные значения атрибутов.

Пример

Для выполнения примера предполагается наличие репозитория НСИ с идентификатором "NSI_1". В файле "Sinc.rpl" содержатся данные синхронизируемых справочников.

Public Class MyCallback: RdsMergeCallback
    Public Sub OnProgress(Current: Integer; Total: Integer);
    Begin
        Debug.WriteLine("Сделано: " + Progress.ToString + " из " + Total.ToString);
    End Sub OnProgress;
    Public Sub OnConflict(LoadElement: IRdsDictionaryElement; CurrentElement: IRdsDictionaryElement);
    Begin
        Debug.Write("Conflict: ");
        Debug.Write(LoadElement.Name);
        Debug.Write(" | ");
        Debug.WriteLine(CurrentElement.Name);
    End Sub OnConflict;
    Public Sub OnBeforeProcess(Var Cancel: Boolean);
    Begin
        Cancel := False;
    End Sub OnBeforeProcess;
    Public Sub OnConflictResolve(LoadElement: Integer; CurrentElement: Integer; Var Ignor: Boolean);
    Begin
        Ignor := True;
    End Sub OnConflictResolve;
End Class MyCallback;
Sub Main;
Var
    MB: IMetabase;
    MObj: IMetabaseObject;
    NSI: IRdsDatabase;
    NSIInst: IRdsDatabaseInstance;
    Trans: IConnectionTransaction;
    CallBack: RdsMergeCallback;
    Replic: IRdsReplicator;
Begin
    MB := MetabaseClass.Active;
    MObj := MB.ItemById("NSI_1").Bind;
    NSI := MObj As IRdsDatabase;
    NSIInst := NSI.Open(Null);
    Trans := NSIInst.DatabaseInstance.Connection.StartTransaction(False);
    CallBack := New MyCallback.Create;
    Replic := NSIInst.CreateReplicator;
    Replic.LoadFromFile("c:\Sinc.rpl");
    Replic.Merge(CallBack);
    Trans.Commit;
End Sub Main;

После выполнения примера будет осуществлена синхронизация справочников в репозитории НСИ "NSI_1". Для контроля процесса синхронизации используется пользовательский класс "MyCallback". Во время выполнения, в консоль будет выводиться общий статус процесса, а так же наименования элементов, имеющих различные значения в справочнике и загруженном файле.

См. также:

RdsMergeCallback