1

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

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

我手动将采购订单信息输入到采购订单表中,这很好,但问题在于绑定采购表(PURCHTABLE)的是PurchID,而单个采购订单行(PURCHLINE)是PURCHID字段,保存采购订单时不会自动填充。

目前我是:

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

(ETC)

   axRecord.Insert();

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

任何帮助将不胜感激。

问候,史蒂夫

4

2 回答 2

2

我会改变表格的insert()方法:PurchTable

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

置于ttsbegin.

这是为了避免复杂的 C# 代码。您可能可以单独在 C# 代码中使用CallStaticClassMethodand cousins 来完成,但最好将业务逻辑放在 X++ 端。

请参阅如何:使用 .NET Business Connector 调用业务逻辑

于 2012-06-06T12:07:21.647 回答
0

一定要在TTSBegin/块内执行,否则你会得到类似这样的TTSCommit错误错误信息。

// 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");
于 2016-12-29T14:26:35.363 回答