function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
user2 mkiuser2 mki 

Visualforceの「アクセス権がありません」エラーについて

お世話になっております。

以下のVisualforceをシステム管理者で実行したところ、
「アクセス権がありません」のエラーが発生しました。
解決法をご教示頂けますでしょうか。
※標準オブジェクトでは正常に表示されたのですが、カスタムオブジェクトですとエラーが発生してしまいます

<apex:page standardController="Research__c">
    <apex:detail ></apex:detail>
</apex:page>
Taiki YoshikawaTaiki Yoshikawa
プロファイルの設定の問題だと思われます。

カスタムオブジェクトのみ発生するとのことですので、おそらくそのユーザに対してカスタムオブジェクトの参照権限/作成権限などが付与されていないのではないでしょうか。

あとはVisualforceページ自体のアクセス権限が設定されているかも確認してみるといいかもしれません。
user2 mkiuser2 mki
ご回答ありがとうございます。

ご指摘の点を確認しましたが、当該カスタムオブジェクトの参照/作成権限は付与されており、Visualforceページの参照権限もありました。
(※プロファイルはシステム管理者となります)

追加情報として、standardControllerで指定している「Research__c」のページレイアウトに当該レコードを埋め込むと、以下のエラーが発生しました。
"コンテンツを表示できません: EntityObject can not be initialized with null EntityInfo"

このエラーは上記のアクセス権エラーに関するものなのでしょうか?
Taiki YoshikawaTaiki Yoshikawa
なるほど。それはおそらくアクセス件とは別の問題かもしれません。

私はそのエラーに遭遇したことは無かったのですが、海外のDiscussion Forumに同じようなエラーについて投稿がありました。(解決していませんでしたが...)
https://developer.salesforce.com/forums/?id=906F00000008xB5IAI


ちなみにエラー発生時のコードはこれだけでしょうか。
<apex:page standardController="Research__c">
    <apex:detail ></apex:detail>
</apex:page>

これだけでしたら『apex:detail』に原因がありそうな気がします。例えば次のようなコードの場合に正しく表示されるか確認できれば、『apex:detail』の部分に問題がありそうです。
<apex:page standardController="Research__c">
  <apex:form>
    <apex:pageBlock>
      <apex:pageBlockSection>
          <apex:outputField value="{!Research__c.Name}" />
      </apex:pageBlockSection>
    </apex:pageBlock>
  </apex:form>
</apex:page>

もしこのコードでもエラーが発生する場合は原因が他にありそうな気がします。
user2 mkiuser2 mki
ご回答ありがとうございます。

ご教示頂いた以下のコードでは、正常に動作することが確認できましたので、
「apex:detail」に問題がありそうです。
 
<apex:page standardController="Research__c"> 
  <apex:form > 
    <apex:pageBlock > 
      <apex:pageBlockSection > 
          <apex:outputField value="{!Research__c.Name}" /> 
      </apex:pageBlockSection> 
    </apex:pageBlock> 
  </apex:form> 
</apex:page>

カスタムオブジェクトでも「apex:detail」使えると思うのですが、なぜエラーになるのか不思議です。。。
Taiki YoshikawaTaiki Yoshikawa
そうなんですよね。「apex:detail」自体はカスタムオブジェクトでも利用できるはずです。
一応他のカスタムオブジェクトでも確認してみるといいかもしれません。
あとは表示される項目の権限でしょうか。​システム管理者でもまれに項目レベルセキュリティの権限が外れていることがあります。
 
user2 mkiuser2 mki
他のカスタムオブジェクトで確認したところ、1歩進みました。
どうもフィード追跡を有効にしているカスタムオブジェクトでは、「apex:detail」で参照するとエラーが出る模様です。
エラーが発生していたカスタムオブジェクトのフィード追跡を無効にすると正常に画面表示できました。

でもなぜ、標準オブジェクトではフィード追跡を有効化しているに正常に表示されるのか、全然見当もつきません。。。
何かご存知でしょうか?
Taiki YoshikawaTaiki Yoshikawa
はじめて聞いたのでちょっとDeveloper環境をつかって試してみました。
フィード追跡を有効にしたカスタムオブジェクトをつかって確認して見たのですがこちらでは再現できませんでした。

何か権限周りの問題な気はするのですが、ちょっと不思議ですね。。
user2 mkiuser2 mki
フィード追跡有効化+フィードレイアウトをデフォルトのページレイアウトでも正常に画面表示できますでしょうか?
Taiki YoshikawaTaiki Yoshikawa
標準ページの話ですか?見た感じできていると思います。
可能性は低いですが、もしかするとバージョンの違いがかもしれませんね。Summer'16になったタイミングで何か違いがあるのかもしれません。
user2 mkiuser2 mki
はい、「apex:detail」で表示するページレイアウトをフィードレイアウトにした場合です。
私のDeveloper環境で試して見るとNGでした。。。
Taiki YoshikawaTaiki Yoshikawa
再現しました!フィードレイアウトの設定方法ちょっと忘れていました。原因はこれですね。。
フィード追跡の有効化自体は問題ないと思うのですが、apex:detailがフィードレイアウトをサポートしていないのかもしれません。

 
user2 mkiuser2 mki
再現して頂いて嬉しいです 笑
仰るとおりかもしれません。でも標準オブジェクトはサポートしているのであればカスタムオブジェクトもサポートして欲しいですね。。。
SFDCに確認できるタイミングがあれば聞いてみたいと思います!

調査へのご協力ありがとうございました。
Taiki YoshikawaTaiki Yoshikawa
あまりさわらない部分だったのでこういう現象があることを知れて勉強になりました。
しかしフィードレイアウトでカスタムオブジェクトの場合だけエラーになってしまうんですね。。覚えておこうと思います。