NetSuite SuiteTalk Java SDK v2023_1:如何在商品搜索结果中填充pricingMatrix?
解决NetSuite SuiteTalk Java SDK获取商品时pricingMatrix字段未填充的问题
NetSuite SuiteTalk默认仅返回商品的基础字段,像pricingMatrix这类复杂嵌套字段需要显式配置请求才能获取,具体操作如下:
1. 配置搜索偏好(SearchPreferences)
默认情况下,SearchPreferences的bodyFieldsOnly属性为true,仅返回基础主体字段。需要将其设置为false,以允许SDK返回复杂字段:
// 初始化或获取现有搜索偏好 SearchPreferences searchPrefs = client.getSearchPreferences(); if (searchPrefs == null) { searchPrefs = new SearchPreferences(); } // 关闭仅返回基础body字段的限制 searchPrefs.setBodyFieldsOnly(false); // 启用返回指定的搜索列 searchPrefs.setReturnSearchColumns(true); // 应用配置到客户端 client.setSearchPreferences(searchPrefs);
2. 在搜索对象中显式指定要返回的pricingMatrix字段
需要在ItemSearchBasic中添加pricingMatrix作为要返回的搜索列,告诉NetSuite需要获取该字段数据:
ItemSearchBasic itemSearchBasic = new ItemSearchBasic(); // 添加pricingMatrix字段到返回列集合 SearchColumnSelectField pricingMatrixCol = new SearchColumnSelectField(); itemSearchBasic.setPricingMatrix(new SearchColumnSelectField[]{pricingMatrixCol}); try { SearchResult searchResult = client.callSearch(itemSearchBasic); final String jobId = client.getLastJobId(); processCatalogSearchResult(searchResult, catalogRecords); } catch (RemoteException e) { throw new NetsuiteServiceException("Error while searching for catalog items", e); }
额外注意事项
- 若使用分页查询,需确保每一次搜索请求都应用了上述搜索偏好配置,避免会话中偏好重置导致字段丢失。
- 确认目标商品确实配置了价格矩阵数据,无数据的商品该字段自然不会返回。
- 检查当前NetSuite角色是否拥有
pricingMatrix字段的访问权限,权限不足会导致字段无法被检索。
内容的提问来源于stack exchange,提问作者Hirantha Rathnayake
相关产品推荐
相关产品推荐

