SalesforceでのUnsupportedエラー回避方法を解説します!
IT・技術関連
更新日:2024.09.05


SalesforceのVisualforceを利用しているとき、「Unsupported~」の文字を含むエラーが発生して困った経験はないでしょうか。 Unsupportedエラーが発生する要因は事象によって異なりますが、とくにコンパイル時のエラーとして発生しているケースを多く見かけます。 本記事ではコンパイル時に発生するエラーとして、Unsupportedエラーが発生した場合の原因と解決方法を紹介していきます。
Address項目タイプを利用してUnsupportedエラーが発生する要因
SalesforceのVisualforceを利用してAddressという項目タイプを選択するとき、直接Visualforceページに使用すると、このUnsupportedエラーが発生します。 発生の理由は、Addressという項目タイプが構造化された複合データ型であるためです。 つまり「Address(住所)」というデータ型は、複数のデータ項目からなる複合型なので、「Address(住所)」単体では複数データ項目を出力できません。 補足として、Address(住所)型では各データ項目が参照されていますが、カスタムオブジェクトでは、Address(住所)と同じデータ項目を作成するとUnsupportedエラーが発生します。 各データ型の種類を確認するためには、Salesforceのオブジェクトマネジャーで検索してみてください。Unsupportedエラーが発生する記述例
以下の記述はSalesforceのVisualforceを利用してAccount.ShippingAddressを直接出力しようとしている例です。 この場合はコンパイル時にUnsupportedエラーが発生します。< apex:page standardController=""Account"" >
< apex:pageBlock >
< apex:pageBlockSection title=""取引先の住所"" >
・・・
< apex:outputText value=""{!Account.ShippingAddress}"" / >
< /apex:pageBlockSection >
< /apex:pageBlock >
< /apex:page >
Unsupportedエラーは以下のようなメッセージで出力されます。
”Unsupported type: common.api.soap.wsdl.Address used in expression :Account.ShippingAddress”
上記のUnsupportedエラーを翻訳すると、「common.api.soap.wsdl.Address上で、”Account.ShippingAddress”この記述はサポートされていません。」となります。複合型データを直接参照するときに発生するUnsupportedエラーです。
次に複合型データを直接参照するときに発生するUnsupportedエラーの回避方法を紹介します。
Unsupportedエラーの発生を回避する記述例
Unsupportedエラーを回避するためには、「Address(住所)」というデータ型に含まれる各データに出力します。< apex:page standardController=""Account"" >
< apex:pageBlock >
< apex:pageBlockSection title=""取引先の住所"" >
・・・
< apex:outputText value=""{!Account.ShippingPostalCode}"" / >
< apex:outputText value=""{!Account.ShippingState}"" / >
< apex:outputText value=""{!Account.ShippingCity}"" / >
< apex:outputText value=""{!Account.ShippingStreet}"" / >
< /apex:pageBlockSection >
< /apex:pageBlock >
< /apex:page >
ShippingPostalCod、ShippingState、ShippingCity、ShippingStreetを個別に参照することで、複合Account項目の各データを個別に取得しています。
上記で取り上げた項目の他にも、複合Account項目の各データにはいくつか種類がありますので紹介します。
- Accuracy(住所の地理コードの精度レベル)
- City(住所の市区郡の詳細)
- Country(住所の国の詳細)
- CountryCode(住所の ISO 国コード)
- Latitude(住所の正確な地理位置情報)
- Longitude(住所の正確な地理位置情報)
- PostalCode(住所の郵便番号)
- State(住所の都道府県の詳細)
- StateCode(住所の ISO 都道府県コード)
- Street(住所の町名・番地の詳細)
SOQLでNo such column ~エラーが出力された際の対処法
SOQLでSelectを指定したときのエラーが発生した場合も、BillingAddress項目も複合Address項目データであるため、複合Address項目のデータごとに出力してください。No such column 'BillingAddress' on entity 'Account'.
SalesforceのVisualforceを利用してBillingAddress項目から複合Address項目のデータを出力したい場合は、代わりに以下の項目から出力してください。
- BillingCountry: 国 (請求先)
- BillingPostalCode: 郵便番号 (請求先)
- BillingState: 都道府県 (請求先)
- BillingCity: 市区郡 (請求先)
- BillingStreet: 町名・番地 (請求先)
Unsupportedエラーの発生する記述例
前述と同じく、VisualforceにおいてAccount.BillingAddressから直接データを出力しようとすると、コンパイル時にUnsupportedエラーが発生します。< apex:outputText value=""{!Account.BillingAddress}"" / >
発生したエラーの内容は以下の通りです。
Unsupported type: common.api.soap.wsdl.Address used in expression: Account.BillingAddress
上記のエラーは、BillingAddressで複合Address項目の各データ項目が存在しないことを知らせています。
Unsupportedエラーの発生を回避する記述例
Unsupportedエラーの発生を回避するために、以下のように各データに出力する記述をしてください。< apex:outputText value=""{!Account.BillingPostalCode}"" / >
< apex:outputText value=""{!Account.BillingCountry}"" / >
< apex:outputText value=""{!Account.BillingState}"" / >
< apex:outputText value=""{!Account.BillingCity}"" / >
< apex:outputText value=""{!Account.BillingStreet}"" / >
Apex Codeで元となる項目を検索する
BillingAddressでデータ出力する代わりに、BillingCountry、BillingPostalCode、BillingState、BillingCity、BillingStreetの複合Address項目の各データを出力します。public class AddressFieldController {
public Account record{get; private set;}
public AddressFieldController(ApexPages.StandardController controller) {
record = [SELECT Id, Name, BillingCountry, BillingPostalCode, BillingState, BillingCity, BillingStreet, BillingLatitude, BillingLongitude
FROM Account WHERE Id = :controller.getId()
];
}
}
複合Address項目の各データ項目の値を出力すると、それぞれAddress(住所)というデータ型で返されます。
< apex:page standardController=""Account"" extensions=""AddressFieldController"" >
< apex:sectionHeader title=""{!record.name}"" / >
< apex:pageBlock title=""{!record.name}"" >
< apex:pageBlockSection title=""AccountSection"" columns=""1"" >
< apex:outputField value=""{!record.Name}"" / >
< apex:pageBlockSectionItem >
< apex:outputLabel value=""BillingAddress"" / >
< apex:outputPanel >
< apex:outputText value=""{!record.BillingCountry}"" / >< br / >
< apex:outputText value=""{!record.BillingPostalCode}"" / >
< apex:outputText value=""{!record.BillingState}"" / >
< apex:outputText value=""{!record.BillingCity}"" / > < br / >
< apex:outputText value=""{!record.BillingStreet}"" / >
< /apex:outputPanel >
< /apex:pageBlockSectionItem >
< /apex:pageBlockSection >
< /apex:pageBlock >
< /apex:page >
上記記述の例では、BillingCountry、BillingPostalCode、BillingState、BillingCity、BillingStreetの複合Address項目の各データを個別に参照していることがわかります。
Unsupportedエラーは、Address複合型データの扱い方で回避
Addressという項目タイプが構造化された複合データ型であるため、VisualforceでAddressという項目タイプを選択して直接SalesforceのVisualforceページに使用すると、このUnsupportedエラーが発生します。 「Address(住所)」というデータ型は、複数のデータ項目からなる複合型なので、「Address(住所)」単体では複数データ項目を出力できないことを覚えておきましょう。]]>この記事の監修者・著者

