【问题标题】:How can I clear an external ID on a record in NetSuite?如何清除 NetSuite 记录中的外部 ID?
【发布时间】:2014-08-01 21:06:45
【问题描述】:

我需要在 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,但返回“非唯一标识符”错误

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

其他信息

我正在使用 NetSuite 的 SOAP API v.2013_1

当我说“它不起作用”时,我的意思是:在我执行 update 之后,我会收到类似于以下内容的 success 响应:

<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>

【问题讨论】:

    标签: netsuite


    【解决方案1】:

    如果您在 netsuite 中使用脚本,您可以运行预定脚本来清除 NS 中的记录,方法是加载每条记录并将 externalid 设置为 '',使用以下简单代码:

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

    这在我 2015.2 的环境中似乎对我有用。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 我最终所做的只是将外部 ID 设置为负值(我使用的所有 ID 都是正整数),这样可以防止任何冲突。它易于自动化且易于检查。
      【解决方案3】:

      一旦设置了记录,您就可以消除记录中的 externalId。这是使用NetSuite gem 的示例:

      ns_customer = NetSuite::Records::Customer.get external_id: 'ext_id'
      ns_customer.external_id = ''
      ns_customer.update
      

      这是update 对应的 XML:

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

      【讨论】:

        【解决方案4】:

        我以前也曾尝试过。我知道你描述的痛苦。我最终在我的外部 ID 前面加上了一个“-”,以取消它在我的系统之间的链接。您可以在 SOAP 中执行此操作,甚至可以通过简单的一次性 csv 上传来执行此操作。因为有一次,我做了 csv。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2022-08-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-03-30
          • 2017-01-29
          • 1970-01-01
          相关资源
          最近更新 更多