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

カスタムオブジェクトの動作

ユーザインターフェースを使用して、カスタムオブジェクトを定義して組織のデータを拡張できます。カスタムオブジェクトとは、組織独自の情報を保管できるカスタムデータベーステーブルのことです。カスタムオブジェクトの場合、Describe Result の boolean 項目である custom フラグは true です。

十分な権限を持つクライアントアプリケーションは、既存のカスタムオブジェクトに API コールを呼び出すことができます。ユーザインターフェースを使用、クライアントアプリケーションで Metadata WSDL を使用、または Visual Studio Code 向け Salesforce 拡張機能を使用して、カスタムオブジェクトを作成できます。Metadata WSDL を使用したカスタムオブジェクトの作成についての詳細は、『Lightning Platform メタデータ API 開発者ガイド』を参照してください。Visual Studio Code の詳細については、「Salesforce Extensions for VS Code (VS Code 向け Salesforce 拡張機能)」を参照してください。

API がカスタムオブジェクトおよびカスタム項目とどのように相互作用するかについては、次のトピックを参照してください。

カスタムオブジェクトの命名規則

Salesforce システム管理者は、設定時に各カスタムオブジェクトに関連する名前項目を定義します。カスタムオブジェクトには、組織内で一意の名前が必要です。

API では、カスタムオブジェクトの名前に 2 つのアンダースコアと、それに続く小文字の「c」のサフィックスが含まれます。たとえば、Salesforce ユーザインターフェースで「Issue」とラベル付けされたカスタムオブジェクトは、組織の WSDL では Issue__c と表示されます。

リレーションによって命名規則が変更されます。詳細は、「カスタムオブジェクト間のリレーション」を参照してください。

カスタムオブジェクトレコードを Salesforce ユーザインターフェースに表示するために、名前項目に入力する必要があります。API を使用して名前のないカスタムオブジェクトレコードを作成すると、そのレコードの ID が名前として使用されます。

カスタムオブジェクト間のリレーション

「オブジェクト間のリレーション」で説明されているように、カスタムオブジェクトは標準オブジェクトと同じように動作し、別のオブジェクトと関連します。たとえば、削除のカスケードは主従関係にあるカスタムオブジェクトでサポートされています。

カスタムオブジェクトには、その他のカスタムオブジェクトまたは参照オブジェクトと多対多のリレーションがあります。多対多リレーションでは、1 つのオブジェクトの各レコードを他のオブジェクトの複数のレコードにリンクでき、またその逆のリンクも可能です。詳細は、「オブジェクト間のリレーション」を参照してください。

カスタムオブジェクトをリレーションクエリで使用するには、特別な対応が必要です。カスタムオブジェクトのリレーション項目名については、__r を名前に追加して ID を作成します。また、__c を名前に追加して、親オブジェクトポインタを作成します。たとえば、リレーション項目名が MyRel の場合、ID の名前は MyRelId__r となり、親オブジェクトのポインタは MyRel__c、リレーション名は MyRel__r となります。詳細は、『Salesforce SOQL および SOSL リファレンス』の「リレーション名、カスタムオブジェクトおよびカスタム項目について」を参照してください。

次の表は、各標準オブジェクトに次のような状況が適用されるかどうかを示しています。
  • カスタムオブジェクトと主従関係である場合の主。主従関係では、削除のカスケードと、親が制御する共有ルールを使用します。
  • カスタムオブジェクトの参照関係における参照。つまり、カスタムオブジェクトが標準オブジェクトに対して参照するかどうか。
  • カスタム項目による拡張。
標準オブジェクト 主従関係 参照関係 カスタム項目
Account はい はい はい
Campaign はい はい はい
Case はい はい はい
Contact はい はい はい
Contract はい はい はい
Event いいえ いいえ はい
Lead いいえ いいえ はい
Opportunity はい はい はい
Product2 いいえ はい はい
Solution はい はい はい
Task いいえ いいえ はい
User いいえ はい はい

カスタムオブジェクト用の監査項目

