朋友正在使用NetSuite和SuiteScript。我可以保存一个运行脚本的采购订单,也可以对创建的采购订单收费,但是当我将数据项值作为空值返回时,我需要获得项目的id。
结果给我NetSuite日志是:
采购订单ID: 3706供应商ID: 144商品ID: null日期:06/08/2015格式:标准采购订单货币:比索CL
这发生在所有的采购订单,如果你有一个附加的项目。
函数加载javascript使用采购订单如下:
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');
不工作=/
这个答案可能比你想象的要长,但是我们开始吧。
NetSuite将事务记录(采购订单是一种事务类型)划分为Body和Line Item字段。当您执行包含mainline = 'T'
的事务搜索时,您告诉NetSuite只检索Body字段数据。然而,item
字段是一个Line Item字段,因此NetSuite不会为它返回任何数据。这就是为什么idItem
是null
。
理解mainline
过滤器的行为对事务搜索至关重要。基本上,它是这样的:
-
mainline = 'T'
将只返回主体字段数据,因此它将返回每个事务恰好一个搜索结果 -
mainline = 'F'
将只返回行项目数据,因此它将返回一个搜索结果,每个行项目匹配交易 - 未指定的
mainline
将返回body字段和行数据,因此它将为每个事务本身返回一个结果,并为每个事务的每行返回一个结果。
这里有一个具体的例子。假设系统中只有一个Purchase Order与所有其他搜索过滤器(除了mainline
)匹配,并且该Purchase Order上有三个项目。以下是基于mainline
过滤器的搜索结果的变化方式:
- 如果
mainline = 'T'
,那么你将得到一个确切的采购订单结果,你只会得到数据的搜索列是主体字段。 - 如果
mainline = 'F'
,那么你将得到正好三个结果,每个行项一个,所有的搜索列将包含数据,无论它们是Body还是line字段 - 如果没有指定
mainline
,那么你将得到恰好四个结果,其中一个将只包含Body字段的数据,而其他三个将包含Line和Body数据