我正在尝试获取与采购订单相关的所有商品。我已在UI中创建了已保存的搜索,但我需要传递PO的内部ID以获取正确的项目列表。我尝试在suitecript中执行此操作,但我找不到Item的正确连接表?看着记录浏览器,我找不到项目。这不可能吗?
var poItemSearch = search.create({
type: 'transaction',
filters : [
search.createFilter({
name : 'type',
operator : search.Operator.IS,
values : 'Purchase Order'
}),
search.createFilter({
name : 'internalid',
operator : search.Operator.ANYOF,
values : poID
}),
search.createFilter({
name : 'item',
join : 'item',
operator : search.Operator.IS,
values : 'Inventory Item'
})
],
columns: [
search.createColumn({name : 'item'})
//search.createColumn({name : 'email', join : 'custrecord_sdr_prod_pref_customer'}),
//search.createColumn({name : 'subsidiary', join: 'custrecord_sdr_prod_pref_customer'}),
//search.createColumn({name : 'custrecord_sdr_prod_pref_item'}),
//search.createColumn({name : 'custrecord_sdr_prod_pref_qty'}),
//search.createColumn({name : 'quantityavailable', join: 'custrecord_sdr_prod_pref_item'})
]
});
我收到错误,该项不是加入的选项。我只是用错了名字吗?
否则,如何在现有已保存的搜索中添加过滤器?我可以这样做,只是在采购订单内部ID上过滤我的搜索结果。
答案 0 :(得分:3)
item
应该是join
的正确名称,但我不认为它是过滤器name
的正确名称。您似乎试图在itemtype
上进行过滤,但我不确定它是"Inventory Item"
还是"inventoryitem"
。
令人费解的是,item
未在记录浏览器中列为联接。例如,这在控制台中运行时效果很好:
require(["N/search"], function (search) {
var purchaseorderSearchObj = search.create({
type: "purchaseorder",
filters: [
["type","anyof","PurchOrd"]
],
columns: [
search.createColumn({
name: "itemid",
join: "item"
})
]
});
purchaseorderSearchObj.run().each(function(result){
console.log(result.getValue({"name":"itemid","join":"item"}));
return true;
});
});
BTW我通过在用户界面中创建了一个已保存的搜索来生成此代码,然后使用此Chrome插件将其导出到代码:https://chrome.google.com/webstore/detail/netsuite-search-export/gglbgdfbkaelbjpjkiepdmfaihdokglp?hl=en这是一个非常有用的工具。