IMbElementDependent.Dictionary

Синтаксис Fore

Dictionary: IMetabaseObjectDescriptor;

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

Dictionary: Prognoz.Platform.Interop.Metabase.IMetabaseObjectDescriptor;

Описание

Свойство Dictionary возвращает справочник НСИ, элементы которого зависят от объекта репозитория.

Комментарии

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

Пример Fore

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

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

Sub UserProc;
Var
    MB: IMetabase;
    Obj, Dictionary, Dict: IMetabaseObjectDescriptor;
    RdsDictIns: IRdsDictionaryInstance; 
    Elements: IRdsDictionaryElements;
    Depends: IMbElementDependents;
    Depend: IMbElementDependent;
    Template, Value: IMbElementDependentTemplate;
    ElemKeys: Array[2Of Integer;
    ObjKey, DictKey, ElemKey: Integer;
    ElemDependDB: IMbElementDependentsDatabase;
    i: 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;
    // Шаблон:
    Template := New MbElementDependentTemplateClass.CreateByDictionary(DictKey);
    Template.DictionaryKey := Dictionary.Key;
    ElemKeys[0] := Elements.Element(1);
    ElemKeys[1] := Elements.Element(2);
    //Указываем ключи элементов
    Template.ElementKeys := ElemKeys;
    // Коллекция зависимостей:
    ElemDependDB := Mb.ElementDependentsDatabase;
    Depends := ElemDependDB.Select_(Template);
    Value := New MbElementDependentTemplateClass.Create(ObjKey, DictKey, ElemKey);
    Depends.Add(Value);
    Depends.Modified := True;
    ElemDependDB.Update(Depends);
    // Вывод информации:
    Debug.WriteLine("Параметры текущего репозитория: " + ElemDependDB.Metabase.Name);
    If ElemDependDB.Active = True Then
            Debug.WriteLine("Для объектов репозитория доступно сохранение зависимостей");
        Else
            Debug.WriteLine("Для объектов репозитория не доступно сохранение зависимостей");
    End If;
    Debug.WriteLine("Настроены зависимости для объектов:");
    For i := 0 To Depends.Count - 1 Do
        Depend := Depends.Item(i);
        Dict := Depend.Dictionary;
        Debug.WriteLine("    " + Dict.Name + ", идентификатор: " + Dict.Id);
        Obj := Depend.Object;
        Debug.WriteLine("    " + Obj.Name + ", идентификатор: " + Obj.Id);
    End For;
    Debug.WriteLine("Количество ключей элементов справочника НСИ: "
        + Template.ElementKeysCount.ToString);
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, Dict: IMetabaseObjectDescriptor;
    RdsDictIns: IRdsDictionaryInstance; 
    Elements: IRdsDictionaryElements;
    Depends: IMbElementDependents;
    Depend: IMbElementDependent;
    Template, Value: MbElementDependentTemplateClass;
    DependTemplClassT, DependTemplClassV: MbElementDependentTemplateClassClass = New MbElementDependentTemplateClassClass();
    ElemKeys: Array[2Of uinteger;
    ObjKey, DictKey, ElemKey: uinteger;
    ElemDependDB: IMbElementDependentsDatabase;
    i: Integer;
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;
    // Шаблон:
    DependTemplClassT.CreateByDictionary(DictKey);
    Template := DependTemplClassT As MbElementDependentTemplateClass;
    Template.DictionaryKey := Dictionary.Key;
    ElemKeys[0] := Elements.Element[1];
    ElemKeys[1] := Elements.Element[2];
    //Указываем ключи элементов
    Template.ElementKeys := ElemKeys;
    // Коллекция зависимостей:
    ElemDependDB := Mb.ElementDependentsDatabase;
    Depends := ElemDependDB.@Select(Template);
    DependTemplClassV.Create(ObjKey, DictKey, ElemKey);
    Value := DependTemplClassV As MbElementDependentTemplateClass;
    Depends.Add(Value);
    Depends.Modified := True;
    ElemDependDB.Update(Depends);
    // Вывод информации:
    System.Diagnostics.Debug.WriteLine("Параметры текущего репозитория: " + ElemDependDB.Metabase.Name);
    If ElemDependDB.Active = True Then
            System.Diagnostics.Debug.WriteLine("Для объектов репозитория доступно сохранение зависимостей");
        Else
            System.Diagnostics.Debug.WriteLine("Для объектов репозитория не доступно сохранение зависимостей");
    End If;
    System.Diagnostics.Debug.WriteLine("Настроены зависимости для объектов:");
    For i := 0 To Depends.Count - 1 Do
        Depend := Depends.Item[i];
        Dict := Depend.Dictionary;
        System.Diagnostics.Debug.WriteLine("    " + Dict.Name + ", идентификатор: " + Dict.Id);
        Obj := Depend.Object;
        System.Diagnostics.Debug.WriteLine("    " + Obj.Name + ", идентификатор: " + Obj.Id);
    End For;
    System.Diagnostics.Debug.WriteLine("Количество ключей элементов справочника НСИ: "
        + Template.ElementKeysCount.ToString());
End Sub;

См. также:

IMbElementDependent