IMetabaseUpdateProgress.OnNullLinks

Синтаксис

OnNullLinks(Node: IMetabaseUpdateNode; Links: IMetabaseUpdateNullLinks);

Параметры

Node. Объект обновления.

Links. Коллекция отсутствующих ссылок.

Описание

Метод OnNullLinksResolve реализует событие, возникающее при наличии ссылок, которые отсутствуют в репозитории назначения.

Пример Fore

Для выполнения примера предполагается наличие файла обновления update.perfx, содержащего объект с ключом «1286399», который при обновлении будет содержать отсутствующие ссылки.

Sub Button1OnClick(Sender: Object; Args: IMouseEventArgs);
Var
    MB: IMetabase;
    MUpdate: IMetabaseUpdate;
    Progress: MyUpdateProgress;
    UpdateCxt: IMetabaseUpdateContext;
Begin
    MB := MetabaseClass.Active;
    MUpdate := MB.CreateUpdate;
    MUpdate.LoadFromFileNF("C:\update.pefx");
    Progress := New MyUpdateProgress.Create;
    UpdateCxt := MUpdate.CreateUpdateContext;
    UpdateCxt.RegisterNullRemapping(1286399);
    MUpdate.ApplyEx(Progress, UpdateCxt);
End Sub Button1OnClick;

Class MyUpdateProgress: UpdateProgress
    Sub OnNullLinks(Node: IMetabaseUpdateNode; Links: IMetabaseUpdateNullLinks);
    Var
        Link: IMetabaseUpdateNullLink;
        i: Integer;
        MB: IMetabase;
    Begin
        MB := MetabaseClass.Active;
        Debug.WriteLine("OnNullLInks");
        For i := 0 To Links.Count - 1 Do
            Link := Links.Item(i);
                Debug.WriteLine("Id: " + Link.Id);
                Debug.WriteLine("Name: " + Link.Name);
                Debug.WriteLine("Key: " + Link.Key.ToString);
                Debug.WriteLine("Description: " + Link.Description);
                Debug.WriteLine("ClassId: " + Link.ClassId.ToString);
                Debug.WriteLine("---");
        End For;
    End Sub OnNullLinks;
End Class MyUpdateProgress;

После выполнения примера в консоль будет выведена информация об отсутствующих ссылках.

Пример Fore.NET

Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore.

Imports Prognoz.Platform.Interop.Metabase;

Public Class Program
    Public Shared Sub Main(Params: StartParams);
    Var
        MB: IMetabase;
        MUpdate: IMetabaseUpdate;
        Progress: MyUpdateProgress;
        UpdateCxt: IMetabaseUpdateContext;
    Begin
        MB := Params.Metabase;
        MUpdate := MB.CreateUpdate();
        MUpdate.LoadFromFileNF("C:\\update.pefx", UpdateLoadMode.ulmReplace);
        Progress := New MyUpdateProgress(MB);
        UpdateCxt := MUpdate.CreateUpdateContext();
        UpdateCxt.RegisterNullRemapping(1286399);
        MUpdate.ApplyEx(Progress, UpdateCxt);
    End Sub;
End Class;
Class MyUpdateProgress: IMetabaseUpdateProgress
    _MB: IMetabase;

    Public Constructor MyUpdateProgress(MB: IMetabase);
    Begin
        _MB := MB;
    End Constructor;

    Public Sub OnResolve(Node: IMetabaseUpdateNode; Resolver: IMetabaseUpdateResolver);
    Begin
    End Sub OnResolve;
    
    Public Sub OnAfterApplyCustomObject(Resolver: ICustomObjectResolver);
    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 OnBeforeCustomObjectSaveToPef(Resolver: ICustomObjectResolver);
    Begin
    End Sub;

    Public Sub OnContext(Context: IMetabaseUpdateContext);
    Begin
    End Sub;
    
    Public Sub OnError(Data: IMetabaseUpdateProgressData; Var Ignore: Boolean);
    Begin
    End Sub;

    Public Sub OnNullLinks(Node: IMetabaseUpdateNode; Links: IMetabaseUpdateNullLinks);
    Var
        Link: IMetabaseUpdateNullLink;
        i: Integer;
    Begin
        System.Diagnostics.Debug.WriteLine("OnNullLInks");
        For i := 0 To Links.Count - 1 Do
            Link := Links.Item[i];
            System.Diagnostics.Debug.WriteLine("Id: " + Link.Id);
            System.Diagnostics.Debug.WriteLine("Name: " + Link.Name);
            System.Diagnostics.Debug.WriteLine("Key: " + Link.Key.ToString());
            System.Diagnostics.Debug.WriteLine("Description: " + Link.Description);
            System.Diagnostics.Debug.WriteLine("ClassId: " + Link.ClassId.ToString());
            System.Diagnostics.Debug.WriteLine("---");
        End For;
    End Sub;

    Public Sub OnProgress(Data: IMetabaseUpdateProgressData);
    Begin
    End Sub;

    Public Sub OnSkip(Data: IMetabaseUpdateProgressData);
    Begin
    End Sub;
End Class;

См. также:

IMetabaseUpdateProgress