> ## Documentation Index
> Fetch the complete documentation index at: https://help.dingtalk.io/llms.txt
> Use this file to discover all available pages before exploring further.

# 関連フォーム

> DingTalk YiDAの関連フォームコンポーネントの使い方を解説します。他フォームからのデータ連携、表示設定、主・副情報の設定、複数選択モード、データ入力ルール、レコード作成、データフィルタリングまで、業務システム構築に必要な機能を紹介します。

## 1. 関連フォーム

### 1.1 関連フォームとは

関連フォームコンポーネントは、他のフォームのデータを連携し、現在のフォームのコンポーネントにデータを入力するために使用します。

また、関連フォームからデータを取得する際のフィルタリングにも対応しています。

関連フォームコンポーネント

**注意：最新バージョンでは、** 関連フォームはアプリを跨いだフォームに対応しています。

#### 1.2 ユースケース

* 現在のフォームから別のフォームのデータを表示し、ワンクリックで開けます。

## 2. 関連属性

### 2.1 関連フォームと表示内容

* 通常のフォームまたは作業フローフォームにリンクします。

関連属性

表示設定

#### 2.1.1 関連フォームの表示情報（主情報と副情報）

主情報と副情報は、関連フォームコンポーネントのドロップダウンリストでデータを表示・検索するために使用します。

主情報と副情報の設定

* 主情報はデータ送信時の検索に利用できます。現在はテキスト入力コンポーネント（シリアル番号を含む）のみ対応しています。副情報には任意のフォームコンポーネントを指定できます。
* データ送信時には表示設定が必須です。シリアル番号機能が有効の場合、主情報にはデフォルトでシリアル番号が表示されます。必要に応じて変更してください。

**注意**：シリアル番号機能が有効で値が入力されていない場合、デフォルトでシリアル番号が使用されます。

#### 2.1.2 複数選択モード

関連フォームは単一選択モードと複数選択モードに対応しています。デフォルトは単一選択（複数選択モードはオフ）です。

複数選択モード

**注意**：データ入力は単一選択モードのみ対応しています。複数選択モードには対応していません。

#### 2.1.3 データ入力

* 他のフォームからデータを選択するだけでなく、データ入力機能により、選択した関連レコードのフィールドを現在のフォームのフィールドにコピーできます。

データ入力

* 入力条件を設定する際、表示されるダイアログボックスで同一フィールドに対して複数の条件を定義できます。

注意：関連フォームをサブフォームと併用する場合、単一レコードのデータ数式連動のみ対応しています。サブフォームへの複数レコードのデータ入力には対応していません。

* データ構造の違いにより、以下の表のようにフィールドマッピングに制限があります。

**データ入力のフィールドマッピング**

| **関連フォームのフォールド種類**                     | **現在のフォームで選択可能なフォールド種類**                 |
| -------------------------------------- | ---------------------------------------- |
| Select                                 | Select、Dropdown Select、一行テキスト、数値         |
| Dropdown Select                        | Select、Dropdown Select、一行テキスト、数値         |
| 複数選択                                   | 複数選択、Dropdown Multiselect、数値             |
| Dropdown Multiselect                   | 複数選択、Dropdown Multiselect、数値             |
| 一行テキスト                                 | Select、Dropdown Select、一行テキスト、複数行テキスト、数値 |
| 複数行テキスト                                | Select、Dropdown Select、一行テキスト、複数行テキスト、数値 |
| その他のタイプ（住所など）                          | 同じタイプのみ（住所など）                            |
| \[システムフィールド] インスタンスID（現在はサブフォーム入力のみ対応） | 一行テキスト                                   |

#### 2.1.4 関連フォームでのレコード作成を許可

関連フォームコンポーネントはデフォルトでレコード作成を許可しており、選択ドロップダウンと管理ページに作成ボタンが表示されます。

関連フォームでレコードを作成

* 作業フローフォームはレコード作成に対応していません。

**① 関連フォームの管理ページ**

関連フォームのデータをフィルタリング・検索できます。このページは対象フォームのデータ管理ページとして機能します。

#### 2.1.5 データフィルタリング

