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

# 导入与导出

> 将任意数据表的当前视图下载为 CSV，并通过可重复运行的引导式导入向导，从 CSV 载入客户、供应商、物料、方法、工作中心、查找列表、报价和期初库存。

CSV 是数据批量进出 Alforse 的方式。任何人都可以把表格导出到电子表格；管理员则主要在上线阶段和大批量更新时执行导入。导出文件由浏览器根据表格当前显示的内容生成。导入则通过向导完成：先映射列，再由具有特权的后台函数在单个事务中写入所有记录。

## 将表格导出为 CSV

基于 Alforse 共享数据网格构建的每个表格，表头都有一个**下载 CSV**（Download CSV）按钮。选择它即可保存该表格。

[![表头带有“下载 CSV”图标的零件列表](https://docs.alforse.com/screens/reference-parts-csv.png)](https://docs.alforse.com/screens/reference-parts-csv.png)

每个 Alforse 数据表都可以导出其当前视图。请先筛选并排列好各列，因为文件与屏幕上的内容一致。

### 文件与屏幕内容一致

下载的是您正在查看的视图，而不是数据库的完整提取。

* **行：**仅包含当前页或当前结果集中的行。请先搜索或筛选，以控制导出的内容。
* **列：**仅包含当前已保存视图中可见的列，顺序与您排列的一致。隐藏的列不会导出，选择列、展开列和操作列也从不写入。
* **表头：**与网格中的标签完全相同。
* **引用：**物料、供应商、员工、客户等 ID 列写入的是可读的**名称**，而不是 ID。
* **仅导出列：**少数列从不在网格中显示，但始终会出现在文件里。

NOTE

**下载的文件始终名为 data.csv**

文件由浏览器生成并保存为 `data.csv`，服务器不参与。如果导出多个表格，请为每次下载重命名，否则文件会互相冲突。

## 可导入的记录

可导入的实体，其列表页面上各有一个**批量导入**（Bulk Import）菜单。除此之外的内容没有批量导入功能。

| 实体 | 起始位置 | 说明 |
| - | - | - |
| 客户与客户联系人 | 客户列表（**客户**和**联系人**） | 一行客户数据还可以包含地址、付款条款和联系人类字段。 |
| 报价 | 报价列表：**带报价行的报价单**、**报价**、**报价行** | 需要销售更新权限。 |
| 供应商 | 供应商列表 | 一行还可以包含地址、付款条款、运输方式和国际贸易术语。 |
| 零件、原材料、工具、耗材、服务 | 各物料类型的列表 | 除物料本身外，一行还可以创建供应商零件关联、设置采购提前期并写入单位成本初值。 |
| 工作中心 | 工作中心列表 | 包含人工、机器和间接费用费率以及位置。 |
| 工艺 | 工艺列表 | |
| 查找列表 | 各列表自己的页面 | 存储单元和存储类型、报废原因、计量单位、物料过账组、部门，以及材料查找项（物质、形态、表面处理、牌号、类型、尺寸）。 |
| 库存、批次和序列号数量 | **库存管理 → 数量** | 为现有物料导入期初库存，每种跟踪类型导入一次。参见[期初库存](#opening-stock)。 |
| BOM、工序、带方法的零件 | 零件列表和工具列表 | 参见[方法导入](#method-imports)。 |

HEADS UP

**固定资产和工装夹具不支持导入**

模型中定义了 `fixedAsset` 导入结构，但导入函数将其标记为不可导入，并会拒绝此类文件。所有列表也都不提供工装夹具导入。这两类数据请在应用中创建；BOM 行则通过 **BOM** 方法导入或在应用中录入。

## 运行导入

**上传。**选择**批量导入**，选定实体，然后将 CSV 拖入。浏览器会读取表头行，文件则上传到您公司的私有存储。提示：请先下载该实体的**模板**。模板包含一行表头（列出每个字段的标签）和一行提示（标明每列是 `REQUIRED` 还是 `optional`，并列出允许的枚举值）——请用您自己的数据覆盖提示行。

\*\*映射列。\*\*将每个 CSV 列与一个 Alforse 字段配对。所有必填字段都必须有映射；设为 **N/A** 的列将被忽略。枚举字段——补货方式、跟踪类型等——还需要把您的原始值与 Alforse 的值匹配。向导会预先匹配明显的值（CSV 中的 `"B"` 会建议为 `"Buy"`），并允许您当场补充缺失的查找项，例如类型或状态。

\*\*验证。\*\*您映射后的数据会按该实体的模式进行检查。遗漏的必填字段或无法解析的值，会在任何写入之前被标出。

\*\*导入。\*\*提交后，您的映射会交给具有特权的 **import** 函数。它再次从存储中取回文件，应用列映射和枚举映射，逐行判断是插入还是更新，并在一个数据库事务中提交全部内容。

NOTE

**未匹配的枚举值会变成默认值**

枚举值没有映射的行仍然会被导入——该字段只是取其配置的**默认值**。例如，未映射的 `"Replenishment System"` 最终会变成 `"Buy and Make"`。当默认值不合适时，请显式映射这些值。

## 插入、更新或跳过

重复运行标准导入是安全的：标识符已被 Alforse 识别的行会更新现有记录，而不是创建副本。每一行在写入之前都会先分类。

<details>
  <summary>**插入**</summary>

  该行的唯一 ID 和名称都没有匹配到任何记录，因此创建新记录，并保存一条 CSV ID 映射供以后导入使用。
</details>

<details open>
  <summary>**更新**</summary>

  存在匹配项。Alforse 先通过已保存的 CSV 到记录的映射尝试匹配 CSV 的唯一 ID，再尝试名称，并更新找到的记录。
</details>

<details>
  <summary>**跳过**</summary>

  同一文件中的另一行已经使用了该 ID 或名称，因此该行被丢弃，并作为信息报告。
</details>

<details>
  <summary>**错误**</summary>

  缺少必填数据——通常是名称为空。该行会被报告，供您更正后重新导入。
</details>

唯一 ID 的匹配依赖于一个以 `csv` 来源为键的共享外部映射表；这就是同一文件导入两次是更新而不是重复创建的原因。您先在应用中创建的记录没有这样的映射，但之后只要 CSV 中的**名称**相同，仍然能找到并更新它们。

NOTE

**自定义字段保持为空**

导入会填写实体的标准字段及其文档中列出的附属表——地址、付款、供应商零件、成本——但**不会**填写各公司的自定义字段。请随后在记录的表单中填写。

## 方法导入

零件列表和工具列表提供三种针对物料清单和工艺路线的导入：

| 导入 | 载入的内容 |
| - | - |
| **BOM** | 物料清单行 |
| **工序** | 工序及其步骤、工具和参数 |
| **带方法的零件**（Parts with Methods） | 带有 BOM 和工艺路线的完整新零件 |

这些文件中的每一行都带有类型标记——`PART`、`BOM`、`BOP`、`STEP`、`TOOL` 或 `PARAM`——以及它所属的父零件。

### 行的放置方式

* 行会**添加**到已存在的制造方法中。
* **制造方法版本**留空时，目标为未归档的最高版本。如果指定版本，它必须是大于 0 且小数位不超过 2 位的数字。
* 新的 BOM 行放在已有行之后。
* **Op No** 是工序的顺序号，必须为数字。与现有工序顺序号一致的值，会把该行的步骤、工具和参数添加到那道工序上；`10`、`10.0` 和 `010` 视为相同。

### 安全重跑与锁定

* 方法中已有的任何内容——相同的物料、工序、步骤名称、工具或参数键——都会被跳过并列出，因此重复运行文件不会造成损害。
* 只有草稿版本会被修改，并且导入遵守与 BOM 和 BOP 编辑器相同的变更通知与下达锁定。
* 如果某个零件被拒绝，会列出原因，且该零件的所有行都不会写入。
* 当下达控制设为警告时，导入会像编辑器一样写入已下达的修订版，结果中该零件会显示在警告之下。

### 默认值与拒绝

空单元格会获得与编辑器相同的取值：没有**计量单位**的 BOM 行采用该物料自身的单位；没有**操作类型**或**操作描述**的工序，采用其工艺的类型和名称。

编辑器拒绝的内容，导入同样拒绝——例如指向零件自身、工具或服务的 BOM 行，不是工具类物料的工具，负的数量、时间或成本，以及最大值低于最小值的步骤。检验工序需要检验计划，而检验计划无法用 CSV 表达，请在应用中创建。

## 期初库存

**库存管理 → 数量**上的三种导入用于载入现有库存——通常是上线时的一次性任务。

### 过账的内容

每一行都会成为一条**正向调整**（Positive Adjmt.），通过与手动库存调整相同的核心流程过账。这会产生一条以物料当前成本、按当天日期记录的物料分类账分录，以及记在整个文件共用的一张库存调整日记账上的一对行。成本为零的物料不会过账日记账行。导入期间不会运行库存调整业务规则，并且导入只能**增加**库存——不会减少数量，也不会直接设定数量。

### 按跟踪类型选择导入

| 导入 | 适用的跟踪方式 | 列 |
| - | - | - |
| **库存数量** | **库存** | 零件编号、修订版、位置、存储单元、数量、评论 |
| **批次数量** | **批次** | 零件编号、修订版、位置、存储单元、批号、数量、到期日期、评论——每一行创建一个新批次 |
| **序列号数量** | **序列号** | 零件编号、修订版、位置、存储单元、序列号、到期日期、评论——没有数量列，因为每一行就是一个单位 |

如果某行的物料跟踪类型不同，会报错并指出正确的导入。非库存类物料不能入库。

### 列规则

* **零件编号 + 修订版**必须能确定一个现有物料；空的修订版按 `0` 处理，未知的物料会报错。
* **位置**在映射时匹配到您的某个位置。
* **存储单元**为可选项，在该位置内按名称匹配，不区分大小写。指定了不存在的存储单元会报错——导入从不创建存储单元。
* **数量**必须为正数。
* **到期日期**为可选项，格式为 `YYYY-MM-DD`。如果对设有固定时长保质期的物料省略该项，则按手动调整的方式计算有效期。
* 没有唯一 ID 列时，这些导入不会保存 CSV ID 映射。

HEADS UP

**将库存数量文件运行两次会使库存翻倍**

按库存跟踪的行没有自然键，因此每次运行时每个有效行都会再次过账。批次和序列号的行则有保护：物料已有的批号或序列号（无论处于什么状态）会被**跳过**，文件内首次出现之后重复出现的号码也会被跳过。两个不同的物料可以使用相同的序列号。

## 查看结果

失败按行处理——有问题的行会被报告，正常的行仍会导入。报告包含：

| 报告部分 | 内容 |
| - | - |
| **inserted** / **updated** | 写入的记录数。 |
| **errors** | 因缺少必填数据而需要更正并重新导入的行，每条都带有行号、原因和原始单元格值。 |
| **skipped** | 被有意排除的行——文件内重复或记录已存在——格式相同。 |

方法导入将**零件**计为已插入和已更新，并另外给出 BOM 行、工序、步骤、工具和参数的合计，例如“4 parts updated. Added: 6 BOM lines. 0 rows need fixing, 2 rows skipped.”（更新了 4 个零件。新增：6 条 BOM 行。0 行需要修正，跳过 2 行。）

由于失败的行保留了原始单元格，结果界面可以直接指出需要修正的地方，无需再次翻阅您的文件。只有出现严重错误时整个导入才会失败——例如文件无法下载，或数据库意外出错——此时您看到的是一条错误消息，而不是逐行报告。

## 权限

HEADS UP

**仅在提交时检查一次，因为导入会绕过行级安全**

导入函数使用绕过 RLS 的特权数据库连接，因此 Alforse 在您提交时只检查一次您的**导入权限**。您需要对应模块的更新权限——客户对应销售，供应商对应采购，物料和方法对应零件，工作中心和工艺对应生产，存储单元和期初库存对应库存——否则导入会在写入任何内容之前被拒绝。期初库存还需要库存创建权限，与手动库存调整相同。

## 相关内容

**库存管理**

现有库存，以及期初库存导入所过账的手动调整。

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

**方法**

BOM 和工艺路线，由方法导入载入。

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

**物料**

由物料导入创建的零件、原材料、工具、耗材和工装夹具。

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

**供应商与客户**

由客户和供应商导入创建的合作伙伴记录，含地址和条款。

[Open](https://docs.alforse.com/zh/docs/reference/suppliers-and-customers.md)

**工作中心**

由工作中心导入创建的产能记录。

[Open](https://docs.alforse.com/zh/docs/reference/work-centers.md)


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