通过外部ID进行NetSuite API搜索

通过外部ID进行NetSuite API搜索,netsuite,Netsuite,我试图用NetSuite API搜索NetSuite供应商(NetSuite中可能存在也可能不存在);然而,我所掌握的关于供应商的唯一信息是externalId。我的目标是使用给定的externalId查询供应商的NetSuite,如果供应商存在,则在后续API调用中使用它。如果供应商不存在,我将创建它并使用我在后续API调用中刚刚创建的供应商。 尽管我进行了搜索,但仍然无法找到通过externalId在NetSuite中搜索记录的方法(我找到了许多通过字段进行搜索的方法;但是我还没有找到通过属

我试图用NetSuite API搜索NetSuite供应商(NetSuite中可能存在也可能不存在);然而,我所掌握的关于供应商的唯一信息是externalId。我的目标是使用给定的externalId查询供应商的NetSuite,如果供应商存在,则在后续API调用中使用它。如果供应商不存在,我将创建它并使用我在后续API调用中刚刚创建的供应商。
尽管我进行了搜索,但仍然无法找到通过externalId在NetSuite中搜索记录的方法(我找到了许多通过字段进行搜索的方法;但是我还没有找到通过属性(即externalId)进行搜索的方法)。
非常感谢您的帮助。

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

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

使用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

user5227543中的restlet代码对我有效,除了空检查之外,我还必须添加一个vendorList.length>0的检查:

var记录=(vendorList!=null&&vendorList.length>0)?nlapiLoadRecord('vendor',vendorList[0]。getId()):nlapiCreateRecord('vendor')

下面是c#的代码片段:(我使用了externalId数组,以防您需要多个)

1.创建多选字段搜索
SearchMultiSelectField字段=
新搜索字段
{
@运算符=SearchMultiSelectFieldOperator.anyOf,
运算符指定为true
};
var itemList=新列表();
foreach(externalId中的var externalId)
{
var recRef=new com.netsuite.webservices.RecordRef
{
externalId=externalId
};
itemList.Add(recRef);
}           
field.searchValue=itemList.ToArray();
var basic=newtransactionsearchbasic{externalId=field};
2.服务上的呼叫搜索功能:
NetSuiteService服务;//使用netsuite creds实例化
SearchResult=service.search(选择search);
列表事务=新列表();
如果(结果?.status?.isSuccess?错误)
{

对于(int i=1;i),这对我不起作用。它抛出:错误代码:SSS_INVALID_SRCH_FILTER错误消息:nlobjSearchFilter包含无效的搜索条件:externalid。我缺少什么?我知道externalid被认为是一个“属性”而不是“字段”,但文档几乎没有提到externalid的其他内容。@RonNewcomb我也是。我得到:{“error”:{“code”:“SSS_INVALID_SRCH_OPERATOR”,“message”:“nlobjSearchFilter包含无效的运算符,或者语法不正确:externalid。”}}我的问题是,我的参数名为externalId,但我使用的是dataIn.externalId。它现在可以工作了。我在2016.1版的API中使用了相同的代码,但我得到了一个错误状态,statusDetail显示为“INVALID_KEY_或_REF”(“指定的键无效”).有什么想法吗?我提供的externalId是一个GUID字符串,远低于externalId的255个字符限制。
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