|
|
#1 |
|
Участник
|
Как получить имя типа расширенного типа
Как получить имя типа расширенного типа поля от которого создано поле таблицы....?
|
|
|
|
|
#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). | |
|
|
#3 |
|
Участник
|
Да но например есть поле оно имеет тип RefRecId
этот тип порожден от RecId так вот результатом этой функции будет RecID а надо чтоб вернуло RefRecId.... |
|
|
|
|
#4 |
|
Участник
|
Эта функция есть в классе проверки кодов RecId
но она возвращает лишь Самого первого родителя |
|
|
|
|
#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* А вообще поиск по форуму иногда помогает помогает
__________________
![]() В глухомани, в лесу Несмотря на красу Дни проводит Лиса Патрикевна. Я никак не пойму Отчего, почему Не пускают куму На деревню |
|
|
|
|
#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 |
|
|
|
|
#7 |
|
Moderator
|
2Velk
Вы запускали 1-й джоб от AndyD? Он вернул "ItemId", так? А ведь у ItemId есть еще и папа ItemIdBase... Метод реально работает, в том числе и для RefRecId, что-то не так делаете. 2Russland: Ваш метод возвращает id поля, а не его тип, т.е. не то, что требуется.
__________________
Андрей. |
|
|
|
|
#8 |
|
MCTS
|
Метод действительно возращает fieldId
Просто времени не было причесать его строки с комментарием наш EDT это то что я дописал "на ходу" вернул результат (смотрел в дебагере) 1577 что и есть SalesIdBase. ладно дописываем за строкой _type = dictField.typeId(); //наш EDT box::info(int2str(_type)) и смотрим что показывается в box::info :-) то что функция возращает смотреть не надо
__________________
![]() В глухомани, в лесу Несмотря на красу Дни проводит Лиса Патрикевна. Я никак не пойму Отчего, почему Не пускают куму На деревню |
|
|
|
|
#9 |
|
MCTS
|
ключевой момент
dictField.typeId(); собственно AndyD уже успел ответить раньше меня то что я хотел сказать
__________________
![]() В глухомани, в лесу Несмотря на красу Дни проводит Лиса Патрикевна. Я никак не пойму Отчего, почему Не пускают куму На деревню |
|
|
|
|
#10 |
|
Участник
|
Спасибо Вам буду проверять ....
|
|
|
|
|
|