По-моему, не нужно ничего переделывать в методе
valueFromXMLNode.
Вот рабочий код вашей джобы, которая в Axapta 3 "ведет" себя так же, как вы описали относительно AX 2009:
X++:
static void test(Args _args)
{
xmlNode xmlNode;
xmlDocument xmlDocument;
struct content;
SalesType SalesType;
;
xmlDocument = new xmlDocument();
xmlNode = xmlDocument.createNode(xmlNodeType::ELEMENT, "test", "");
xmlNode.text(int2str(SalesType::Sales));
SalesType = global::valueFromXMLNode(Types::Integer, xmlNode).value("value");
info(strFmt("%1", SalesType));
}
ИМХО:
1)
enum2int(SalesType::Sales) - метод
enum2int применять необязательно, в 3-ей аксапте я его вовсе не нашел. По идее сам элемент enum'а - это уже целое число.
2) valueFromXMLNode(
Types::Enum, xmlNode).value("value") - значение enum'a, как уже говорилось - целое число, поэтому в параметре метода
valueFromXMLNode нужно указать
Types::Integer вместо
Types::Enum.