MbElementDependentTemplateClass.CreateByDictionary

Синтаксис Fore

CreateByDictionary(DictionaryKey: Integer);

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

CreateByDictionary(DictionaryKey: uinteger);

Параметры

DictionaryKey. Ключ справочника НСИ.

Описание

Конструктор CreateByDictionary создает новый шаблон зависимостей в соответствии с указанными параметрами справочника НСИ.

Комментарии

Для создания нового шаблона зависимостей в соответствии с указанными параметрами справочника НСИ и элемента справочника используйте конструктор MbElementDependentTemplateClass.CreateByElement.

Пример Fore

Для выполнения примера предполагается наличие справочников НСИ с идентификаторами «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(NullAs IRdsDictionaryInstance;
    Elements := RdsDictIns.Elements;
    // Настройки объекта:
    Obj := Obj.EditDescriptor;
    Obj.ElementDependenciesTrackingType := MbElementDependenciesTrackingType.Dependecies;
    Obj.ElementDependents;
    Obj.SaveDescriptor;
    /// Настройки:
    DictKey := Dictionary.Key;
    ObjKey := Obj.Key;
    ElemKey := Elements.Element(1); // для первого элемента справочника
    // Шаблон:
    Template := New MbElementDependentTemplateClass.CreateByDictionary(DictKey);
    Template.ElementKey := Elements.Element(4);
    // Коллекция зависимостей:
    Depends := Mb.ElementDependentsDatabase.New_;
    Depends.Clear;
    Depends.Where := Template;
    Value := New MbElementDependentTemplateClass.Create(ObjKey, DictKey, ElemKey);
    Depends.Add(Value);
    Depends.Database.Update(Depends);
    Debug.WriteLine("Количество записей зависимости элементов справочника НСИ: " + Depends.Count.ToString);
    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.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(NullAs 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.CreateByDictionary(DictKey);
    Template := DependTemplClassT As MbElementDependentTemplateClass;
    Template.ElementKey := Elements.Element[4As integer;
    // Коллекция зависимостей:
    Depends := Mb.ElementDependentsDatabase.@New();
    Depends.Clear();
    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("Количество записей зависимости элементов справочника НСИ: " + Depends.Count.ToString());
    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;

См. также:

MbElementDependentTemplateClass