NetSuite SuiteTalk SOAP Api:仅更新记录上的某些字段

NetSuite SuiteTalk SOAP Api: Update Certain Fields ONLY on a Record

我们在更新 NetSuite 销售订单时遇到了问题(特别是我们正在更新自定义字段),但我们甚至没有在代码中明确写入一些只读字段。

我们检索订单,更新自定义字段,然后调用 WriteResponse rc = this.nsPort.update(order);,其中 order 是由 internalIDnsPort 拉取的 SalesOrder 的实例是 NetSuitePortType 的实例。调用 update() 失败并出现异常:

java.lang.Exception: You do not have permissions to set a value for element subtotal
due to one of the following reasons: 1) The field is read-only; 2) An associated feature
is disabled; 3) The field is available either when a record is created or updated, but 
not in both cases.

哪个字段是只读的在这里并不重要,重要的是我们(无意中)发回涉及只读字段的更新。

令我印象深刻的是,我们最好 发送写入 我们感兴趣的自定义字段的更新。

有没有办法从 NetSuite 中提取一条记录,然后仅更新某些字段?或者有没有办法在我们调用 update()?

时通知 SuiteTalk 仅更新某些字段

如果您只想更新某些字段,请仅将那些您想要更新的字段与 internalId 一起发送。例如,要仅更新备忘录和销售订单上的自定义字段,请使用 (in python):

sales_order = soap.sales.SalesOrder(
    internalId=12,
    memo='I updated the memo, but I did not shoot the deputy',
    customFieldList=soap.core.CustomFieldList(customField=[
        soap.core.CustomString(scriptId='custbody_memo', value='I also did not shoot the deputy'),
    ])
)
soap.update(sales_order)

这将生成一个 xml,其中仅包含 internalIdmemo 自定义正文备注字段。 Netsuite 只会更新 soap 消息中包含的那些字段。