1

我有两个自定义对象。父对象是一个Order,它有一个Part与之关联的类型列表。我试图Parts在一个字段中获取值为“Inventory Item”的列表,但仅针对特定的Order.

我有可用的name和数字internalIdOrder但问题是那些不是(据我所知)可搜索的“字段”,没有提供“internalId”来告诉它搜索其中一个。

在下面的代码中,如果我不包括在 Order 上搜索的尝试,它可以正常工作。我可以Parts通过一种“库存物品”获得所有物品。

我想我需要使用联合搜索?我的尝试如下。这会在运行时产生 SOAP 错误:

Additional information: org.xml.sax.SAXException: 'customizationRef' on
 {urn:common_2015_1.platform.webservices.netsuite.com}CustomSearchJoin is
 required

代码

private static SearchResult NetSuiteSearchOrderItems(NetSuiteService netSuiteService, string order_name, string order_internalId)
{
    CustomRecordSearch searchParts = new CustomRecordSearch();
    CustomRecordSearchBasic basicRecordSearchParts = new CustomRecordSearchBasic();
    basicRecordSearchParts.recType = new RecordRef { internalId = "64" }; //"Order Item" NetSuite Type ID

    //adding a search filter on a String Custom Field
    SearchStringCustomField partTypeFieldSearch = new SearchStringCustomField();
    partTypeFieldSearch.@operator = SearchStringFieldOperator.@is;
    partTypeFieldSearch.internalId = "896"; //ID of the Part object's "Type" field
    partTypeFieldSearch.operatorSpecified = true;
    partTypeFieldSearch.searchValue = "Inventory Item"; //only want inventory item parts


    //Show me only parts on a certain Order                           
    CustomSearchJoin orderSearchJoin = new CustomSearchJoin();
    CustomRecordSearchBasic orderBasicSearch = new CustomRecordSearchBasic();
    orderBasicSearch.recType = new RecordRef { internalId = "56" }; //"Order" NetSuite Type ID


    //--   WHAT GOES HERE INSTEAD OF SearchStringCustomField?

    //adding a search filter on a String Custom Field
    SearchStringCustomField fsoItemTypeSearch = new SearchStringCustomField();
    fsoItemTypeSearch.@operator = SearchStringFieldOperator.@is;
    fsoItemTypeSearch.internalId = "name"; //I have the "name" and numeric "internal id" of the order available.
    fsoItemTypeSearch.operatorSpecified = true;
    fsoItemTypeSearch.searchValue = order_name;//search filter value

    orderSearchJoin.searchRecordBasic = orderBasicSearch;

    //add in the things we want to search on
    basicRecordSearchParts.customFieldList = new SearchCustomField[] { partTypeFieldSearch };

    //add the basic search and join search and then perform the search
    searchParts.basic = basicRecordSearchParts;
    searchParts.customSearchJoin = new CustomSearchJoin[] { orderSearchJoin };
    SearchResult response = netSuiteService.search(searchParts);
    return response;
}
4

0 回答 0