|  03.08.2006, 12:54 | #1 | 
| Участник | Как получить имя типа расширенного типа 
			
			Как получить имя типа расширенного типа поля от которого создано поле таблицы....?
		 | 
|  | 
|  03.08.2006, 13:09 | #2 | 
| Участник | 
			
			Если я правильно понял вопрос   X++: DictField df = new DictField(tableNum(InventTable), fieldnum(InventTable, ItemId)); DictType dt; ; if (df.typeId()) { dt = new DictType(df.typeId()); if (dt) info(dt.Name()); } 
				__________________ Axapta v.3.0 sp5 kr2 | 
|  | |
| За это сообщение автора поблагодарили: qwertyx84 (1). | |
|  03.08.2006, 13:12 | #3 | 
| Участник | 
			
			Да но например есть поле оно имеет тип RefRecId этот тип порожден от RecId так вот результатом этой функции будет RecID а надо чтоб вернуло RefRecId.... | 
|  | 
|  03.08.2006, 13:13 | #4 | 
| Участник | 
			
			Эта функция есть в классе проверки кодов RecId но она возвращает лишь Самого первого родителя | 
|  | 
|  03.08.2006, 13:16 | #5 | 
| MCTS | 
			
			Ну вот была написана в своё время функция возвращающая тип поля из строковых имени таблицы и поля Дописал пару строк Код:     FieldId getFieldId(str tableName, str fieldName)
    {
        FieldId         fieldId;
        extendedTypeId           _type; //наш EDT
        DictField       dictField;
        TableId         tableId;
        ;
        tableId     = new SysDictTable(tableName2Id(tableName)).id();
        dictField   = new DictField(tableid, fieldName2Id(tableId, fieldName));
        fieldId     = dictField.id();
        _type     = dictField.typeId(); //наш EDT
        return      fieldId;
     }Код: DictTable_my   dt;
dt = new DictTable_my();
dt.getFieldId("SalesTable","SalesId");Дальше сам додумывай, что и как использовать Смотри семейство классов Dict* А вообще поиск по форуму иногда помогает помогает   
				__________________  В глухомани, в лесу Несмотря на красу Дни проводит Лиса Патрикевна. Я никак не пойму Отчего, почему Не пускают куму На деревню | 
|  | 
|  03.08.2006, 13:25 | #6 | 
| Участник | 
			
			У класса DictType есть метод  extend() - он возвращает предка для выбранного EDT. Т.е. X++: DictField df = new DictField(tableNum(Address), fieldnum(Address, RefZipCode)); DictType dt; ; if (df.typeId()) { dt = new DictType(df.typeId()); while (dt && dt.extend()) dt = new DictType(dt.extend()); if (dt) info(dt.Name()); } 
				__________________ Axapta v.3.0 sp5 kr2 | 
|  | 
|  03.08.2006, 13:26 | #7 | 
| Moderator | 
			
			2Velk Вы запускали 1-й джоб от AndyD? Он вернул "ItemId", так? А ведь у ItemId есть еще и папа ItemIdBase... Метод реально работает, в том числе и для RefRecId, что-то не так делаете. 2Russland: Ваш метод возвращает id поля, а не его тип, т.е. не то, что требуется. 
				__________________ Андрей. | 
|  | 
|  03.08.2006, 14:08 | #8 | 
| MCTS | 
			
			Метод действительно возращает fieldId Просто времени не было причесать его строки с комментарием наш EDT это то что я дописал "на ходу" вернул результат (смотрел в дебагере) 1577 что и есть SalesIdBase. ладно дописываем за строкой _type = dictField.typeId(); //наш EDT box::info(int2str(_type)) и смотрим что показывается в box::info :-) то что функция возращает смотреть не надо 
				__________________  В глухомани, в лесу Несмотря на красу Дни проводит Лиса Патрикевна. Я никак не пойму Отчего, почему Не пускают куму На деревню | 
|  | 
|  03.08.2006, 14:13 | #9 | 
| MCTS | 
			
			ключевой момент  dictField.typeId(); собственно AndyD уже успел ответить раньше меня то что я хотел сказать   
				__________________  В глухомани, в лесу Несмотря на красу Дни проводит Лиса Патрикевна. Я никак не пойму Отчего, почему Не пускают куму На деревню | 
|  | 
|  03.08.2006, 14:17 | #10 | 
| Участник | 
			
			Спасибо  Вам буду проверять ....
		 | 
|  | 
|  | 
| 
 |