Axapta 将.NET中的动态枚举传递给BusinessConnector调用

Axapta 将.NET中的动态枚举传递给BusinessConnector调用,axapta,microsoft-dynamics,business-connector,Axapta,Microsoft Dynamics,Business Connector,我试图了解如何访问dynamics枚举,以便能够将这些枚举传递到BusinessConnector调用中。例如,您可以调用以下命令: pobj = (AxaptaObject)ax.CreateAxaptaObject("PurchFormLetter", [ENUM]); 但是,我不知道如何传入[ENUM]的正确值。在X++中,枚举是DocumentStatus::PurchaseOrder,但我似乎无法从任何地方访问它。任何人都可以帮助找出如何传递值吗 不幸的是,传入枚举的数值不起作用(在

我试图了解如何访问dynamics枚举,以便能够将这些枚举传递到BusinessConnector调用中。例如,您可以调用以下命令:

pobj = (AxaptaObject)ax.CreateAxaptaObject("PurchFormLetter", [ENUM]);
但是,我不知道如何传入[ENUM]的正确值。在X++中,枚举是DocumentStatus::PurchaseOrder,但我似乎无法从任何地方访问它。任何人都可以帮助找出如何传递值吗

不幸的是,传入枚举的数值不起作用(在本例中,我需要的值是2)。它返回“函数PurchQuantity::construct已被错误使用”的XPPException

AxaptaObject pobj = (AxaptaObject)ax.CreateAxaptaObject("PurchFormLetter", 2);
如果有人能提供帮助,我们将不胜感激

问候,,
史蒂夫也有同样的问题。通过创建
枚举代理

他们发现,好的,这适用于遇到此问题的所有其他人:

如果希望完全不使用X++从.NET访问枚举值,请执行以下操作:

string enumName = "DocumentStatus", enumValue = "PurchaseOrder";
object enumObj = (int)axa.CallStaticClassMethod("Global", "enumName2Id", enumName);
AxaptaObject dict = (AxaptaObject)axa.CreateAxaptaObject("DictEnum", enumObj);
object res = dict.Call("symbol2Value", enumValue);
如果需要重用,可以很容易地将上述内容制作成一个函数

不过,执行以下操作是行不通的:

AxaptaObject pur = (AxaptaObject)axa.CreateAxaptaObject("PurchFormLetter", res);
但是,您可以这样做:

AxaptaObject pur = (AxaptaObject)axa.CallStaticClassMethod("PurchFormLetter", "construct", res);
这将允许您传入枚举的整数值(在本例中为变量“res”)。然后,您可以使用此对象发布采购订单

希望这对别人有帮助

问候,,
Steve

我手头没有代码,但我之前肯定使用了.Net中的DocumentStatus::PurchaseOrder符号进行比较。检查您的内容,您的项目中可能缺少一个参考。嗨,Jan B,谢谢链接。不幸的是,枚举代理仍然没有解决这个问题,只是提供了一种动态方法来检索int值。