如何解决自定义Salesforce Lightning App,显示“您无权访问此记录”
名为“ Stack”的自定义闪电应用程序提供“您无权访问此记录,请联系” 尝试遵循How To Implement Full Search in Case Type using Salesforce?
中的步骤这是stack.aspx的 Apex 代码
public class Stack {
@AuraEnabled(cacheable=true)
public static List<LookupSearchResult> search(String searchTerm,List<String> selectedIds){
if(String.isBlank(searchTerm) || searchTerm.length() < 2){
return null;
}
String t = '%' + searchTerm + '%'; // decide how you want to search,"starts with","includes" or what
List<ERT_Case_Type_Data__c> records = [SELECT Id,Name,Level_1__c,Level_2__c,Level_3__c
FROM ERT_Case_Type_Data__c
WHERE Level_1__c LIKE :t OR Level_2__c LIKE :t OR Level_3__c LIKE :t
ORDER BY Level_1__c,Level_3__c
LIMIT 20];
/* You Could also experiment with SOSL?
records = [FIND :('*' + searchTerm + '*') IN ALL FIELDS
RETURNING Case_Type_Data__c(Id,Level_3__c)][0];
*/
List<LookupSearchResult> results = new List<LookupSearchResult>();
for(ERT_Case_Type_Data__c ctd : records){
results.add(new LookupSearchResult(ctd.Id,'ERT_Case_Type_Data__c','standard:case_wrap_up',ctd.Name,String.join(new List<String>{ctd.Level_1__c,ctd.Level_2__c,ctd.Level_3__c},'; ')
));
}
return results;
}
}
这是 Aura组件(HTML部分)
<aura:component implements="force:hasRecordId,force:appHostable,flexipage:availableForAllPageTypes,force:lightningquickaction" access="global" controller="Stack">
<aura:attribute access="global" type="List" name="selection" default="[]"/>
<aura:attribute access="global" type="List" name="errors" default="[]"/>
<lightning:card title="New Case Type">
<lightning:recordEditForm aura:id="myForm" objectApiName="ERT_Case_Type__c" onsubmit="{!c.onSubmit}" onsuccess="{!c.onSuccess}">
<lightning:messages />
<c:Lookup selection="{!v.selection}" onSearch="{!c.lookupSearch}" onSelection="{!c.useSelected}" errors="{!v.errors}" label="Search" placeholder="Search Case Types Data"/>
<lightning:inputField aura:id="Level_1__c" fieldName="Level_1__c" />
<lightning:inputField aura:id="Level_2__c" fieldName="Level_2__c" />
<lightning:inputField aura:id="Level_3__c" fieldName="Level_3__c" />
<lightning:button class="slds-m-top_small" variant="brand" type="submit" name="save" label="Save" />
</lightning:recordEditForm>
</lightning:card>
</aura:component>
这是 Aura组件-JS控制器部分
({
lookupSearch : function(component,event,helper) {
// Get the lookup component that fired the search event
const lookupComponent = event.getSource();
const serverSearchAction = component.get('c.search');
lookupComponent.search(serverSearchAction);
},useSelected: function(component,helper) {
const selection = component.get('v.selection');
const errors = component.get('v.errors');
if (selection.length) {
if(errors.length){ // Clear errors,if any
component.set('v.errors',[]);
}
let levels = selection[0].subtitle.split('; ');
component.find('Level_1__c').set('v.value',levels[0]);
component.find('Level_2__c').set('v.value',levels[1]);
component.find('Level_3__c').set('v.value',levels[2]);
}
},onSubmit: function(component,helper) {
debugger;
event.preventDefault(); // stop the form from submitting
var fields = event.getParam('fields');
fields.Case__c = component.get('v.recordId'); // link to "this" Case
component.find('myForm').submit(fields);
},onSuccess: function(component,helper){
var toastEvent = $A.get("e.force:showToast");
toastEvent.setParams({
"title": "Success!","message": "Case Type saved OK,refreshing","type": "success"
});
toastEvent.fire();
$A.get('e.force:refreshView').fire(); // reload page
}
})
请帮助我消除此访问错误
关于, 卡罗琳
解决方法
我怀疑它与共享相关(因此与组织范围的设置无关)。如果它是共享的,则只会始终返回0个结果,但不会出现大的红色错误。
如果您删除带有<c:Lookup selection="{!v.selection}" onSearch="{!c.lookupSearch}" onSelection="{!c.useSelected}" errors="{!v.errors}" label="Search" placeholder="Search Case Types Data"/>
的行,错误是否消失了?如果仍然存在-自定义代码或Case_Type_Data__c
周围的权限存在问题。如果消失了,那就是创建ERT_Case_Type__c
)
检查配置文件(或使用权限集)的权限:
- 读取源对象(
Case_Type_Data__c
)和所有引用的字段(Level_1__c
...) - 创建目标对象(
ERT_Case_Type__c
)并读取/编辑所有引用的字段(Level1__c
...而且还有Case__c
) - 在
Case
对象和Case.CaseNumber
,Case.Subject
字段上阅读 - 执行Apex类的权限(重命名为
Stack
,对吗?)。也许也添加运行LookupSearchResult
的权限。
我怀疑您已启用了一些关键更新(设置->关键更新或设置->发布更新),例如“根据用户个人资料限制对@AuraEnabled Apex方法的访问权限,以基于用户配置文件的方式访问用户”或“需要权限才能查看其中的记录名称”查找字段”
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。