CreateByObject(ObjectKey: Integer);
CreateByObject(ObjectKey: uinteger);
ObjectKey. Ключ объекта репозитория.
Конструктор CreateByObject создает новый шаблон зависимостей в соответствии с указанными параметрами объекта репозитория.
Для создания нового шаблона зависимостей в соответствии с указанными параметрами объекта, справочника НСИ и элемента справочника используйте конструктор MbElementDependentTemplateClass.Create.
Для выполнения примера предполагается наличие справочников НСИ с идентификаторами «DICT» и «DICT1».
Добавьте ссылки на системные сборки Metabase, Rds.
Sub UserProc;
Var
MB: IMetabase;
Obj, Dictionary: IMetabaseObjectDescriptor;
RdsDictIns: IRdsDictionaryInstance;
Elements: IRdsDictionaryElements;
Depends: IMbElementDependents;
Template, Value: IMbElementDependentTemplate;
ObjKey, DictKey, ElemKey: Integer;
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;
ObjKey := Obj.Key;
ElemKey := Elements.Element(1); // для первого элемента справочника
// Шаблон:
Template := New MbElementDependentTemplateClass.CreateByObject(ObjKey);
Template.ElementKey := Elements.Element(4);
// Коллекция зависимостей:
Depends := Mb.ElementDependentsDatabase.New_;
Depends.Where := Template;
Value := New MbElementDependentTemplateClass.Create(ObjKey, DictKey, ElemKey);
Depends.Add(Value);
Depends.Database.Update(Depends);
Debug.WriteLine("=== Объект: " + Obj.Name + " ===");
Debug.WriteLine("Отслеживать ссылки на элементы из других объектов: ");
If Obj.TrackElementDependencies = True Then
Debug.WriteLine(" - опция включена");
Else
Debug.WriteLine(" - опция выключена");
End If;
Debug.WriteLine("=== Справочник: " + Dictionary.Name + " ===");
Debug.WriteLine("Отслеживать ссылки на элементы из других объектов: ");
If Dictionary.TrackElementDependents = True Then
Debug.WriteLine(" - опция включена");
Else
Debug.WriteLine(" - опция выключена");
End If;
End Sub UserProc;
В результате выполнения примера в окно консоли будет выведена информация о том, включена ли опция «Отслеживать ссылки на элементы из других объектов» для каждого из справочников.
Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore.
Imports Prognoz.Platform.Interop.Metabase;
Imports Prognoz.Platform.Interop.Rds;
Public Shared Sub Main(Params: StartParams);
Var
MB: IMetabase;
Obj, Dictionary: IMetabaseObjectDescriptor;
RdsDictIns: IRdsDictionaryInstance;
Elements: IRdsDictionaryElements;
Depends: IMbElementDependents;
DependTemplClassT, DependTemplClassV: MbElementDependentTemplateClassClass = New MbElementDependentTemplateClassClass();
Template, Value: MbElementDependentTemplateClass;
ObjKey, DictKey, ElemKey: uinteger;
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.ElementDependents;
Obj.SaveDescriptor();
/// Настройки:
DictKey := Dictionary.Key;
ObjKey := Obj.Key;
ElemKey := Elements.Element[1]; // для первого элемента справочника
// Шаблон:
DependTemplClassT.CreateByObject(ObjKey);
Template := DependTemplClassT As MbElementDependentTemplateClass;
Template.ElementKey := Elements.Element[4] As integer;
// Коллекция зависимостей:
Depends := Mb.ElementDependentsDatabase.@New();
Depends.Where := Template As MbElementDependentTemplateClass;
DependTemplClassV.Create(ObjKey, DictKey, ElemKey);
Value := DependTemplClassV As MbElementDependentTemplateClass;
Depends.Add(Value);
Depends.Database.Update(Depends);
System.Diagnostics.Debug.WriteLine("=== Объект: " + Obj.Name + " ===");
System.Diagnostics.Debug.WriteLine("Отслеживать ссылки на элементы из других объектов: ");
If Obj.TrackElementDependencies = True Then
System.Diagnostics.Debug.WriteLine(" - опция включена");
Else
System.Diagnostics.Debug.WriteLine(" - опция выключена");
End If;
System.Diagnostics.Debug.WriteLine("=== Справочник: " + Dictionary.Name + " ===");
System.Diagnostics.Debug.WriteLine("Отслеживать ссылки на элементы из других объектов: ");
If Dictionary.TrackElementDependents = True Then
System.Diagnostics.Debug.WriteLine(" - опция включена");
Else
System.Diagnostics.Debug.WriteLine(" - опция выключена");
End If;
End Sub;
См. также: