通过.NET Business Connector获取新的PurchId

时间:2012-06-06 08:44:46

标签: dynamics-ax-2009 x++ axapta business-connector

我正在尝试为以下行找到.NET BusinessConnector等效调用:

PurchId = NumberSeq::newGetNum(SalesParameters::numRefSalesId()).num();

我手动将采购订单信息输入到采购订单表中,这很好,但问题在于PurchID与购买表(PURCHTABLE)和个别采购订单行(PURCHLINE)相关联的事实是PURCHID字段,在保存采购订单时不会自动填充。

目前我:

   ax.TTSBegin();
   axRecord.set_Field("ORDERACCOUNT", purchaseOrder.OrderAccount);

(等)

   axRecord.Insert();

但是,虽然这会将记录插入数据库,但它没有必须生成的purchID。您需要一个purchID来链接购买行项目。我找到了上面的代码(第二行)用于X ++,但有没有人知道可以使用的.NET BusinessConnector调用呢?

非常感谢任何协助。

此致 史蒂夫

2 个答案:

答案 0 :(得分:2)

我会在insert()表的PurchTable方法中进行更改:

if (!purchTable.PurchId)
    purchTable.PurchId = NumberSeq::newGetNum(purchParameters::numRefPurchId()).num();

放在ttsbegin

之后

这可以避免复杂的C#代码。您可能只能使用CallStaticClassMethod和cousins在C#代码中执行此操作,但最好将商务逻辑放在X ++端。

请参阅How to: Call Business Logic Using .NET Business Connector

答案 1 :(得分:0)

请务必在TTSBegin / TTSCommit块内执行,否则您将收到错误错误消息like this one

// ax is a reference to an "Axapta" business connector object
var numRef = ax.CallStaticRecordMethod("SalesParameters", "numRefSalesId");
var numSeq = (AxaptaObject)ax.CallStaticClassMethod("NumberSeq", "newGetNum", numRef);
var purchId = numSeq.Call("num");