朋友们正在使用NetSuite和SuiteScript。我可以保存运行脚本的采购订单,还可以收取已创建的采购订单,但是当我将返回数据项值作为空值时,我需要获取该项目的ID。
结果给我的日志NetSuite是:
采购订单编号:3706供应商ID:144货号:null Trandate:06/08/2015表格:标准采购订单货币:Peso CL
这发生在所有采购订单中,显然如果您有附加物品。
加载javascript以使用Purchase Order的功能如下:
function loadPurchaseOrder(){
nlapiLogExecution('DEBUG','loadPurchaseOrder', 'Entra a funcion loadPurchaseOrder');
//se aplican filtros para la busqueda del objeto
var filters= new Array();
filters[0] = new nlobjSearchFilter('purchaseorder',null,'isnotempty');
filters[1] = new nlobjSearchFilter('mainline', null, 'is', 'T');
//seleccion de los campos que se quieren extraer
var columns = new Array();
columns[0] = new nlobjSearchColumn('item');
columns[1] = new nlobjSearchColumn('entity');
columns[2] = new nlobjSearchColumn('trandate');
columns[3] = new nlobjSearchColumn('customform');
columns[4] = new nlobjSearchColumn('currency');
columns[5] = new nlobjSearchColumn('internalid');
var results = nlapiSearchRecord('purchaseorder',null,filters,columns);
var out = "";
if(results != null ){
for(var i=0; i< results.length; i++){
var purchaseOrder = results[i];
var idItem = purchaseOrder.getValue('item');
var idVendor = purchaseOrder.getValue('entity');
var trandate = purchaseOrder.getValue('trandate');
var form = purchaseOrder.getText('customform');
var currency = purchaseOrder.getText('currency');
var idPurchaseOrder = purchaseOrder.getText('internalid');
out = " ID Purchase Order: " + idPurchaseOrder + " ID Vendor: " + idVendor + " ID Item: " + idItem
+ " Trandate: " + trandate + " Form: " + form + " Currency: " + currency;
nlapiLogExecution('DEBUG','purchaseOrderCargada', out);
}
}
return out;
}
如果有人可以帮助我。问候!
PD:
我也试过了:
var idItem = nlapiGetLineItemField('item','item');
并且它不起作用= /
答案 0 :(得分:7)
这可能是一个比你预期的更长的答案,但我们走了。
NetSuite将交易记录(采购订单是一种交易)划分为正文和行项目字段。当您执行包含mainline = 'T'
的事务搜索时,您告诉NetSuite仅检索Body字段数据。但是,item
字段是行项目字段,因此NetSuite不会为其返回任何数据。这就是idItem
为null
的原因。
了解mainline
过滤器的行为对于事务搜索至关重要。基本上,它是这样的:
mainline = 'T'
只会返回正文字段数据,因此每个事务只返回一个搜索结果mainline = 'F'
只会返回订单项数据,因此会在匹配的交易中为每个订单项返回一个搜索结果mainline
将返回正文字段和行数据,因此它将为每个事务本身返回一个结果,并为每个事务的每一行返回一个结果。这是一个具体的例子。我们假设系统中只有一个采购订单与您的所有其他搜索过滤器(mainline
除外)匹配,并且该采购订单上有三个项目。这是搜索结果将根据mainline
过滤器更改的方式:
mainline = 'T'
那么您将获得采购订单的一个结果,并且您将只获取作为正文字段的搜索列的数据。mainline = 'F'
那么您将获得完全三个结果,每个订单项一个,并且所有搜索列都将包含数据,无论它们是正文还是行字段mainline
,那么您将获得四个结果,其中一个仅包含Body字段的数据,其他三个将包含Line和Body数据< / LI>
很难就您应该如何更改搜索提出建议,因为我不知道您打算如何处理这些搜索结果。