У меня есть веб-сервис для моего приложения ASP.NET MVC 3, который создает новый заказ клиента в AX. В AX я создал класс OnlineOrder, который теперь имеет 1 метод. Он должен генерировать Справочник по продажам. Ниже приведен код в веб-службы:Не удается получить Axapta.CreateAxaptaObject() для работы
public AxaptaObject order;
public void CreateOrder()
{
AxaptaStart();
order = Axapta.CreateAxaptaObject("OnlineOrder");
AxaptaStop();
}
public string GetSalesRef(string username, string delivery, string reference)
{
AxaptaStart();
string number = order.Call("orderCreate", username, delivery, reference).ToString();
AxaptaStop();
return number;
}
Тогда в моем контроллере я называю эти методы:
client.CreateOrder();
string number = client.GetSalesRef(user.Username, order.deliverymethod, order.custorder).ToString();
Это не работает, и там нет информации исключение, чтобы показать, его просто пустой сообщение. Я считаю, что order
AxaptaObject не имеет тип OnlineOrder
, поэтому он не может назвать эти методы. Как создать экземпляр объекта для использования метода orderCreate
?
EDIT:
Если я:
public string CreateOrder(string username, string delivery, string reference)
{
AxaptaStart();
order = Axapta.CreateAxaptaObject("OnlineOrder");
string number = order.Call("orderCreate", username, delivery, reference).ToString();
AxaptaStop();
return number;
}
Это работает, но это не является правильным решением, поскольку я хотел бы добавить несколько методов к моему объекту OnlineOrder в будущем, и я не хочу называть их всех одним методом на моем веб-сервисе
Но это также потребовало бы, чтобы все это было в одном методе на моем веб-сервисе, не так ли? Как использовать один и тот же объект «порядка» в другом методе? – CallumVass
Нет, это не так. Объект 'order' может быть возвращен из метода оболочки, как в примере (или сохранен в переменной-члене). Все вызовы COM скрыты в вашем классе-оболочке, скрывая уродливые детали. Это также делает ваш код от вызывающего лица приятным (r). –