Передача перечисления Dynamics в.NET вызову BusinessConnector

Я пытаюсь понять, как получить доступ к динамическим перечислениям, чтобы иметь возможность передавать их в вызовы BusinessConnector. Например, вы можете позвонить по следующему адресу:

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

Но я понятия не имею, как передать правильное значение [ENUM]. В X++ перечислением является DocumentStatus::PurchaseOrder, но я, кажется, не могу получить к нему доступ из любого места. Может ли кто-нибудь помочь выяснить, как передать значение?

К сожалению, передача числового значения перечисления не работает (в данном случае мне нужно значение 2). Он возвращает XPPException "Функция PurchaseQuantity:: конструкция была использована неправильно."

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

Если кто-нибудь может быть полезным, это будет очень ценно.

С уважением, Стив

2 ответа

Решение

Хорошо, это для всех, кто сталкивается с этой проблемой:

Если вы хотите получить доступ к значениям перечисления из.NET исключительно без использования X++:

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'). Затем вы можете использовать этот объект для публикации заказа на покупку.

Надеюсь, это кому-нибудь поможет.

С уважением, Стив

У других такая же проблема. И они нашли решение, создав enum proxy,

Другие вопросы по тегам