IMetaDictionaryDataInfo.IsAttributeActive

Синтаксис Fore

IsAttributeActive(Attribute: Variant): Boolean;

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

IsAttributeActive(Attribute: object): boolean;

Параметры

Attribute. Атрибут.

Описание

Метод IsAttributeActive возвращает признак того, что указанный групповой атрибут доступен для показателя.

Комментарии

Если IsAttributeActive возвращает значение True, то групповой атрибут доступен для показателя.

В качестве значения параметра Attribute можно передавать:

Признак того, что показатель входит в указанную группу возвращает метод IMetaDictionaryDataInfo.

Пример Fore

Для выполнения примера предполагается наличие базы данных временных рядов с идентификатором «FC_GROUPS», содержащей групповой атрибут с идентификатором «ATTR_GROUP». Добавьте ссылки на системные сборки «Rds», «Metabase», «Cubes».

Sub UserProc;
Var
    mb: IMetabase;
    RubDesc: IMetabaseObjectDescriptor;
    Rub: IRubricator;
    RubrIn: IRubricatorInstance;
    Dic: IMetaDictionary;
    i: Integer;
    key: Array Of Integer;
    FactsLookup: IRubricatorFactsLookup;
    FactData: IRubricatorFactData;
    FactInfo: IMetaDictionaryDataInfo;
    Attr: IMetaAttribute;
    Memb: IMetaDataMember;
    MembGroup: IMetaDataMemberGroup;
    GroupRecord: IMetaDataMemberRecord;
Begin
    mb := MetabaseClass.Active;
    RubDesc := mb.ItemById("FC_GROUPS");
    Rub := RubDesc.Bind As IRubricator;
// Получаем справочник показателей базы данных временных рядов
    Dic := (Rub.Facts As IMetabaseObject).Edit As IMetaDictionary;
// Получаем групповой атрибут показателей   
    Attr := Dic.Attributes.FindById("ATTR_GROUP");
// Получаем массив ключей показателей   
    RubrIn := RubDesc.Open(NullAs IRubricatorInstance;
    FactsLookup := RubrIn.CreateFactsLookup;
    i := FactsLookup.LookupFactors.Length;
    key := New Integer[i];
    key := FactsLookup.LookupFactors;
    For Each i In key Do
        FactData := RubrIn.GetFactData(i);
        FactInfo := FactData As IMetaDictionaryDataInfo;
        If FactInfo.IsAttributeActive(Attr) Then
            Debug.WriteLine("Показатель: " + FactData.Mnemo);
            Memb := FactData.Record.Members.FindById(Attr.Id);
            MembGroup := Memb As IMetaDataMemberGroup;
            Debug.WriteLine("  значение группового атрибута: " + MembGroup.SelfValue);
            GroupRecord := MembGroup.GroupRecord;
            Debug.WriteLine("  доступность для редактирования: " + GroupRecord.IsEdited.ToString);
        End If;
    End For;
End Sub UserProc;

После выполнения примера в окно консоли будут выведены значение и доступность для редактирования группового атрибута для всех показателей, которые входят в группу.

Пример Fore.NET

Для выполнения примера предполагается наличие базы данных временных рядов с идентификатором «FC_GROUPS», содержащей групповой атрибут с идентификатором «ATTR_GROUP».

Imports Prognoz.Platform.Interop.Cubes;
Imports Prognoz.Platform.Interop.Rds;


Public Shared Sub Main(Params: StartParams);
Var
    mb: IMetabase;
    RubDesc: IMetabaseObjectDescriptor;
    Rub: IRubricator;
    RubrIn: IRubricatorInstance;
    Dic: IMetaDictionary;
    i: integer;
    key: System.Array;
    FactsLookup: IRubricatorFactsLookup;
    FactData: IRubricatorFactData;
    FactInfo: IMetaDictionaryDataInfo;
    Attr: IMetaAttribute;
    Memb: IMetaDataMember;
    MembGroup: IMetaDataMemberGroup;
    GroupRecord: IMetaDataMemberRecord;
Begin
    mb := Params.Metabase;
    RubDesc := mb.ItemById["FC_GROUPS"];
    Rub := RubDesc.Bind() As IRubricator;
// Получаем справочник показателей базы данных временных рядов
    Dic := (Rub.Facts As IMetabaseObject).Edit() As IMetaDictionary;
// Получаем групповой атрибут показателей   
    Attr := Dic.Attributes.FindById("ATTR_GROUP");
// Получаем массив ключей показателей   
    RubrIn := RubDesc.Open(NullAs IRubricatorInstance;
    FactsLookup := RubrIn.CreateFactsLookup();
    i := FactsLookup.LookupFactors().Length;
    key := New Integer[i];
    key := FactsLookup.LookupFactors();
    For Each i In key Do
        FactData := RubrIn.GetFactData(i As uinteger, DictionaryGetDataOptions.dgdoNone);
        FactInfo := FactData As IMetaDictionaryDataInfo;
        If FactInfo.IsAttributeActive(Attr) Then
            System.Diagnostics.Debug.WriteLine("Показатель: " + FactData.Mnemo);
            Memb := FactData.Record.Members.FindById(Attr.Id);
            MembGroup := Memb As IMetaDataMemberGroup;
            System.Diagnostics.Debug.WriteLine("  значение группового атрибута: " + MembGroup.SelfValue);
            GroupRecord := MembGroup.GroupRecord;
            System.Diagnostics.Debug.WriteLine("  доступность для редактирования: " + GroupRecord.IsEdited.ToString());
        End If;
    End For;
End Sub;

После выполнения примера в окно консоли будут выведены значение и доступность для редактирования группового атрибута для всех показателей, которые входят в группу.

См. также:

IMetaDictionaryDataInfo