我正在尝试从另一种类型获得价值。我主要保存的搜索类型为“交易”,而我有一个自定义记录类型为“入站运输”。当我尝试进行“事务保存”搜索时,看不到“入库”字段。但是显然,这两种类型的值都相同,即“ PO”。我知道这些字段名称不同,但是值相同。这是我要在“事务”类型中显示“外部文档编号”的东西,它与“入库”类型具有相同的采购订单。
var po = 'tranid'
var mySearch = search.create({
type: "transaction",
columns: [
search.createColumn({
name: 'externaldocumentnumber', //Container#
join: 'inboundshipment'
}),
search.createColumn({
name: 'purchaseorder', //PO
join: 'inboundshipment'
}),
],
filters: [
search.createFilter(
{
name: 'purchaseorder', //PO
join: 'inboundshipment',
operator: search.Operator.ANYOF,
values: po
}
),
search.createFilter(
{
name: po //PO
operator: search.Operator.NONEOF,
values: ['@NONE@']
}
),
]
});
Netsuite不对值进行SQL样式联接。 Netsuite使用N / search进行联接的唯一类型是通过“列表/记录”或“多选类型”字段将一种记录类型与另一种记录类型相关联。
您可以在自定义记录或交易中设置该自定义字段。在这两种情况下,联接值都将是列表/记录定制字段的脚本ID。
NetSuite中有一个名为SuiteQL的新功能,它是基于SQL-92的NS查询语言。您可以执行“保存的搜索”中无法执行的联接。目前,SuiteQL可使用N /查询模块使用,并且仍处于REST Web服务的beta中。
下面是SuiteQL的用法示例:
var suiteQL = "SELECT * FROM transactions t WHERE id IN (SELECT id FROM transactions WHERE id = t.id UNION SELECT -1 FROM transactions)"
var resultIterator = query.runSuiteQLPaged({
query: suiteQL,
pageSize: 10
}).iterator()
resultIterator.each(function(page) {
var pageIterator = page.value.data.iterator();
pageIterator.each(function(row) {
log.debug('ID: ' + row.value.getValue(0) + ', Context: ' + row.value.getValue(1));
return true;
});
return true;
});