カスタムオブジェクトには、標準オブジェクトと同じ監査項目があります。カスタムオブジェクトを作成する場合、4 つの監査項目 CreatedByIdCreatedDateLastModifiedById および LastModifiedDate が作成され、オブジェクトに入力されます。これらの項目は参照のみです。データを Salesforce カスタムオブジェクトにインポートし、参照元システムの監査項目値を保持する場合は、カスタムオブジェクトを作成するときに値を設定できます。値を設定できない監査項目は、SystemModstamp だけです。組織で API を有効にし、「すべてのデータの編集」権限を持っている必要があります。

  1. [設定] から、[クイック検索] ボックスに「ユーザインターフェース」と入力し、[カスタマイズ] で [ユーザインターフェース] を選択します。
  2. [設定] で [「レコードの作成時に監査項目を設定」および「無効な所有者のレコードを更新」ユーザ権限を有効化] を選択します。
  3. 監査項目を設定する権限セットまたはプロファイルで、[レコードの作成時に監査項目を設定] 権限を有効にします。
  4. API を使用してレコードを作成し、その監査項目を設定します。
次の制限があります。
  • CreatedDate を、LastModifiedDate より大きな値に設定することはできません。
  • 日付項目を、現在の時間より大きな値に設定することはできません。

監査項目についての詳細は、「システム項目」を参照してください。

共有オブジェクトとカスタムオブジェクト

別のオブジェクトに対して主従関係を持たないカスタムオブジェクトには、共有ルールオブジェクトが作成されます。これは、AccountOwnerSharingRule などの標準オブジェクトの共有ルールに似ています。カスタムオブジェクトを作成するユーザに「共有の管理」権限がある場合、共有ルールオブジェクトがカスタムオブジェクトに対して自動的に作成されます。

Apex 共有の理由は、カスタムオブジェクトの共有オブジェクトを記述し、rowCause 項目の情報を検証して取得できます。各カスタムオブジェクトの共有オブジェクト名の形式は、AccountShare オブジェクトやその他の標準オブジェクトの共有オブジェクトと同様、MyObjectName__Share となります。

タグオブジェクトとカスタムオブジェクト

カスタムオブジェクトが作成されると、それに関連するタグオブジェクトも作成されます。これらのオブジェクト名の形式は、AccountTag やその他の標準オブジェクトのタグオブジェクトと同様、MyObjectName__Tag となります。

カスタムオブジェクトの標準項目

カスタムオブジェクトを作成すると、いくつかの標準項目がオブジェクトまたはエンティティに関連付けられます。詳細は、「カスタムオブジェクト」を参照してください。

カスタムオブジェクトの必須項目

ユーザインターフェースでは、カスタム項目を必須項目としてマークでき、このルールは API でも強制されます。各カスタム項目には、データ型が boolean である isRequired という項目があります。デフォルト値は、false です。true に設定されている場合、各要求はこの項目に値を指定します (または現在の値のままにします)。値を指定しない場合、要求は失敗します。値を true に設定した場合、項目が次回編集または作成されるときに、入力規則が適用されます。値を指定しない場合またはデフォルト値を指定した場合、要求は失敗します。

isRequired 項目を編集するには、「アプリケーションのカスタマイズ」権限を持つユーザとしてログインする必要があります。

既存のクライアントアプリケーションまたは統合で必要なカスタムオブジェクト項目を変更する場合、その項目の値が指定されていることを必ず確認してください。たとえば、取引先責任者オブジェクトのカスタム選択項目 [教育レベル] を必須項目にする場合、そのカスタム項目にはデフォルト値を指定します。必須項目に値が指定されず、デフォルト値も指定されていない場合、状況コード REQUIRED_FIELD_MISSING のエラーが返されます。

管理パッケージと API 参照名

未管理パッケージがある環境で、管理パッケージバージョンが使用可能になった場合、パッケージに含まれているカスタム項目、カスタムオブジェクト、および Scontrol オブジェクトの API 参照名が変更されます。各コンポーネントを一意に識別するために、コンポーネントに名前空間プレフィックスが追加され、name__cprefix__name__c になります。未管理パッケージから、同じアプリケーションの管理パッケージバージョンに移行するには、データのエクスポート、古いパッケージのアンインストール、新しいパッケージのインストールを行います。次に、名前の変更を確認し、関連する対応付けと共にデータをインポートします。