> ## 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.

# 原材料

> 按材质、形状、尺寸、表面处理、牌号和类型定义原材料库存，让 Alforse 根据这些属性生成每种原材料的 ID、名称和编码。

**原材料**是类型为 *Material*（原材料）的[物料](https://docs.alforse.com/zh/docs/reference/items.md)，作为原料库存持有，例如钢板或铝棒。您不必用自由文本描述它，而是从结构化的属性表中选择值，Alforse 会据此组合出原材料的标识、显示名称和编码。工程师和采购员借此避免同一种库存以不同名称被重复录入。

## 概念

### 六个属性

一种原材料最多由六个属性描述。每个属性都是一个查找表，原材料通过 ID 引用它：`materialSubstanceId`、`materialFormId`、`dimensionId`、`finishId`、`gradeId` 和 `materialTypeId`。

FieldType

<details>
  <summary>**材质**`materialSubstance`</summary>

  库存由什么制成，例如钢、铝、不锈钢或钛。具有 `name` 和 `code`。
</details>

<details>
  <summary>**形状**`materialForm`</summary>

  产品的外形，例如薄板、厚板、圆棒或锭。具有 `name` 和 `code`。
</details>

<details>
  <summary>**尺寸**`materialDimension`</summary>

  一个有名称的规格。隶属于某个**形状**，因为板材尺寸与棒材尺寸不同。带有 `isMetric`。
</details>

<details>
  <summary>**表面处理**`materialFinish`</summary>

  一种表面处理。隶属于某个**材质**。
</details>

<details>
  <summary>**牌号**`materialGrade`</summary>

  某个**材质**之下的牌号，例如钢牌号 1018。
</details>

<details>
  <summary>**类型**`materialType`</summary>

  同时与**材质和形状**绑定的产品类型，例如热轧钢板。具有 `name` 和 `code`。
</details>

### 各选项如何相互依赖

**材质**和**形状**相互独立。其余每个属性都由其中一个或两个来筛选：

| 属性 | 选项按以下条件筛选 |
| - | - |
| 尺寸 | 所选的形状 |
| 表面处理 | 所选的材质 |
| 牌号 | 所选的材质 |
| 类型 | 所选的材质与形状共同决定 |

因此新建原材料的表单是自上而下填写的：先选材质和形状，其下的列表就会相应收窄。如果更改材质，牌号和表面处理列表也会随之变化。

NOTE

**每种原材料内部都是自洽的**

由于列表按其父级筛选，您无法把棒材尺寸附加到板材上，也无法把不锈钢牌号附加到铝上。系统只提供有效的组合。

## 属性值从哪里来

Alforse 提供一组所有公司都可见的初始值，您的公司可以在此基础上添加自己的值。

| 来源 | 存储位置 | 可见范围 |
| - | - | - |
| 系统值 | `materialStandardDefinition` | 所有公司 |
| 您的新增项 | `materialCompanyDefinition` | 仅您的公司 |

两张表都包含全部六类属性，通过 `definitionKind`（*substance*、*form*、*type*、*grade*、*finish*、*dimension*）区分。每一类的要求如下：

FieldType

<details>
  <summary>**材质、形状**`definitionKind`</summary>

  名称，以及必填的 `code`，最长 10 个字符：大写字母、数字和连字符。
</details>

<details>
  <summary>**类型**`definitionKind`</summary>

  名称和编码，范围同时限定于一个**材质和一个形状**。
</details>

<details>
  <summary>**尺寸**`definitionKind`</summary>

  名称，范围限定于一个**形状**，外加 `isMetric`。
</details>

<details>
  <summary>**表面处理、牌号**`definitionKind`</summary>

  名称，范围限定于一个**材质**。
</details>

NOTE

**重复规则**

在同一家公司内，一个值按种类、名称（不区分大小写）、编码及其材质和形状范围必须唯一。因此同一名称可以存在于两个不同的父级之下，但不能在同一父级下出现两次。编辑通过幂等的命令日志（`materialDefinitionCommand`）应用，所以重复的请求不会产生重复项。

## 创建原材料

原材料如何获得 ID，取决于公司设置 `materialGeneratedIds`，位于**设置 → 物料 → 原材料ID**。

| 设置 | 您需要输入 | Alforse 的做法 |
| - | - | - |
| **开**（自动生成） | 材质和形状，以及任何可选属性 | 隐藏**原材料ID**和简短描述字段，并根据属性推导它们。更改某个属性会重新生成 ID 和名称。 |
| **关**（手动） | **原材料ID**，必填 | 使用您输入的 ID。 |

启用自动生成 ID 时，材质和形状是最低要求：一种原材料至少是“某种材质的某种形状”，而尺寸、表面处理、牌号和类型则进一步细化它。

### 名称和编码如何生成

* **显示名称**由材质和形状名称，以及您选择的表面处理、牌号和尺寸名称组合而成。
* **原材料编码**由材质、形状和类型的编码组合而成。

### ID、修订版和尺寸

原材料的可读 ID 就是它的原材料 ID，所以它的零件号和原材料 ID 是同一个值。一种原材料可以对应多条物料记录：每个**修订版**一条，每种库存尺寸一条。您分配的 `sizes` 会成为[工单](https://docs.alforse.com/zh/docs/reference/jobs.md)和采购订单上可选的变体；每种尺寸都是一条独立的物料行，并共用该原材料的 ID。

## 故障排除

大多数原材料错误来自缺少必填属性。哪些属性必填取决于是否自动生成 ID。

### "Substance is required" 或 "Shape is required"

**原因**：您在启用自动生成 ID 的情况下创建原材料。在此模式下，Alforse 根据属性生成 ID 和名称，因此材质和形状（“Shape”）都是必填的。
**解决**：选择一个材质和一个形状。尺寸、表面处理、牌号和类型可以留空。

### "Material ID is required"

**原因**：ID 为手动输入，所以会显示**原材料ID**字段，且不能为空。
**解决**：输入一个 ID，或开启自动生成 ID 让 Alforse 为您推导。

### 原材料ID字段意外出现或消失

**原因**：该字段跟随 `materialGeneratedIds` 设置。开启时隐藏；关闭时显示并设为必填。
**解决**：检查**设置 → 物料 → 原材料ID**。

### 新的属性值被拒绝

**原因**：每个值都需要其父级，部分还需要名称和编码。

| 创建 | 需要 | 缺失时的错误 |
| - | - | - |
| 表面处理或牌号 | 一个材质 | "Substance is required" |
| 尺寸 | 一个形状 | "Shape is required" |
| 类型 | 一个材质和一个形状 | "Substance is required"、"Shape is required" |
| 材质、形状或类型 | 名称和编码 | "Name is required"、"Code is required" |
| 尺寸、表面处理或牌号 | 名称 | "Name is required" |

**解决**：先选择父级，再为该值命名。

### "Failed to insert material" 或 "Failed to update material"

**原因**：服务器端保存失败。常见情况是该 ID 对应的原材料已经存在，因为原材料按其组合属性唯一，数据库约束会拒绝重复。
**解决**：修改某个属性或 ID，使组合唯一。

## 相关内容

**物料**

原材料是类型为 *Material* 的物料；追踪、计量单位和其他物料字段在此说明。

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

**方法与寻源**

原材料会成为方法物料清单中的组件。

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


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