Получение I, II и III уровней УТС

Автор Александр Волков, 22.03.16, 13:15:45

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Александр Волков

Не могу понять, как получить I, II и III уровень УТС.



var AGroup : IBOGroupCom;
      AClass : IBORootClassCom;
      AClass_Item : IBOClassCom;

//Получаю группу (i – индекс в цикле по группам)
AGroup := UniReference.BOListGroup.Items;
//Получаю справочник в группе (j – индекс в цикле по справочникам в группе)
AClass := AGroup.RootClassByIndex(j);
//Получаю интерфейс на класс
AClass_Item := AClass.Items;

Дальше мне надо узнать I, II и III уровни справочника, но я не нашел функцию получения этих уровней из IBOClassCom.
Свойство Items – интерфейс IAttrClassCom.


KlimTV1987

Добрый день.

Занимаюсь сейчас этим же вопросом. Непонятно, как рекурсивно перебрать справочник. Раз Вы разобрались, может поделитесь кодом или хотя бы сутью, какие коллекции и как использовать?

KlimTV1987

Всем доброго дня.

Техподдержка помогла примером, концепция стала понятна. Вот пример, слегка изменённый:

        private static void GetSprOperations(UniReference.UniRefer uniref)
        {
            // коллекция бизнес-объектов
            UniReference.BOListObjectCom boList = uniref.BOListObject();
            // интерфейс корневого объекта по имени класса NameClass
            UniReference.BOObjectCom boRoot = boList.GetRootObject("OPER.OPER");
            // коллекция дочених бизнес-объектов
            boRoot.GetChildCollectionObject(false, false, false);
            for (int i = 0; i < boRoot.CountChildObjects; i++)
            {
                UniReference.IBOObjectCom boFirst = boRoot.ChildObjects;
                UniReference.BOAttributeCollectionCom firstCollection = boFirst.Attributes();

                boFirst.GetChildCollectionObject(false, false, false);
                for (int j = 0; j < boFirst.CountChildObjects; j++)
                {
                    UniReference.IBOObjectCom boSecond = boFirst.ChildObjects[j];
                    boSecond.GetChildCollectionObject(false, false, false);
                    for (int k = 0; k < boSecond.CountChildObjects; k++)
                    {
                        UniReference.IBOObjectCom boThird = boSecond.ChildObjects[k];                       
                        UniReference.BOAttributeCollectionCom thirdCollection = boThird.Attributes();

                        UniReference.AttrObjectCom vrtclass = firstCollection.AttrObjectByNameAttr("VRTCLASS");
                        Console.WriteLine("VRTCLASS" + "\t" + vrtclass.DataAttr + "\t" + vrtclass.NameScreen);
                        UniReference.AttrObjectCom guid = thirdCollection.GetAttrKeyObject();
                        Console.WriteLine("GUID" + "\t" + guid.DataAttr + "\t" + guid.NameScreen);
                        UniReference.AttrObjectCom cod = thirdCollection.AttrObjectByNameAttr("KOD");
                        Console.WriteLine("KOD" + "\t" + cod.DataAttr + "\t" + cod.NameScreen);
                        UniReference.AttrObjectCom name = thirdCollection.AttrObjectByNameAttr("NAME");
                        Console.WriteLine("NAME" + "\t" + name.DataAttr + "\t" + name.NameScreen);
                        UniReference.AttrObjectCom iot = thirdCollection.AttrObjectByNameAttr("NUM_IOT");
                        Console.WriteLine("NUM_IOT" + "\t" + iot.DataAttr + "\t" + iot.NameScreen);
                    }
                }
            }
        }

+ Благодарностей: 1