Источник:
http://blogs.msdn.com/b/axsupport/ar...erservice.aspx
==============
The code is an example of how to call the update method on sales order in AX 2012 using the SalesOrderService.
static void Main(string[] args)
{
//First find the order
AxdSalesOrder salesOrder = Program.FindOrder();
//Now update it
Program.UpdateOrder(salesOrder);
}
static AxdSalesOrder FindOrder()
{
CallContext context = new CallContext();
context.Company = "ceu";
string salesId = "SO-101244";
AxdSalesOrder foundSalesOrder = null;
//Instantiate an instance of the service client class
SalesOrderServiceClient proxy = new SalesOrderServiceClient();
try
{
foundSalesOrder = proxy.find(context, Program.createQueryCriteria(salesId));
Console.WriteLine("The sales order was found.");
}
catch (Exception e)
{
Console.WriteLine("The sales order was not found.");
}
return foundSalesOrder;
}
private static QueryCriteria createQueryCriteria(string salesIdValue)
{
CriteriaElement[] criteriaElements = new CriteriaElement[1];
criteriaElements[0] = new CriteriaElement();
criteriaElements[0].DataSourceName = "SalesTable";
criteriaElements[0].FieldName = "SalesId";
criteriaElements[0].Value1 = salesIdValue;
QueryCriteria queryCriteria = new QueryCriteria();
queryCriteria.CriteriaElement = criteriaElements;
return queryCriteria;
}
static void UpdateOrder(AxdSalesOrder salesOrder)
{
CallContext context = new CallContext();
context.Company = "ceu";
SalesOrderServiceClient proxy = new SalesOrderServiceClient();
foreach (AxdEntity_SalesTable salesTable in salesOrder.SalesTable)
{
foreach (AxdEntity_SalesLine salesLine in salesTable.SalesLine)
{
salesLine.SalesQty = salesLine.SalesQty + 1;
salesLine.SalesPrice = salesLine.SalesPrice + 2;
salesLine.SalesPriceSpecified = true;
}
}
try
{
proxy.update(context, Program.createEntityKeyList(), salesOrder);
Console.WriteLine("The sales order was successfully updated");
}
catch (Exception e)
{
Console.WriteLine("The sales order was not updated.");
}
}
private static EntityKey[] createEntityKeyList()
{
EntityKey[] entityKeyList = new EntityKey[1];
EntityKey entityKey = new EntityKey();
KeyField[] keyDataList = new KeyField[1];
KeyField keyField = new KeyField();
keyField.Field = "SalesId";
keyField.Value = "SO-101244";
keyDataList[0] = keyField;
entityKey.KeyData = keyDataList;
entityKeyList[0] = entityKey;
return entityKeyList;
}
Источник:
http://blogs.msdn.com/b/axsupport/ar...erservice.aspx