---

pkg: '@nocobase/plugin-action-duplicate'

---

# 複製

## 紹介

複製アクションを使用すると、既存のデータに基づいて新しいレコードを素早く作成できます。「**直接複製**」と「**フォームに複製して入力を継続**」の2つの複製方法をサポートしています。

## インストール

内蔵プラグインのため、個別のインストールは不要です。

## 複製モード

![20260209224344](https://static-docs.nocobase.com/20260209224344.png)

### 直接複製

![20260209224506](https://static-docs.nocobase.com/20260209224506.png)

- デフォルトでは「直接複製」として実行されます。
- **テンプレートフィールド**：複製するフィールドを指定します。全選択が可能で、設定は必須です。

![20260209225910](https://static-docs.nocobase.com/20260209225910.gif)

設定完了後、ボタンをクリックするだけでデータが複製されます。

### フォームに複製して入力を継続

設定されたテンプレートフィールドが**デフォルト値**としてフォームに入力されます。ユーザーはテンプレートフィールドの値に基づいて内容を修正し、送信することで複製を完了できます。

![20260209224704](https://static-docs.nocobase.com/20260209224704.png)

**テンプレートフィールドの設定**：チェックを入れたフィールドのみがデフォルト値として引き継がれます。

![20260209225148](https://static-docs.nocobase.com/20260209225148.png)

#### フォームフィールドを同期

- 現在のフォームブロックに設定されているフィールドを、テンプレートフィールドとして自動的に解析します。
- その後、フォームブロックのフィールドを変更した場合（関連フィールドのコンポーネント調整など）、整合性を保つために再度テンプレート設定を開き、「**フォームフィールドを同期**」をクリックする必要があります。

![20260209225450](https://static-docs.nocobase.com/20260209225450.gif)

テンプレートデータがフォームのデフォルト値として入力され、ユーザーは修正して送信することで複製を完了できます。

### 補足説明

#### 複製、参照、プリロード

フィールド（関連タイプ）によって処理ロジックが異なります：**複製 / 参照 / プリロード**。関連フィールドの**フィールドコンポーネント**も処理ロジックに影響します。

- セレクト / レコードピッカー：**参照**に使用されます。
- サブフォーム / サブテーブル：**複製**に使用されます。

**複製**

- 通常のフィールドは複製されます。
- `hasOne` / `hasMany` は複製のみ可能です（これらの関係では、プルダウン選択やレコード選択などの選択系コンポーネントは使用せず、サブフォームやサブテーブルなどのコンポーネントを使用してください）。
- `hasOne` / `hasMany` のコンポーネントを変更しても、処理ロジックは変わりません（複製のままです）。
- 複製される関連フィールドでは、すべてのサブフィールドを選択できます。

**参照**

- `belongsTo` / `belongsToMany` は参照として扱われます。
- フィールドコンポーネントを「プルダウン選択」から「サブフォーム」に変更すると、関係は**参照から複製**に変わります（複製に変わると、すべてのサブフィールドが選択可能になります）。

**プリロード**

- 参照フィールド配下の関連フィールドはプリロードとして扱われます。
- プリロードフィールドは、コンポーネントの変更後に参照または複製に変わる可能性があります。

#### 全選択

- すべての**複製フィールド**と**参照フィールド**にチェックを入れます。

#### データテンプレートとして選択されたレコードからは、以下のフィールドが除外されます：

- 複製される関連データの主キーは除外されます。参照およびプリロードの主キーは除外されません。
- 外部キー。
- 重複を許可しないフィールド（一意制約）。
- 並べ替えフィールド。
- 自動採番フィールド。
- パスワード。
- 作成者、作成日時。
- 最終更新者、最終更新日時。

#### フォームフィールドを同期

- 現在のフォームブロックで設定済みのフィールドをテンプレートフィールドとして自動解析します。
- フォームブロックのフィールドを変更（関連フィールドのコンポーネント調整など）した後は、整合性を確保するために再度同期を行う必要があります。