尝试在 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
我不确定您所说的“嵌套对象键”是什么意思,但是对于您按“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
})
不,无法在过滤器中使用任意“嵌套属性”。 但是,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']
});
我不确定你的代码是否有效,因为它有点乱,但过滤器应该是正确的