标准用户无法在salesforce中添加/编辑自定义设置记录

时间:2011-11-24 12:04:59

标签: salesforce apex-code visualforce

我创建了一个包含两个字段的自定义设置对象。我还创建了一个Apex控制器和一个Visual Force页面来更新/编辑自定义设置。作为系统管理员,我可以使用该表单编辑自定义设置。但是当我以标准用户身份登录时,表单字段没有显示出来。当我以标准用户身份登录时,即使通过Setup-> Develop-> CustomSettings并点击manage,我也无法添加自定义设置。我已经让我的控制器和Visual force页面权限都可供任何人访问。

以下是我的控制器代码,

   public class XYZSettingsController
     {
     public  XYZSettings__c mySettings {get; set;}
     public XYZSettings__c myOrgSettings{get; set;}

     public XYZSettingsController()
        {

          mySettings = XYZSettings__c.getValues(System.Userinfo.getUserId());
          myOrgSettings = XYZSettings__c.getInstance();
            if(mySettings == null)
              {
              mySettings = new XYZSettings__c(SetupOwnerId=System.Userinfo.getUserId());
              }    

         }
    public String getOrgUrl()
    {
    return   myOrgSettings.XYZ_Url__c;
    }

    public String getOrgEmail()
    {
            return   myOrgSettings.XYZ_Email__c;
    }

    public String getUrl()
    {
            return   mySettings.XYZ_Url__c;
    }

    public String getEmail()
    {

           return   mySettings.XYZ_Email__c;
    }

    public PageReference save() {

      if(mySettings.id == null){                   
           upsert mySettings;
             }
      else{
           update mySettings;
             }
      return null;
    }
    }

以下是我的Visual Force页面,

<apex:page Controller="XYZSettingsController" title="Edit XYZ access settings">
  <apex:form >
    <apex:pagemessage severity="info" strength="1">
     Your default XYZ platform url is: {!OrgUrl} and Email is: {!OrgEmail}
     <br></br>
      You can override it in the settings below
    </apex:pagemessage> 
   <apex:pageBlock title="Edit XYZ settings" mode="edit">
  <apex:commandButton action="{!save}" value="Save"/>  
     <apex:pageBlockSection columns="2">  
            <apex:inputField value="{!mySettings.XYZ_Url__c}"/>
            <apex:inputField value="{!mySettings.XYZ_Email__c}"/>
    </apex:pageBlockSection>
   </apex:pageBlock>
 </apex:form>
</apex:page>

任何线索?

2 个答案:

答案 0 :(得分:2)

我刚刚遇到过这个问题并在Salesforce上回答了这个问题。请参考我的答案进行解决。 https://salesforce.stackexchange.com/questions/28329/giving-users-access-to-a-specific-custom-setting-without-granting-them-customize/45079#45079

答案 1 :(得分:1)

具有“标准用户”配置文件的用户无法写入自定义设置对象。为此,您需要向用户授予“自定义应用程序”权限,这又需要“视图设置配置”权限,这可能是不受欢迎的。

这里最好的选择是使用自定义对象来存储用户的设置。

另一个注意事项:电子邮件和URL字段的获取者是多余的,您可以使用{!mySettings.XYZ_Url__c}等完成输入字段,为了更好的格式化和字符转义,您可能希望考虑使用<apex:outputField value="{!mySettings.XYZ_Url__c}"/>