この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

複合項目の考慮事項と制限

住所複合項目と地理位置情報複合項目は便利で、コードがより簡潔でわかりやすくなります。ただし、これらの複合項目をアプリケーションで使用する場合、考慮事項がいくつかあります。
住所複合項目と地理位置情報複合項目のどちらにも、次の制限があります。
  • 複合項目は参照のみです。項目値を更新するには、個別の項目コンポーネントを使用します。
  • 複合項目は、SOAP および REST API を介してのみアクセスできます。複合バージョンの項目は、Salesforce ユーザインターフェースのどこからもアクセスできません。
  • 複合項目は、Location および Address Apex クラスを使用してクエリ可能ですが、実際の項目のコンポーネントとしてのみ編集可能です。地理位置情報項目コンポーネントの参照と設定を行うには、通常の「__c」の代わりに「__latitude__s」または「__longitude__s」を項目名に追加します。たとえば、次のように指定します。
    1Double theLatitude = myObject__c.aLocation__latitude__s;
    2myObject__c.aLocation__longitude__s = theLongitude;
    複合値そのものに対するアクセスや設定はできません。
  • 複合項目は、<apex:outputField> など、Visualforce では使用できません。項目値にアクセスするか項目値を更新するには、個別の項目コンポーネントを使用します。
  • データローダでエクスポート対象として複合項目を選択すると、エラーメッセージが表示されます。値をエクスポートするには、個別の項目コンポーネントを使用します。
  • 地理位置情報項目と標準住所の緯度および経度は、データインポートウィザードではサポートされません。これらの項目をインポートするには、SOAP または REST API を使用します。Salesforce API を操作するのに好みのツールがない場合、ワークベンチを使用すれば簡単に始めることができます。
  • 複合項目は、ルックアップ検索条件では使用できません。
  • 複合項目を使用できる数式関数は、ISBLANKISCHANGED、および ISNULL のみです。BLANKVALUECASENULLVALUEPRIORVALUE、または等価演算子および比較演算子では、複合項目を使用できません。等価演算子と比較演算子には、= および == (等号)、<> および != (不等号)、< (より小さい)、> (より大きい)、<= (以下)、>= (以上)、&& (AND)、|| (OR) があります。
住所複合項目には、次の制限があります。
  • 複合住所項目は、標準住所でのみ使用できます。つまり、Salesforce に含まれる標準オブジェクトの基本部分として存在する住所項目でのみ使用できます。カスタム複合住所項目は作成できません。
  • 住所項目の地理位置情報コンポーネントは、自動的に設定されません。住所項目を場所の値として使用する前に、SOQL、ワークベンチ、SOAP、REST API、または地理コードサービスを使用して、住所の緯度と経度の値を設定します。AppExchange で「geocode」を検索して、いくつかの可能なソリューションを見つけてください。
地理位置情報複合項目には、次の制限があります。
  • 地理位置情報項目は、カスタム設定ではサポートされません。
  • 地理位置情報項目は、ダッシュボードまたはスキーマビルダーでは使用できません。
  • 地理位置情報項目は Visual Workflow および数式ベースのワークフローと承認で使用できますが、���索条件ベースのワークフローの更新と承認では使用できません。
  • DISTANCE 数式は次でサポートされています。
    • ワークフロールールと承認プロセスの開始条件
    • ワークフロールールと承認プロセスでの項目自動更新アクション
    • カスタム入力規則
  • 地理位置情報項目と標準住所の緯度および経度は、Salesforce to Salesforce ではサポートされません。
  • 住所項目の地理位置情報コンポーネントは、自動的に設定されません。住所項目を場所の値として使用する前に、SOQL、ワークベンチ、SOAP、REST API、または地理コードサービスを使用して、住所の緯度と経度の値を設定します。AppExchange で「geocode」を検索して、いくつかの可能なソリューションを見つけてください。
  • 地理位置情報項目は、SOQL でサポートされますが、次の制限があります。
    • DISTANCE および GEOLOCATION は、SOQL の WHERE および ORDER BY 句でサポートされますが、GROUP BY または SELECT ではサポートされません。
    • DISTANCE は、論理演算子 > および < のみをサポートし、指定された半径内 (<) または外 (>) の値を返します。
    • SOQL クエリで GEOLOCATION 関数を使用する場合、地理位置情報項目を緯度および経度座標よりも前に入力する必要があります。たとえば、DISTANCE(warehouse_location__c, GEOLOCATION(37.775,-122.418), "km") は機能しますが、DISTANCE(GEOLOCATION(37.775,-122.418), warehouse_location__c, "km") は機能しません。
    • Apex バインド変数は、DISTANCE または GEOLOCATION 関数ではサポートされません。次のクエリは機能しません。
      1double latitude = 10;
      2double longitude = 20;
      3double distance = 30;
      4List<List<Account>> accountLocations = [SELECT ID, Name, BillingLatitude, BillingLongitude FROM Account where DISTANCE(BillingAddress,GEOLOCATION(:latitude,:longitude),'mi') < :distance];
      1Location loc = Location.newInstance(90.0, 90.0);
      2List<Account> accountIds = [SELECT Id FROM Account WHERE DISTANCE(BillingAddress, :loc) < 100];
      代わりに、次のようなデータベースクエリを使用してください。
      1double latitude = 10;
      2double longitude = 20;
      3double distance = 30;
      4Database.query('SELECT ID, Name, Location__latitude__s,Location __longitude__s FROM Party__c where '+ 'DISTANCE(Location__c,GEOLOCATION('+latitude+','+longitude+' ),\'mi\') < '+distance);
    詳細とクエリ例については、『Force.com SOQL および SOSL リファレンス』を参照してください。