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". Во время выполнения, в консоль будет выводиться общий статус процесса, а так же наименования элементов, имеющих различные значения в справочнике и загруженном файле.
См. также: