如何清除NetSuite中记录的外部ID?

如何清除NetSuite中记录的外部ID?,netsuite,Netsuite,我需要清除/重置NetSuite中记录上的外部ID,但我所做的一切都不起作用 某些InventoryItem记录未正确映射到另一个系统中的记录。我有一个可以同步两个系统的应用程序,但我需要先清除NetSuite的外部ID 响应实际上不需要是特定于SOAP的。如果您知道如何使用某些特定的NetSuite/SuiteTalk客户机,这可能会为我指明正确的方向 我试过的 首先,我尝试使用nullFieldList。。。但也许它不起作用,因为externalId是一个属性,而不是一个元素 <mes

我需要清除/重置NetSuite中记录上的外部ID,但我所做的一切都不起作用

某些InventoryItem记录未正确映射到另一个系统中的记录。我有一个可以同步两个系统的应用程序,但我需要先清除NetSuite的外部ID

响应实际上不需要是特定于SOAP的。如果您知道如何使用某些特定的NetSuite/SuiteTalk客户机,这可能会为我指明正确的方向

我试过的 首先,我尝试使用nullFieldList。。。但也许它不起作用,因为externalId是一个属性,而不是一个元素

<messages:update>
    <messages:record internalId="7777" xsi:type="accounting:InventoryItem">
        <core:nullFieldList xsi:type="core:NullField">
            <core:name>externalId</core:name>
        </core:nullFieldList>
    </messages:record>
</messages:update>

外部的
外部ID只是一个字符串,所以我尝试将其设置为空。也不管用

<messages:update>
    <messages:record internalId="7777" xsi:type="accounting:InventoryItem">
        <accounting:externalId></accounting:externalId>
    </messages:record>
</messages:update>

我甚至尝试将外部ID设置为0,但返回了一个“非唯一标识符”错误


0
其他信息 我正在使用NetSuite的SOAP API v.2013\u 1

当我说“它不工作”时,我的意思是:在我完成更新后,我得到了类似以下的成功响应:

<readResponse>
    <platformCore:status isSuccess="true" xmlns:platformCore="urn:core_2013_1.platform.webservices.netsuite.com"/>
    <record internalId="7777" externalId="42" xsi:type="listAcct:InventoryItem" xmlns:listAcct="urn:accounting_2013_1.lists.webservices.netsuite.com">
        <!-- snip -->
    </record>
</readResponse>


不幸的是,我的理解是,一旦设置了externalid,就无法清除它,可以将它设置为另一个值,但不能返回null。我在使用SuiteScript和使用2014.1端点的Boomi过程中都经历过这种情况。这可能在最近的版本中有所改变,因为我最近没有使用SuiteScript或较新的端点尝试过它。

一旦设置了外部ID,就可以消除记录上的外部ID。下面是一个使用的示例:

以下是
update
对应的XML:

<env:Body>
  <platformMsgs:update>
    <platformMsgs:record xsi:type="listRel:Customer" platformMsgs:internalId="199113" platformMsgs:externalId=""/>
  </platformMsgs:update>
</env:Body>

如果您在netsuite中使用脚本,则可以通过加载每条记录并使用以下简单代码将externalid设置为“”来运行计划脚本以清除NS中的记录:

var rec= nlapiLoadRecord(type,id);
rec.setFieldValue('externalid','');
nlapiSubmitRecord(rec);

在我2015年2月的环境中,这似乎对我有效。

我以前也曾尝试过。我知道你描述的痛苦。最后,我在我的外部ID前面加了一个“-”,以断开系统之间的链接。您可以在SOAP中实现这一点,甚至可以作为一个简单的一次性csv上传。因为那是一次,我做了csv

我最后做的只是将外部ID设置为负值(我使用的所有ID都是正整数),这防止了任何冲突。它很容易自动化,也很容易检查。
<env:Body>
  <platformMsgs:update>
    <platformMsgs:record xsi:type="listRel:Customer" platformMsgs:internalId="199113" platformMsgs:externalId=""/>
  </platformMsgs:update>
</env:Body>
var rec= nlapiLoadRecord(type,id);
rec.setFieldValue('externalid','');
nlapiSubmitRecord(rec);