IMbElementDependentsDatabase.Delete

Синтаксис Fore

Delete(Where: IMbElementDependentTemplate);

Синтаксис Fore.NET

Delete(Where: Prognoz.Platform.Interop.Metabase.IMbElementDependentTemplate);

Параметры

Where. Шаблон, в соответствии с которым будет осуществлено удаление.

Описание

Метод Delete удаляет зависимости, соответствующие указанному шаблону.

Комментарии

Для проверки наличия зависимостей элементов справочников НСИ от объектов репозитория используйте метод IMbElementDependentsDatabase.Exists.

Пример Fore

Для выполнения примера предполагается наличие справочников НСИ с идентификаторами «DICT» и «DICT1».

Добавьте ссылки на системные сборки Metabase, Rds, Ui.

Sub UserProc;
Var
    MB: IMetabase;
    Obj, Dictionary: IMetabaseObjectDescriptor;
    RdsDictIns: IRdsDictionaryInstance; 
    Elements: IRdsDictionaryElements;
    Template: IMbElementDependentTemplate;
    ObjKeys: Array[2Of Integer;
    DictKey: Integer;
    ElemDependDB: IMbElementDependentsDatabase;
    b: Boolean;
Begin
    MB := MetabaseClass.Active;
    Obj := MB.ItemById("DICT1");
    Dictionary := MB.ItemById("DICT");
    RdsDictIns := Dictionary.Open(NullAs IRdsDictionaryInstance;
    Elements := RdsDictIns.Elements;
    // Настройки объекта:
    Obj := Obj.EditDescriptor;
    Obj.ElementDependenciesTrackingType := MbElementDependenciesTrackingType.Dependecies;
    Obj.SaveDescriptor;
    // Шаблон:
    DictKey := Dictionary.Key;
    Template := New MbElementDependentTemplateClass.CreateByDictionary(DictKey);
    Template.ObjectKey := Dictionary.Key;
    ObjKeys[0] := Elements.Element(1);
    ObjKeys[1] := Elements.Element(2);
    // Указываем ключи элементов
    Template.ObjectKeys := ObjKeys;
    // Работа с зависимостями:
    ElemDependDB := Mb.ElementDependentsDatabase;
    If ElemDependDB.Exists(Template) Then
        WinApplication.YesNoCancelBox("Зависимости существуют. Удалить зависимости от элемента?", b);
        If b Then
            ElemDependDB.Delete(Template);
        End If;
    End If;
    Debug.WriteLine("Количество ключей объектов репозитория: "
        + Template.ObjectKeysCount.ToString);
End Sub UserProc;

В результате выполнения примера в окно консоли будет выведена информация о количестве ключей объектов репозитория. А также если существуют зависимости, соответствующие заданному шаблону, будет предложено их удалить. При нажатии кнопки «ОК» зависимости будут удалены.

Пример Fore.NET

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

Imports Prognoz.Platform.Interop.Metabase;
Imports Prognoz.Platform.Interop.Rds;
Imports Prognoz.Platform.Interop.Ui;

Public Shared Sub Main(Params: StartParams);
Var
    MB: IMetabase;
    Obj, Dictionary: IMetabaseObjectDescriptor;
    RdsDictIns: IRdsDictionaryInstance; 
    Elements: IRdsDictionaryElements;
    Template: MbElementDependentTemplateClass;
    DependTemplClass: MbElementDependentTemplateClassClass = New MbElementDependentTemplateClassClass();
    ObjKeys: Array[2Of uinteger;
    DictKey: uinteger;
    ElemDependDB: IMbElementDependentsDatabase;
    WinAppCls: WinApplicationClass = New WinApplicationClassClass();
    b, b1: Boolean;
Begin
    MB := Params.Metabase;
    Obj := MB.ItemById["DICT1"];
    Dictionary := MB.ItemById["DICT"];
    RdsDictIns := Dictionary.Open(NullAs IRdsDictionaryInstance;
    Elements := RdsDictIns.Elements;
    // Настройки объекта:
    Obj := Obj.EditDescriptor();
    Obj.ElementDependenciesTrackingType := MbElementDependenciesTrackingType.mbeledeptratypDependecies;
    Obj.SaveDescriptor();
    // Шаблон:
    DictKey := Dictionary.Key;
    DependTemplClass.CreateByDictionary(DictKey);
    Template := DependTemplClass As MbElementDependentTemplateClass;
    Template.ObjectKey := Dictionary.Key;
    ObjKeys[0] := Elements.Element[1];
    ObjKeys[1] := Elements.Element[2];
    // Указываем ключи элементов
    Template.ObjectKeys := ObjKeys;
    // Работа с зависимостями:
    ElemDependDB := Mb.ElementDependentsDatabase;
    If ElemDependDB.Exists(Template) Then
        b := WinAppCls.YesNoCancelBox("Зависимости существуют. Удалить зависимости от элемента?",
            b, Var b1, New IWin32WindowForeAdapter(Self));
        If b Then
            ElemDependDB.Delete(Template);
        End If;
    End If;
    System.Diagnostics.Debug.WriteLine("Количество ключей объектов репозитория: "
        + Template.ObjectKeysCount.ToString());
End Sub;

См. также:

IMbElementDependentsDatabase