通过externalId搜索NetSuite API

时间:2014-06-10 15:24:33

标签: netsuite

我正在尝试使用NetSuite API搜索NetSuite供应商(可能存在或不存在于NetSuite中);但是,我对供应商的唯一信息是externalId。我的目标是使用给定的externalId查询供应商的NetSuite,如果供应商存在,则在后续的API调用中使用它。如果供应商不存在,我将创建它并使用我刚刚在后续API调用中创建的供应商 尽管我进行了搜索,但我还是找不到通过externalId搜索NetSuite记录的方法(我发现了很多方法可以通过Field搜索;但是我找不到通过属性搜索的方法,即externalId)。 任何帮助表示赞赏。

4 个答案:

答案 0 :(得分:6)

经过进一步的研究和一点帮助后,我发现了如何通过externalId进行搜索。希望这对未来的人有用:

使用php: 创建一个新的GetRequest()对象和一个新的RecordRef()对象 将RecordRef的externalId设置为所需的外部ID 将RecordRef的类型设置为“vendor” 将GetRequest的baseRef设置为刚刚创建的RecordRef 使用NetSuite客户端执行get()方法,传递先前创建的GetRequest()对象。 get()方法将返回一个GetResponse(),其中包含有关搜索的信息(以及对象(如果存在))。

$getRequest = new \NetSuite\WebServices\GetRequest();
$recordRef = new \NetSuite\WebServices\RecordRef();
$recordRef->externalId = "theExternalIdGoesHere";
$recordRef->type = "vendor";
$getRequest->baseRef = $recordRef;
$response = $client->get($getRequest);

答案 1 :(得分:3)

使用Restlet

var vendorFilter = [];
vendorFilter.push(new nlobjSearchFilter('externalid',null,'is',dataIn.externalid);


var vendorList = nlapiSearchRecord('vendor',null,vendorFilter,null);

var record = (vendorList!=null) ? nlapiLoadRecord('vendor',vendorList[0].getId()) : nlapiCreateRecord('vendor');

// process your logic

答案 2 :(得分:1)

这是c#的代码段:(我使用了externalId数组,以防万一你需要多个)

1。创建多选字段搜索

SearchMultiSelectField field =
new SearchMultiSelectField
{
    @operator = SearchMultiSelectFieldOperator.anyOf,
    operatorSpecified = true
};

var itemList = new List<com.netsuite.webservices.RecordRef>();
foreach (var externalId in externalIds)
{
    var recRef = new com.netsuite.webservices.RecordRef
    {
        externalId = externalId
    };
    itemList.Add(recRef);
}           

field.searchValue = itemList.ToArray();

var basic = new TransactionSearchBasic {externalId = field};

2。在服务上调用搜索功能:

NetSuiteService service; // Instantiate with netsuite creds
SearchResult results = service.search(selectSearch);

List<Record> transactions = new List<Record>();

if (results?.status?.isSuccess ?? false)
{
    for (int i = 1; i <= results.totalPages; i++)
    {
        var recordList = results.recordList;
        transactions.AddRange(recordList);
    }
}
else if (results?.status != null)
{
    this.log.Debug(GetStatusDetails(results.status));
}
else
{
    this.log.Debug("Failed to recieve results");
}

return transactions;

答案 3 :(得分:0)

来自user5227543的restlet代码对我有用,除了我必须添加对vendorList.length&gt; 0的检查以及空检查:

  

var record =(vendorList!= null&amp;&amp; vendorList.length&gt; 0)? nlapiLoadRecord(&#39; vendor&#39;,vendorList [0] .getId()):nlapiCreateRecord(&#39; vendor&#39;);