如何通过SOAP SuiteTalk API获取NetSuite自定义段的选项值?
获取NetSuite自定义段选项值的正确方法
自定义段的选项值实际存储在**自定义列表(Custom List)**中,你之前的错误在于用错了查询对象类型,以下是可行步骤:
1. 获取自定义段关联的自定义列表ID
先通过Get请求获取目标自定义段的完整信息,响应里会包含customList字段,从中提取该列表的internalId或scriptId。比如T恤类型自定义段的响应片段:
<customSegment> <internalId>cseg_tshirt_type</internalId> <customList internalId="123" scriptId="customlist_tshirt_types"/> <!-- 其他基本信息 --> </customSegment>
2. 使用CustomListSearch查询选项值
构造CustomListSearch请求,指定目标自定义列表的ID,请求示例(简化SOAP结构):
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:platform="urn:core_2024_1.platform.webservices.netsuite.com" xmlns:list="urn:customization_2024_1.setup.webservices.netsuite.com"> <soapenv:Header> <!-- 你的认证头信息 --> </soapenv:Header> <soapenv:Body> <platform:search> <platform:searchRecord xsi:type="list:CustomListSearch"> <list:basic> <list:internalId operator="anyOf"> <platform:searchValue internalId="123"/> </list:internalId> </list:basic> </platform:searchRecord> </platform:search> </soapenv:Body> </soapenv:Envelope>
响应中会返回该自定义列表的customValue数组,每个元素包含选项的internalId(即你需要的id)和value(显示值),示例片段:
<customList> <internalId>123</internalId> <customValueList> <customValue> <internalId>456</internalId> <value>Polo</value> </customValue> <customValue> <internalId>457</internalId> <value>Crew Neck</value> </customValue> </customValueList> </customList>
错误原因说明
- 用
Custom Record Search报错是因为自定义段选项不属于自定义记录,而是自定义列表,对象类型不匹配导致INVALID_CSTM_RCRD_TYPE_KEY。 Get请求自定义段仅返回段本身的配置信息,不会自动拉取关联的列表选项数据,必须单独查询自定义列表。
内容的提问来源于stack exchange,提问作者ADrs
相关产品推荐
相关产品推荐