データフィルタリングとは、フィルター条件を事前に定義し、データ送信時に表示されるデータの範囲を制限する機能です。

データフィルタリング

**① フィルター条件の設定**

* 「値」と「フィールド」の2種類が利用できます。

値：固定値。右側の入力ボックスまたはコントロールで値を入力または選択します。

フィールド：現在のページの特定フィールドの値に応じて条件が動的に変わり、ドロップダウンリストと検索結果に反映されます。

**注意：**

* すでに選択された関連データは条件変更の影響を受けず、条件を満たさなくなってもクリアされません。
* 各フィールドは1組のフィルター条件のみ対応します。日付範囲などの一部のコンポーネントは、範囲別の個別条件に対応しています。

**② フィルター条件のフィールド制限**

システム制限により、すべてのフィールドが検索やフィールドフィルター条件として利用できるわけではありません。

以下の表に、検索に対応しないコンポーネントと、フィールドフィルタータイプのフィールドマッピングを示します。

**検索に対応しないコンポーネント**

<table>
  <tr>
    <td>**コンポーネント名**</td>
    <td>**コンポーネント識別子**</td>
  </tr>

  <tr>
    <td>サブフォーム</td>
    <td>TableField</td>
  </tr>

  <tr>
    <td>リッチテキスト</td>
    <td>EditorField</td>
  </tr>

  <tr>
    <td>関連フォーム</td>
    <td>AssociationFormField</td>
  </tr>

  <tr>
    <td colSpan={2}>ページ設定で検索対象から除外されたその他のフィールド</td>
  </tr>
</table>

**フィールドタイプ条件のフィールドマッピング**

| **関連フォームのフォールド種類**   | **現在のフォームで選択可能なフォールド種類**                 |
| -------------------- | ---------------------------------------- |
| Select               | Select、Dropdown Select、一行テキスト、数値         |
| Dropdown Select      | Select、Dropdown Select、一行テキスト、数値         |
| 複数選択                 | 複数選択、Dropdown Multiselect                |
| Dropdown Multiselect | 複数選択、Dropdown Multiselect                |
| 一行テキスト               | Select、Dropdown Select、一行テキスト、複数行テキスト、数値 |
| 複数行テキスト              | Select、Dropdown Select、一行テキスト、複数行テキスト、数値 |
| その他のタイプ（住所など）        | 同じタイプのみ（住所など）                            |

**注意**：フィルター条件が設定されたフィールドは、利用可能な検索フィールドの一覧に表示されなくなります。

## 3. 関連フォームデータの送信と詳細表示

設定されたデータフィルタリングおよび入力条件に従って関連フォームコンポーネントを含むページを入力し、送信する際は以下にご注意ください。

1. 関連ページが通常のフォームページの場合、送信済みのすべてのデータが選択可能になります。

2. 関連ページが作業フローページの場合、送信済みデータは承認完了後にのみ選択可能になります。

PCでの送信後

1. 詳細ページで関連フォームフィールドをクリックすると、関連インスタンスの詳細ページが開きます。

**注意**：関連フォームの主情報フィールドにデータがない場合、代わりに該当データインスタンスのFINST IDが表示されます。青いハイパーリンクとして表示され、クリックすると詳細ページが開きます。

モバイル端末での送信後：

1. モバイル詳細ページで関連フォームコンポーネントの右側に表示される矢印アイコンは、レコードを開けることを示します。

## 4. データ形式

```javascript theme={"theme":{"light":"github-light","dark":"github-dark"}}
[
  {
    appType: 'APP_XOXRQ4842LVM51RRJC7N',
    formType: 'receipt',
    formUuid: 'FORM-DFYJ319VV0ILV3BW1C8HHBHHJPXI3X095L5IK1',
    instanceId: 'FINST-DFYJ319VD4IL2SMEZH8Q63MY7UR3302NRL5IK1',
    subTitle: 'BB',
    title: 'AA',
  }
]
```

## 6. FAQ

