Javascript 在SuiteRM错误40中加入子查询(“名称”:“访问被拒绝”、“编号”:40、“说明”:“您没有访问权”)
使用与sugarCRM连接的suiteCRM查询,我需要检索具有特定用户和客户id的所有Opportunity,即不可查询的客户id(帐户id)(至少直接查询) 这意味着我不能使用这样的语法:Javascript 在SuiteRM错误40中加入子查询(“名称”:“访问被拒绝”、“编号”:40、“说明”:“您没有访问权”),javascript,sugarcrm,suitecrm,Javascript,Sugarcrm,Suitecrm,使用与sugarCRM连接的suiteCRM查询,我需要检索具有特定用户和客户id的所有Opportunity,即不可查询的客户id(帐户id)(至少直接查询) 这意味着我不能使用这样的语法: session: await CRMAuth.getSession(), modules: CRM_MODULES.OPPORTUNITY, query: `assigned_user_id = '${uid}' AND account_id = '${client_id}'`, order
session: await CRMAuth.getSession(),
modules: CRM_MODULES.OPPORTUNITY,
query: `assigned_user_id = '${uid}' AND account_id = '${client_id}'`,
order_by: 'date_modified DESC',
offset: 0,
select_fields: [
'id',
'name',
],
link_name_to_fields_array: [],
max_results: 100,
deleted: false,
但是我应该用这样的查询:
session: await CRMAuth.getSession(),
modules: CRM_MODULES.OPPORTUNITY,
query: `opportunities.assigned_user_id = '${uid}' AND opportunities.id IN (
SELECT opportunity_id FROM accounts_opportunities r
JOIN accounts a ON (r.account_id = a.id)
WHERE a.id = '${account_id}'
AND r.deleted=0 and a.deleted=0)`,
order_by: 'date_modified DESC',
offset: 0,
select_fields: [
'id',
'name',
],
link_name_to_fields_array: [],
最大结果:100,
删除:false
我尝试了不同的变体,比如模块/表名称中的大写字母,并像以前一样添加了“r”、“a”(甚至我用全名替换了它们)。我还尝试了更简单的查询,但仍然出现相同的错误
此外,我还可以确定类似的问题不是会话问题,而是语法问题。我的两个错误是:
- 将模块倒置
- 使用get\u entry\u list方法而不是get\u关系(此方法要求不同的参数)
let response = await CRM(CRM_METHODS.GET_RELATIONSHIPS, {
session: await CRMAuth.getSession(),
module_name: CRM_MODULES.ACCOUNTS,
module_id: '${client_id}',
link_field_name: `opportunities`,
related_module_query:`opportunities.assigned_user_id = '${uid}'`,
related_fields: [*the fields i want*],
related_module_link_name_to_fields_array:[],
deleted: 0,
});
小心:模块没有id(机会、帐户等),“模块id”字段是您正在处理的记录的id,在我的情况下是我客户的id
这为我带来了特定用户为特定客户创造的所有机会