NetSuite记录的'ID'和'Internal ID'之间有什么区别?

NetSuite记录的'ID'和'Internal ID'之间有什么区别?,netsuite,Netsuite,根据弹出的帮助: 身份证 此字段的值表示用于标识此字段的脚本ID 记录用于脚本编写。它是一个文本字段 内部ID 此字段的值是只读系统生成的唯一标识符。 它是一个整数字段 这两个字段似乎唯一标识了一个记录类型 一个是字符串,一个是整数 字符串ID用于搜索和 加载记录,但我也看到了内部ID在 从列表的角度引用记录类型 有谁能提供在编写脚本时使用两个标识符以及何时使用一个标识符与另一个标识符的原因吗?主要区别在于您(作为自定义记录或脚本的创建者)完全控制文本ID。您可以建立定义这些ID的模式和最佳

根据弹出的帮助:

身份证

此字段的值表示用于标识此字段的脚本ID 记录用于脚本编写。它是一个文本字段

内部ID

此字段的值是只读系统生成的唯一标识符。 它是一个整数字段

  • 这两个字段似乎唯一标识了一个记录类型
  • 一个是字符串,一个是整数
  • 字符串
    ID
    用于搜索和 加载记录,但我也看到了
    内部ID
    在 从列表的角度引用记录类型

有谁能提供在编写脚本时使用两个标识符以及何时使用一个标识符与另一个标识符的原因吗?

主要区别在于您(作为自定义记录或脚本的创建者)完全控制文本ID。您可以建立定义这些ID的模式和最佳实践,开发人员只需查看字符串ID就可以很容易地识别记录类型。您无法控制数字ID。查看代码时,我更容易确定所指的记录,如果它看起来像:

nlapiSearchRecord('customrecord_product', null, filters, columns);
nlapiResolveURL('SUITELET', 'customscript_sl_orderservice', 'customdeploy_sl_orderservice')
而不是看:

nlapiSearchRecord(118, null, filters, columns);
nlapiResolveURL('SUITELET', 13, 1)
我甚至不确定第二个
nlapisarchrecord
是否真的有效,但我知道
nlapisolveurl
可以这样编写

这就是说,如果您只是让NetSuite生成文本ID,您将得到像customrecord1这样的通用ID,我发现它没有数字ID有用。明确指定您自己的ID是一个很好的做法

此外,数字ID可能因环境而异(例如,沙箱可能不同于生产环境,直到发生后续刷新)。如果您遵循的是良好的迁移实践,那么文本ID在不同的环境中不应该有所不同,这样您的代码就不必根据环境来决定使用哪个ID


我发现自己很少通过数字ID引用任何记录,无论是本地记录还是自定义记录;脚本总是使用文本ID引用记录类型。

您知道suitescript会在什么时候强制我引用记录类型吗,在文本版本上使用数字ID?我不知道有哪种情况会迫使您使用数字ID。我唯一能想到的情况是,如果您手动生成Suitelet/RESTlet的URL,而不使用
nlapiResolveURL
,但我也不知道您为什么需要这样做。我从未发现NetSuite在引用记录类型时不允许我使用字符串ID的情况。