<AccordionGroup>
  <Accordion id="q1" title="Q: 関連フォームと、他のフォームからのデータ関連機能の違いは何ですか？">
    関連フォームの方が高機能で、旧機能を段階的に置き換えていきます。他のフォームからデータを連携する旧機能の利用は継続しないでください。
  </Accordion>

  <Accordion id="q2" title="Q: なぜ関連フォームはサブフォーム内のコンポーネントを参照できないのですか？">
    現時点では対応していません。
  </Accordion>

  <Accordion id="q3" title="Q: データ連動で関連フォームコンポーネントを選択できますか？">
    現時点では対応していません。
  </Accordion>

  <Accordion id="q4" title="Q: JSで関連フォームコンポーネントに値を設定するにはどうすればよいですか？">
    **手順：**

    以下のコードをコピーし、必要に応じて修正してください。

    ```javascript theme={"theme":{"light":"github-light","dark":"github-dark"}}
    this.$('associationFormComponentId').setValue(
    [
      {
        appType: 'APP_XOXRQ4842LVM51RRJC7N',  // アプリコード
        formType: 'receipt',    // 関連フォームコンポーネントにバインドされているフォームのタイプ：receipt または process
        formUuid: 'FORM-DFYJ319VV0ILV3BW1C8HHBHHJPXI3X095L5IK1',  // フォームの一意ID
        instanceId: 'FINST-DFYJ319VD4IL2SMEZH8Q63MY7UR3302NRL5IK1',  // 関連データインスタンスのID
        subTitle: 'BB',  // 副情報フィールド
        title: 'AA',  // 主情報フィールド
      },
      {
        appType: 'APP_XOXRQ4842LVM51RRJC7N',  // アプリコード
        formType: 'receipt',    // 関連フォームコンポーネントにバインドされているフォームのタイプ：receipt または process
        formUuid: 'FORM-DFYJ319VV0ILV3BW1C8HHBHHJPXI3X095L5IK2',  // フォームの一意ID
        instanceId: 'FINST-DFYJ319VD4IL2SMEZH8Q63MY7UR3302NRL5IK2',  // 関連データインスタンスのID
        subTitle: 'DD',  // 副情報フィールド
        title: 'CC',  // 主情報フィールド
      }
      ……
    ]
    )
    ```

    結果：
  </Accordion>

  <Accordion id="q5" title="Q: 関連フォームに20件以上のレコードがありますが、20件しか表示されません。残りのデータにアクセスするにはどうすればよいですか？">
    関連フォームはデフォルトで20件のレコードのみ表示します。その他のコンテンツはキーワードを入力して検索してください。
  </Accordion>

  <Accordion id="q6" title="Q: 関連フォームは一括インポートに対応していますか？">
    対応しています。インポートルールについては、[https://docs.aliwork.com/docs/yida\_updates/gddpov#k27QX](https://docs.aliwork.com/docs/yida_updates/gddpov#k27QX) をご参照ください。
  </Accordion>

  <Accordion id="q7" title="Q: 関連フォームは重複排除設定に対応していますか？">
    現時点では未対応です。回避策として、業務関連ルールを使用してデータを中間テーブルに同期し、中間テーブル内のデータを一意に保った上で、その中間テーブルを関連フォームのデータソースとして設定してください。
  </Accordion>

  <Accordion id="q8" title="Q: エラー「データがフィルター条件を満たしていません」が表示された場合はどうすればよいですか？">
    このエラーメッセージは、関連データにスペースが含まれていることが原因です。関連データからスペースを削除してください。
  </Accordion>

  <Accordion id="q9" title="Q: 関連フォームで選択したフィールドがインスタンスIDとして表示されるのはなぜですか？">
    関連フォームの閲覧権限グループでそのフィールドが非表示になっていないか確認してください。非表示になっている場合、関連データを選択する際にフィールドには -- と表示され、選択後にレコードのインスタンスIDが表示されます。
  </Accordion>

  <Accordion id="q10" title="Q: なぜ EQ(関連フォームコンポーネント, 'aaa') はエラーになるのですか？">
    関連フォームコンポーネントは、UPSERT数式などの業務関連ルールの条件としてまだ利用できません。このような場合は、代わりに `Dropdown Select` または `Dropdown Multiselect` コンポーネントを使用してください。
  </Accordion>
</AccordionGroup>
