Стандартный пользователь не может добавлять / редактировать запись пользовательских настроек в salesforce - PullRequest
4 голосов
/ 24 ноября 2011

Я создал объект пользовательских настроек с двумя полями.Я также создал контроллер Apex и страницу Visual Force для обновления / редактирования пользовательских настроек.Как системный администратор я могу редактировать пользовательские настройки, используя эту форму.Но когда я вхожу как обычный пользователь, поля формы не отображаются.Я не могу добавить пользовательские настройки даже через Setup-> Develop-> CustomSettings и нажимая кнопку управления, когда я вошел в систему как обычный пользователь.Я сделал так, чтобы каждый доступ к моему контроллеру и странице визуальной силы был доступен любому.

Ниже приведен код моего контроллера,

   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 ]

2 голосов
/ 25 июля 2014

Я только что наткнулся на эту проблему и ответил на нее в Salesforce. Обратитесь к моему ответу там для обхода. https://salesforce.stackexchange.com/questions/28329/giving-users-access-to-a-specific-custom-setting-without-granting-them-customize/45079#45079

1 голос
/ 24 ноября 2011

Пользователи с профилем «Стандартный пользователь» не могут писать в объекты пользовательских настроек. Для этого вам нужно предоставить пользователям разрешение «Настроить приложение», а это, в свою очередь, требует разрешения «Просмотреть настройки конфигурации», что, вероятно, нежелательно.

Лучше всего использовать вместо этого пользовательский объект для хранения настроек пользователя.

На другом замечании: ваши получатели для полей электронной почты и URL-адреса являются избыточными, вы можете просто использовать {!mySettings.XYZ_Url__c} и т. Д., Как вы сделали с полями ввода, и для лучшего форматирования и экранирования символов вы можете рассмотреть возможность использования <apex:outputField value="{!mySettings.XYZ_Url__c}"/>.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...