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 |
Участник
|
Спасибо Вам буду проверять ....
|
|
|
|