netsuite suiteScipt 2.0 搜索:有没有办法通过嵌套对象键进行过滤?

问题描述 投票:0回答:2

尝试在 netsuite 中编写 restlet 并通过嵌套键进行过滤,但我似乎无法破解它 `

 var f1 = search.createFilter({
            name: 'salesrep.id',
            operator: search.Operator.IS,
            values: '77'
});
        var filter;
        var id;
        if(context.closerId) {
            filter = 'custentity_bb_sales_rep_employee'; 
            id = context.closerId;
        } else if (context.setterId)        {
            filter = 'custentity_ss_setter_employee';
            id = context.setterId;
        }
      var mySearch = search.create({
        type: search.Type.CUSTOMER,
        columns: ['entityid', 'firstname', 'lastname', 'salesrep', 'custentity_ss_setter_employee', 'custentity_bb_sales_rep_employee', 'custentity_bb_home_owner_phone', 'custentity_bb_install_address_1_text', 'custentity_bb_install_city_text', 'custentity_bb_install_state', 'custentity_bb_install_zip_code_text' ],
        filters: [f1],

    });````

heres the code I'm trying and yet its not working, I'm wondering if there even is a way to filtter by salesrep.id

I've tried pretty much everything in the documentation, not sure where to go from here
javascript netsuite
2个回答
0
投票

我不确定您所说的“嵌套对象键”是什么意思,但是对于您按“salesrep.id”过滤的示例,有一个简单的解决方案 - 您只需将其指定为“salesrep”即可。

search.createFilter({
    name: 'salesrep',
    operator: search.Operator.ANYOF,
    values: '77'
})

还请注意,对于列表/记录(选择/下拉)字段,您应该使用 ANYOF 运算符而不是 IS。

进一步评论:如果通过“嵌套对象键”您指的是来自记录连接的值,那么您可以使用

join
options 参数的
search.createFilter(options)
属性。例如,如果您想使用销售代表的姓名而不是内部 ID,您可以这样做:

search.createFilter({
    join: 'salesrep',
    name: 'entityid',
    operator: search.Operator.IS,
    values: 'Tom Sawyer'  //Put the sales rep's name here
})

0
投票

不,无法在过滤器中使用任意“嵌套属性”。 但是,NetSuite 支持搜索连接的概念。 根据我的经验,您需要使用 NetSuite 记录浏览器,查看特定记录类型上哪些连接可用以及它们引用的内容(哪个记录),然后您可以使用引用记录的一些(不是每个)属性。

例如你想找到所有的客户记录,他们的销售代表将记录的 ID 称为“77”。

所以你打开 NetSuite 记录浏览器:https://system.netsuite.com/help/helpcenter/en_US/srbrowser/Browser2022_1/script/record/customer.html

看看它支持哪些连接:

的确,它确实支持salesrep join,它指的是Employee记录类型。所以你去员工 https://system.netsuite.com/help/helpcenter/en_US/srbrowser/Browser2022_1/script/record/employee.html 找到它支持的搜索过滤器,然后你使用这些过滤器(来自'加入'记录)。你会看到没有'id'搜索过滤器,而是有'internalid',这一定是你需要的:

所以这段代码(原来的):

//this is wrong:
var f1 = search.createFilter({
    name: 'salesrep.id',
    operator: search.Operator.IS,
    values: '77'
});

必须是(也请不要在 values 属性中使用数组文字,我不确定字符串是否像您的原始示例一样有效)

var f1 = search.createFilter({
    name: 'internalid',
    join: 'salesrep',
    operator: search.Operator.IS,
    values: ['77']
});

我不确定你的代码是否有效,因为它有点乱,但过滤器应该是正确的

© www.soinside.com 2019 - 2024. All rights reserved.