Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用SuiteScript 2在NetSuite中搜索项目数组_Netsuite_Suitescript_Suitescript2.0 - Fatal编程技术网

使用SuiteScript 2在NetSuite中搜索项目数组

使用SuiteScript 2在NetSuite中搜索项目数组,netsuite,suitescript,suitescript2.0,Netsuite,Suitescript,Suitescript2.0,我正在尝试编写一个suitescript搜索,它允许我将标识符数组传递给Netsuite中的特定字段并返回结果。我试过‘ANYOF’、‘ALLOF’和‘inthein’,但总是出错 以下是我目前的代码: if(params.type=='sku'){ var filter_name = 'itemid'; }else{ var filter_name = 'upccode'; } var filters = [ s

我正在尝试编写一个suitescript搜索,它允许我将标识符数组传递给Netsuite中的特定字段并返回结果。我试过‘ANYOF’、‘ALLOF’和‘inthein’,但总是出错

以下是我目前的代码:

    if(params.type=='sku'){
        var filter_name = 'itemid';
    }else{
        var filter_name = 'upccode';
    }


    var filters = [
       search.createFilter({
            name: filter_name,
            operator: search.Operator.ANYOF,
            values: ['HERHR5201','HERHR5202','HERHR5203']
       }),
    ];

    var s = search.create({
        'type': record.Type.INVENTORY_ITEM, 
      'filters':filters,

    }).run();
    s = s.getRange(0,100);

    return JSON.stringify(s);

有人知道创建多个itemid搜索的正确顺序吗?另外,有没有办法让结果集返回我需要的列而不是想法?我需要创建列吗?

在过滤文本字段上的搜索时,不能使用
ANYOF
ALLOF
等。您需要创建一个过滤器使用ORs搜索多个值的表达式

我会这样做:

if(params.type=='sku'){
    var filter_name = 'itemid';
}else{
    var filter_name = 'upccode';
}

var filters = [
    [filter_name, 'is', 'HERHR5201'], 'OR',
    [filter_name, 'is', 'HERHR5202'], 'OR',
    [filter_name, 'is', 'HERHR5203']
];

var s = search.create({
    'type': record.Type.INVENTORY_ITEM, 
    'filters':filters
}).run();
正如您所指出的,要从搜索中返回特定的列,您需要使用search.createColumn()。因此它类似于:

//Previous code...
var s = search.create({
    'type': record.Type.INVENTORY_ITEM, 
    'filters':filters,
    'columns': [search.createColumn({name: 'internalid'}),
                search.createColumn({name: 'upccode'}),
                search.createColumn({name: 'itemid'})
                /*Other columns as needed*/]
}).run();

在对文本字段的搜索进行筛选时,不能使用
ANYOF
ALLOF
等。您需要创建一个带有OR的筛选表达式来搜索多个值

我会这样做:

if(params.type=='sku'){
    var filter_name = 'itemid';
}else{
    var filter_name = 'upccode';
}

var filters = [
    [filter_name, 'is', 'HERHR5201'], 'OR',
    [filter_name, 'is', 'HERHR5202'], 'OR',
    [filter_name, 'is', 'HERHR5203']
];

var s = search.create({
    'type': record.Type.INVENTORY_ITEM, 
    'filters':filters
}).run();
正如您所指出的,要从搜索中返回特定的列,您需要使用search.createColumn()。因此它类似于:

//Previous code...
var s = search.create({
    'type': record.Type.INVENTORY_ITEM, 
    'filters':filters,
    'columns': [search.createColumn({name: 'internalid'}),
                search.createColumn({name: 'upccode'}),
                search.createColumn({name: 'itemid'})
                /*Other columns as needed*/]
}).run();

提供的答案是正确的,但是根据您提供的示例代码,我假设搜索需要动态创建。这意味着您提到的“标识符数组”将不总是相同的,也不总是相同的长度。为了创建基于传入“数组”的完全动态搜索f标识符“您需要非常有创意。在下面的解决方案中,我假设函数参数“params”是一个具有“type”属性和arrIn(字符串数组)属性的对象。下面的搜索使用公式函数“DECODE”,可以找到其描述


提供的答案是正确的,但是根据您提供的示例代码,我假设搜索需要动态创建。这意味着您提到的“标识符数组”将不总是相同的,也不总是相同的长度。为了创建基于传入“数组”的完全动态搜索f标识符“您需要非常有创意。在下面的解决方案中,我假设函数参数“params”是一个具有“type”属性和arrIn(字符串数组)属性的对象。下面的搜索使用公式函数“DECODE”,可以找到其描述


太棒了!太棒了!太棒了!太棒了!太感谢了!谢谢你!这正是我想要做的。还有一个问题。有人知道如何添加一个连接来获取库存项目记录的现存量吗?@WallyKolcz我建议在UI中建立搜索,以首先获得你想要看到的结果。一旦你有了这个,就开始吧chrome扩展名为NetSuite:Search Export。此扩展名在保存的搜索编辑屏幕上添加了一个新按钮,该按钮将弹出并显示内置代码版本的搜索。它显示搜索的SS1.0和SS2.0版本。我可以使用decode将字符串转换为筛选器数组的一部分吗?我添加了扩展名,并创建了SS2脚本,但我仍然需要一种方法来添加通过params传递到脚本的项数组的筛选。我尝试使用DECODE函数获取字符串并在筛选器中使用它,但我得到的DECODE不是来自NS的函数错误。此外,当使用run()时。each(函数(结果){}),将返回什么以及如何捕获internalId之类的内容?是否必须从每个结果创建一个新数组,然后将其字符串化发送回?我确实错过了console.log()lol例如(使用Decode)我尝试了此操作,但得到了错误:错误消息:org.mozilla.javascript.EcmaError:ReferenceError:“Decode”未定义。筛选器:[解码([[filter_name,“is”,“847864149472”],“或”,[filter_name,“is”,“847864149489”],“或”,[filter_name,“is”,“847864149496”]],“和”,[“inventorylocation.internalidnumber”,“equalto”,“1”],“和”[“定价.价格水平”,“任意值”,“5”],“和”,[“定价.货币”,”“1”]],您需要以字符串的形式传入搜索函数,正如我在上述答案中所示。DECODE根本不是Javascript或SUITEscript函数,它是SQL查询函数,因此必须以字符串的形式传入。除此之外,字符串中的数据必须正确格式化为字符串,这是在搜索的正上方完成的。create()。在您最后的评论中,请查看您传递给搜索的“过滤器”,并与作为示例提供的过滤器进行比较。它们完全不同。至于搜索的内容。run()。each()是的,你应该已经知道了,它在帮助中解释了谢谢!这正是我想要做的。还有一个问题。有人知道如何添加一个联接来获取库存项目记录的现存量吗?@WallyKolcz我建议在UI中建立搜索,以首先获取你想要看到的结果。一旦你有了,就获取chrome扩展名为NetSuite:Search Export。此扩展在保存的搜索编辑屏幕上添加一个新按钮,该按钮将弹出并显示内置代码版本的搜索。它同时显示搜索的SS1.0和SS2.0版本。我可以使用decode将字符串转换为筛选器数组的一部分吗?我添加了扩展名,并创建了一个SS2脚本但是我仍然需要一种方法来添加对通过params传递到脚本的项数组的过滤。我尝试使用DECODE函数获取字符串并在过滤器中使用它,但我得到的解码不是来自NS的函数错误。另外,在使用run()时。each(function(result){}),返回的是什么,如何捕获internalId之类的内容?是否必须从每个结果创建一个新数组,然后将其字符串化发送回?例如,我没有找到console.log()