Delete(Where: IMbElementDependentTemplate);
Delete(Where: Prognoz.Platform.Interop.Metabase.IMbElementDependentTemplate);
Where. Шаблон, в соответствии с которым будет осуществлено удаление.
Метод Delete удаляет зависимости, соответствующие указанному шаблону.
Для проверки наличия зависимостей элементов справочников НСИ от объектов репозитория используйте метод IMbElementDependentsDatabase.Exists.
Для выполнения примера предполагается наличие справочников НСИ с идентификаторами «DICT» и «DICT1».
Добавьте ссылки на системные сборки Metabase, Rds, Ui.
Sub UserProc;
Var
MB: IMetabase;
Obj, Dictionary: IMetabaseObjectDescriptor;
RdsDictIns: IRdsDictionaryInstance;
Elements: IRdsDictionaryElements;
Template: IMbElementDependentTemplate;
ObjKeys: Array[2] Of Integer;
DictKey: Integer;
ElemDependDB: IMbElementDependentsDatabase;
b: Boolean;
Begin
MB := MetabaseClass.Active;
Obj := MB.ItemById("DICT1");
Dictionary := MB.ItemById("DICT");
RdsDictIns := Dictionary.Open(Null) As 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.
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[2] Of 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(Null) As 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;
См. также: