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
MingosMingos 

複数ユーザでの添付ファイルの更新方法を教えてください

Apexでサイトを利用する取引先から毎月資料を送信してもらうという機能を作成しています。
そこで、apex:inputFileからアップロードしたファイルを親となるカスタムオジェクトに関連させて添付ファイル(Attachment)に登録しています。
資料を再アップロードする場合は、添付ファイルの中味(Attachment.Body)だけ更新をかけています。

ただし、担当者Aが登録したAttachmentレコードを同じ取引先の担当者Bが再アップロードして更新した際に、以下のようなエラーが発生しました。

 

System.DmlException: Update failed. First exception on row 0 with id XXXXXXXXXX…; first error: INSUFFICIENT_ACCESS_ON_CROSS_REFERENCE_ENTITY, insufficient access rights on cross-reference id: [] (XXXXXXXXXX…はレコードID)

 

原因がわからないのですが多分 所有者が異なることで発生したのだと思います。
Attachmentを登録した担当者が、同じレコードを更新することはできます。
Attachmentの所有者が同じ取引先のユーザなら更新できるような方法があったら教えてください。

よろしくお願いします。

 

補足
トリガで共有ルールを作ればいいのかなと以下のサイトを参考にしてみましたが、途中で行き詰まりました。
http://blog.flect.co.jp/salesforce/2012/02/
⇒Schema.Item__Shareが解説されていないので、どう設定するのか解らず。

Best Answer chosen by Admin (Salesforce Developers) 
MingosMingos

自己レス

すみません。何もしなくても同じ取引先の担当者(ロールが一緒)が所有者であれば、ユーザが違っても添付を更新できました。

失敗していたのはテストクラスの中だけで、画面から実施したところできました。

 

ということで、どうもテストコードのなかでの取引先ユーザ作成方法がわるかったようです。

こちらはまだ解決していませんが、たぶんロールを設定すればうまくいと思います。

失礼しました^^;