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

# コンフィギュレーター

> 1 つの品番のもとに部品バリエーションのファミリーをモデル化します。注文時のパラメータがルールに渡され、各明細の部品表、工順、原価が決まります。

コンフィギュレーターを使うと、1 つの品番でバリエーションのファミリー全体を表せます。技術担当者が、バリエーションを決める**パラメータ**と、その回答を製法に変換する**ルール**を定義します。営業や計画の担当者は、見積明細、受注明細、製造指図ごとにパラメータに回答し、Alforse がその注文専用の製法を作成します。

## 仕組み

構成済みの部品は、3 つの層からなります。

| 層 | 設定する人 | 内容 |
| - | - | - |
| **テンプレート製法** | 技術部門 | 部品に保存された[部品表と工程表](https://docs.alforse.com/ja/docs/reference/methods.md)。出発点になります。 |
| **パラメータ** | 技術部門 | 注文時に尋ねる質問。長さ、仕上げ、材料など。 |
| **ルール** | 技術部門 | パラメータの回答を読み取り、製法のフィールドを設定する、または製法の行を絞り込むコード。 |

構成済みの部品を注文に追加すると、ユーザーがパラメータに回答し、ルールが実行され、明細にはテンプレートではなく、ファミリーの具体的なインスタンスである専用の確定済み製法が割り当てられます。

## 部品の構成を有効にする

部品の製造設定を開き、**設定済み**（「部品は製造用に構成されています」）をオンにします。以降、その部品の保存済み製法はテンプレートとして扱われ、その部品を使うすべての製造指図や見積明細でルールが実行されて、専用の確定済み製法が作られます。

## パラメータを定義する

パラメータは、コンフィギュレーターが尋ねる 1 つの入力です。各パラメータには、**ラベル**（ユーザーに表示される名前）、機械用の**キー**（ルールが参照するもの）、**データ型**があります。

### パラメータのキー

キーは英字と数字で構成され、セグメント間は 1 つのアンダースコアで区切ります。例：`length`、`wall_thickness`。スペース、ハイフン、先頭・末尾・連続したアンダースコアは拒否されます。ルールのコードが、キーで各値を読み取るためです。エラーメッセージが求めているのは、小文字のキーという慣例です。

### データ型

FieldType

<details>
  <summary>**text**`string`</summary>

  自由入力のテキスト値。
</details>

<details>
  <summary>**numeric**`number`</summary>

  長さ、個数、穴径などの数値。
</details>

<details>
  <summary>**boolean**`true / false`</summary>

  はい/いいえの切り替え。
</details>

<details>
  <summary>**list**`enum`</summary>

  用意した固定の選択肢からの 1 つの選択。このタイプでは選択肢（`listOptions`）が必須です。
</details>

<details>
  <summary>**material**`material`</summary>

  実在する材料アイテムへの参照。必要に応じて 1 つの材料形状に絞り込めます。
</details>

<details>
  <summary>**date**`date`</summary>

  カレンダー上の日付。
</details>

### パラメータのグループ化

パラメータを**グループ**に分けると、注文フォームが 1 つの長いリストではなく、寸法、仕上げ、公差などのセクションとして読みやすくなります。グループは、並び順を持つ名前付きの見出しです。新しいパラメータは、移動するまで自動作成される**「未分類」**グループに入ります。グループもパラメータも、ドラッグ&ドロップで並べ替えられます。

## ルールを書く

**ルール**は、1 つの製法フィールドを、パラメータからそのフィールドの値を計算するコードに結びつけます。

### ルールを付ける場所

ルールは、埋め込まれた[製法](https://docs.alforse.com/ja/docs/reference/methods.md)エディター内で、フィールドごとに付けます。

* **部品表：** 各構成品は、`itemId`（構成品の入れ替え）、`quantity`、`unitOfMeasureCode`、`methodType` を公開します。
* **工程表：** 作業区、プロセス、段取時間、労務時間、機械時間などの工程フィールド。

ルールを持つフィールドには、固定値の代わりに「設定済み」のマークが表示されます。

### ルールを作成する

ルールはコードエディターで記述します。エディターが、パラメータから関数のひな形と型定義を生成します。コードは `configure(params)` 関数の本体です。`params` には回答がキーごとに格納されており、フィールドの値を `return` します。

```typescript theme={null}
function configure(params: Params): number {
  // one thread every 2mm of engagement, minimum 4
  return Math.max(4, Math.ceil(params.engagement_length / 2));
}
```

保存する前に、**テストを実行**を選択して出力を確認します。

### 行全体を絞り込む

ルールは、行全体を残すか除外することもできます。`billOfMaterial` または `billOfProcess` のルールは、残す構成品または工程の名前のリストを返します。たとえば、ブール型のパラメータで、サブアセンブリ全体や外注加工のステップを除外できます。

### サンドボックスの制限

NOTE

**ルールはサンドボックスで実行されるため、副作用のない記述にしてください**

ルールのコードは、製法が作成されるときも、エディターでルールをテストするときも、隔離された JavaScript サンドボックスで実行されます。入力はパラメータだけで、出力は返り値だけです。ルールは、ネットワーク、タイマー、ページやサーバーへのアクセスができず、各実行は時間とメモリが制限されます。

ルールのコンパイルに失敗した場合、例外が発生した場合、または制限を超えた場合、Alforse はそのルールを無視します。フィールドはデフォルト値のままで、部品表や工程表はすべての行を保持します。

## 注文でアイテムを構成する

構成は、構成済みの部品を[見積明細](https://docs.alforse.com/ja/docs/reference/quotes.md)、[受注](https://docs.alforse.com/ja/docs/reference/sales-orders.md)の明細、または[製造指図](https://docs.alforse.com/ja/docs/reference/jobs.md)に追加したときに実行されます。

1. 明細または製造指図のフォームで、構成済みの部品を選びます。フォームに**設定**が表示され、**保存**は無効のままです。
2. **設定**を選択し、パラメータに回答します。
3. 送信します。Alforse は回答を明細に保存し、それを使って[製法取得](https://docs.alforse.com/ja/docs/reference/methods.md)エンジンを実行します。
4. ルールが実行され、明細に専用の部品表、工順、原価が割り当てられます。**保存**が有効になります。

後で明細を再構成すると、価格がクリアされ、新しい回答から製法が再度導出されます。

HEADS UP

**構成済みアイテムの製法は手動で選べません**

製法はルールから導かれるため、構成済みアイテムの製造指図や明細に別の製法を指定することはできません。製法取得エンジンは、この試みを「Cannot override method of configured item」（構成済みアイテムの製法は上書きできません）で拒否します。異なる結果を得るには、パラメータを変更してください。

## トラブルシューティング

| 症状 | 原因 | 対処 |
| - | - | - |
| 「Key must be lowercase and underscore separated」（キーは小文字でアンダースコア区切りにする必要があります） | パラメータのキーにスペース、ハイフン、または不適切な位置のアンダースコアが含まれている。 | `wall_thickness` のようなキーを使う。 |
| 「List options are required」（リストの選択肢は必須です） | データ型が **list** だが、選択肢が入力されていない。 | 選択肢を追加するか、別のタイプを選ぶ。 |
| 「Cannot override method of configured item」（構成済みアイテムの製法は上書きできません） | 構成済みアイテムに別の製法を割り当てようとした。 | 代わりにパラメータを変更する。 |
| ルールが効いていないように見える | ルールがサンドボックスで失敗し、フィールドがデフォルト値のままになった。 | ルールを開き、**テストを実行**を選択して、エラーを修正する。 |
| **保存**が無効のままになる | 構成済みの明細が、まだ構成されていない。 | **設定**を選択し、パラメータに回答して送信する。 |

## 関連項目

**アイテム**

アイテムマスターと、「設定済み」を含むタイプ別の設定。

[Open](https://docs.alforse.com/ja/docs/reference/items.md)

**製法と調達**

コンフィギュレーターが注文ごとに確定する部品表と工順。

[Open](https://docs.alforse.com/ja/docs/reference/methods.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.