You need to sign in to do that
Don't have an account?
Dev 長尾拓磨
カスタム項目、カスタムオブジェクトの名前空間プレフィックスを取得したい
管理パッケージをテスト環境にインストールした際に、項目レベルセキュリティチェックのメソッドにて、
項目名を取得できなくなってしまいました。
オブジェクトの設定画面などを見ると、各カスタム項目やカスタムオブジェクトに
「インストール済みパッケージ名」として名前空間プレフィックスが表示されているので、
項目として持っていると判断したのですが、どう取得すれば良いのかわかりません。
知っている方がいましたら教えていただけると助かります。
よろしくお願いします。
項目名を取得できなくなってしまいました。
Schema.DescribeSObjectResult result = new CustomObject__c().getSObjectType().getDescribe(); Map<String, Schema.SObjectField> fieldMap = result.fields.getMap(); Boolean isCreate = fieldMap.get('FieldName').getDescribe().isCreateable();
オブジェクトの設定画面などを見ると、各カスタム項目やカスタムオブジェクトに
「インストール済みパッケージ名」として名前空間プレフィックスが表示されているので、
項目として持っていると判断したのですが、どう取得すれば良いのかわかりません。
//理想 XXXXX namespace = [select namespacePrefix from XXXXX ]; Schema.DescribeSObjectResult result = new CustomObject__c().getSObjectType().getDescribe(); Map<String, Schema.SObjectField> fieldMap = result.fields.getMap(); Boolean isCreate = fieldMap.get(namespace + 'FieldName').getDescribe().isCreateable();
知っている方がいましたら教えていただけると助かります。
よろしくお願いします。
下記コードで名前空間を取得できます。[]内のSOQLはsObjecですが、.(ドット)でつなぎString型で定数に格納します。
使い方ですが、名前空間は、__(アンスコ*2)を付与します。 ハードコードですが上記コードで、私の環境では確認できました。
ご確認ください。
また、
補足ですが、名前空間がない場合(管理パッケージではない)場合も兼ねて、条件判定を入れると良いかもしれないです。
もし、よかったらベストアンサーをマークしてくれると励みになります。
よろしくお願いいたします。