- AWSパートナー/Salesforce認定コンサルティングパートナー 認定企業
-
ITエンジニア派遣サービス事業を行っています。AWSやSalesforceなど専門領域に特化したITエンジニアが4,715名在籍し、常時100名以上のITエンジニアの即日派遣が可能です。
・2021年:AWS Japan Certification Award 2020 ライジングスター of the Year 受賞
・2022年3月:人材サービス型 AWSパートナー認定
・AWS認定資格保有者数1,154名(2024年6月現在)
・Salesforce認定コンサルティングパートナー
・Salesforce認定資格者276名在籍(2024年5月現在)
・LPIC+CCNA 認定資格者:472 名(2024年6月時点)
最新の投稿
- 2024-12-27営業インタビュー情報共有の活性化の中心に。SP企画部の新たな取り組み
- 2024-07-01営業インタビュー最短で当日にご提案可能。 OPE営業の対応が早い3つの理由
- 2024-07-01営業インタビュー研修見学ツアーが高評価!「お客様のOPEに対する期待を高め、継続に貢献できればと思います。」
- 2024-07-01営業インタビュー信頼関係を構築し、エンジニアの長期就業へ
ITエンジニアの派遣を利用したい企業様へ

- 求人・転職サイトや自社採用サイトを使っているが、自社に合ったITエンジニアが応募してこない…
- すぐに採用したいが、応募がぜんぜん集まらない
こんな悩みをお持ちの採用・人事担当者の方は、
オープンアップITエンジニアをご検討ください!
オープンアップITエンジニアをご検討ください!
当社のITエンジニア派遣サービスは
- 派遣スピードが速い!(最短即日)
- 4,500名のエンジニアから貴社にマッチした人材を派遣
- 正社員雇用も可能
こんな特長があり、貴社の事業やプロジェクトに合った最適なITエンジニアを派遣可能です。
まずは下記ボタンから無料でご相談ください。