1

ダイナミクス列挙型にアクセスしてこれらを BusinessConnector 呼び出しに渡す方法を理解しようとしています。たとえば、次のように呼び出すことができます。

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

しかし、[ENUM] の正しい値を渡す方法がわかりません。X++ では、enum は DocumentStatus::PurchaseOrder ですが、どこからでもアクセスできないようです。値を渡す方法を見つけるのを手伝ってくれる人はいますか?

残念ながら、列挙型の数値を渡すことはできません (この場合、必要な値は 2 です)。「関数 PurchQuantity::construct が正しく使用されていません」という XPPException を返します。

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

どなたかお役に立てれば幸いです。

よろしく、スティーブ

4

2 に答える 2

1

わかりました、これはこの問題に遭遇した他のすべての人のためのものです:

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」) を渡すことができます。その後、このオブジェクトを使用して発注書を転記できます。

これが誰かに役立つことを願っています。

よろしく、スティーブ

于 2012-06-14T00:28:12.190 に答える
1

の人も同じ問題を抱えています。そして、彼らはを作成することで解決策enum proxyを見つけました。

于 2012-06-13T08:41:37.510 に答える