【问题标题】:Passing a Dynamics enumeration in .NET to BusinessConnector call将 .NET 中的 Dynamics 枚举传递给 BusinessConnector 调用
【发布时间】:2012-06-13 07:53:24
【问题描述】:

我正在尝试了解如何访问动态枚举以便能够将它们传递给 BusinessConnector 调用。例如,您可以调用以下代码:

pobj = (AxaptaObject)ax.CreateAxaptaObject("PurchFormLetter", [ENUM]);

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

不幸的是,传入枚举的数值不起作用(在这种情况下,我需要的值是 2)。它返回一个 XPPException 'Function PurchQuantity::construct has been used wrong.'

AxaptaObject pobj = (AxaptaObject)ax.CreateAxaptaObject("PurchFormLetter", 2);

如果有人能提供帮助,我们将不胜感激。

问候, 史蒂夫

【问题讨论】:

  • 我手头没有代码,但我之前肯定在 .Net 中使用过 DocumentStatus::PurchaseOrder 符号进行比较。检查您是否包含,您的项目中可能缺少参考。

标签: axapta microsoft-dynamics business-connector


【解决方案1】:

Others 有同样的问题。他们通过创建enum proxy 找到了a solution

【讨论】:

  • 您好 Jan B,感谢您的链接。不幸的是,枚举代理仍然没有解决问题,而只是提供了一种动态方式来检索 int 值。
【解决方案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”)。然后,您可以使用此对象发布采购订单。

希望这对某人有所帮助。

问候, 史蒂夫

【讨论】:

    猜你喜欢
    • 2011-08-03
    • 1970-01-01
    • 1970-01-01
    • 2011-05-10
    • 1970-01-01
    • 1970-01-01
    • 2015-01-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多