> ## 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をダウンロード**ボタンがあります。選択するとテーブルが保存されます。

[![テーブルのヘッダーに 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` として保存します。サーバーは関与しません。複数のテーブルをエクスポートする場合は、ダウンロードごとに名前を変更してください。そうしないと衝突します。

## インポートできるレコード

インポート可能な各エンティティには、一覧画面に**一括インポート**メニューがあります。それ以外には、一括インポートはありません。

| エンティティ | 開始場所 | 備考 |
| - | - | - |
| 得意先と得意先の担当者 | 得意先一覧（**得意先**と**担当者**） | 得意先の行には、住所、支払条件、担当者のフィールドも含められます。 |
| 見積 | 見積一覧：**明細付き見積**、**見積**、**見積明細** | 販売の更新権限が必要です。 |
| 仕入先 | 仕入先一覧 | 行には、住所、支払条件、配送方法、インコタームも含められます。 |
| 部品、材料、工具、消耗品、サービス | 各アイテムタイプの一覧 | アイテムと並行して、1 つの行で仕入先部品のリンクの作成、購買リードタイムの設定、単位原価の初期設定ができます。 |
| 作業区 | 作業区一覧 | 労務、機械、間接費のレートとロケーションを含みます。 |
| プロセス | プロセス一覧 | |
| ルックアップリスト | 各リストの専用画面 | 保管ユニットと保管タイプ、スクラップ理由、測定単位、アイテム転記グループ、部門、材料のルックアップ（物質、形状、仕上げ、等級、タイプ、寸法）。 |
| 在庫数量、バッチ数量、シリアル数量 | **在庫 → 数量** | 既存アイテムの開始時在庫。追跡タイプごとに 1 つのインポート。[開始時在庫](#opening-stock)を参照してください。 |
| BOM、工程、製法付き部品 | 部品と工具の一覧 | [製法のインポート](#method-imports)を参照してください。 |

HEADS UP

**固定資産と治具のインポートはありません**

モデルには `fixedAsset` のインポート形式が定義されていますが、インポート関数はそれをインポート不可としてフラグ付けし、そのようなファイルを拒否します。治具のインポートを提供する一覧はありません。どちらもアプリで作成してください。BOM の明細は、**BOM** の製法インポートまたはアプリから入力します。

## インポートを実行する

**アップロード。** **一括インポート**を選び、エンティティを選択して、CSV をドロップします。ブラウザーがヘッダー行を読み取り、ファイルが会社専用の非公開ストレージにアップロードされます。ヒント：先にエンティティの**テンプレート**をダウンロードしてください。すべてのフィールドラベルを含むヘッダー行が 1 行と、各列を `REQUIRED`（必須）または `optional`（任意）としてマークし、許可される列挙値を一覧表示するヒント行が 1 行あります。ヒント行は、自分のデータで上書きしてください。

**列を対応付ける。** 各 CSV 列を Alforse のフィールドと組み合わせます。必須のフィールドはすべて対応付けが必要で、**該当なし**に設定した列は無視されます。調達方式や追跡タイプなどの列挙フィールドでは、元の値を Alforse の値に対応付ける必要もあります。ウィザードは明らかなものを事前に対応付け（CSV の `"B"` は `"Buy"` と提案されます）、タイプやステータスなどの不足しているルックアップをその場で追加できます。

**検証。** 対応付けたデータが、エンティティのスキーマに対して検査されます。必須フィールドの欠落や解析できない値は、書き込みの前にフラグが付けられます。

**インポート。** 送信すると、対応付けが特権を持つ**インポート**関数に渡されます。関数はストレージからもう一度ファイルを取得し、列と列挙の対応付けを適用し、行ごとに挿入か更新かを判断して、すべてを 1 回のデータベーストランザクションでコミットします。

NOTE

**対応付けのない列挙値はデフォルトになります**

列挙値の対応付けがない行も、インポートされます。そのフィールドは単に設定された**デフォルト**を取ります。たとえば、対応付けのない「調達方式」（`"Replenishment System"`）は `"Buy and Make"` になります。デフォルトでは困る場合は、必ず明示的に値を対応付けてください。

## 挿入、更新、スキップ

標準のインポートを再実行しても安全です。Alforse がすでに知っている識別子を持つ行は、コピーを作るのではなく、既存のレコードを更新します。書き込む前に、各行が分類されます。

<details>
  <summary>**挿入（Insert）**</summary>

  行の一意の ID も名前も何にも一致しないため、新しいレコードが作成され、後のインポートのために CSV の ID の対応付けが保存されます。
</details>

<details open>
  <summary>**更新（Update）**</summary>

  一致するものがあります。Alforse はまず、保存された CSV とレコードの対応付けを使って CSV の一意の ID を試し、次に名前を試して、見つかったレコードを更新します。
</details>

<details>
  <summary>**スキップ（Skip）**</summary>

  同じファイルの別の行がすでにこの ID または名前を持っているため、この行は破棄され、参考情報として報告されます。
</details>

<details>
  <summary>**エラー（Error）**</summary>

  必須データが欠落しています。通常は名前が空です。行は、修正して再インポートするために報告されます。
</details>

一意の ID の一致は、`csv` ソースをキーとする共有の外部対応付けテーブルに依存しています。このため、ファイルを 2 回インポートしても、重複せずに更新されます。アプリで最初に作成したレコードにはそのような対応付けがありませんが、後で同じ**名前**を持つ CSV でも、それらを見つけて更新できます。

NOTE

**カスタムフィールドは空のままです**

インポートが入力するのは、エンティティの標準フィールドと、文書化されたサイドテーブル（住所、支払、仕入先部品、原価）であり、会社ごとのカスタムフィールドは**入力されません**。それらは、後でレコードのフォームから入力してください。

## 製法のインポート

部品と工具の一覧には、部品表と工順のための 3 つのインポートがあります。

| インポート | 読み込む内容 |
| - | - |
| **BOM** | 部品表の明細 |
| **工程**（Operations） | ステップ、工具、パラメータを含む工程 |
| **製法付き部品**（Parts with Methods） | BOM と工順を備えた新しい部品 |

これらのファイルのすべての行には、タイプタグ（`PART`、`BOM`、`BOP`、`STEP`、`TOOL`、`PARAM`）と、所属する親の部品が含まれます。

### 行の配置方法

* 行は、すでに存在する製造製法に**追加**されます。
* **製造方法バージョン**を空欄にすると、アーカイブされていない最も高いバージョンが対象になります。バージョンを指定する場合は、0 より大きく、小数点以下 2 桁までの数値である必要があります。
* 新しい BOM の明細は、すでにある明細の後に配置されます。
* **工程番号**（Op No）は工程の順序で、数値である必要があります。既存の工程の順序と一致する値は、その工程に行のステップ、工具、パラメータを追加します。`10`、`10.0`、`010` は同じものとして扱われます。

### 安全な再実行とロック

* 製法にすでにあるもの（同じ材料、工程、ステップ名、工具、パラメータキー）はスキップされて一覧表示されるため、ファイルを再実行しても害はありません。
* 変更されるのは下書きのバージョンだけで、インポートは、BOM や BOP のエディターと同じ変更通知とリリースのロックに従います。
* 部品が拒否された場合は、理由が一覧表示され、その部品の行は一切書き込まれません。
* リリース管理が警告に設定されている場合、インポートはエディターと同様に、リリース済みのリビジョンに書き込み、結果にはその部品が警告付きで表示されます。

### デフォルトと拒否

空のセルには、エディターが提供するのと同じ値が入ります。**測定単位**のない BOM の明細は、材料自身の単位を取り、**工程タイプ**（Operation Type）や**工程の説明**（Operation Description）のない工程は、そのプロセスのタイプと名前を取ります。

エディターが拒否するものは、インポートも拒否します。部品自身や工具、サービスを指す BOM の明細、工具アイテムではない工具、負の数量、時間、原価、最小値より小さい最大値を持つステップなどです。検査工程には検査計画が必要ですが、CSV では表現できないため、アプリで作成してください。

## 開始時在庫

**在庫 → 数量**にある 3 つのインポートが、手持在庫を読み込みます。通常は、本稼働の開始時の 1 回限りの作業です。

### 転記される内容

すべての行は、手動の在庫調整と同じコアを通じて転記される**プラス調整**（Positive Adjmt.）になります。その結果、アイテムの現在の原価で、今日の日付のアイテム元帳エントリと、ファイル全体で共有される 1 つの在庫調整の仕訳に、行のペアが作成されます。原価がゼロのアイテムは仕訳の行を転記しません。在庫調整のビジネスルールはインポート中には実行されず、インポートで**追加**できるのは在庫だけです。数量を減らしたり、直接設定したりすることはできません。

### 追跡タイプでインポートを選ぶ

| インポート | 対象のアイテム | 列 |
| - | - | - |
| **在庫数量** | **在庫**として追跡 | 部品番号、リビジョン、ロケーション、保管ユニット、数量、コメント |
| **バッチ数量** | **バッチ**として追跡 | 部品番号、リビジョン、ロケーション、保管ユニット、バッチ番号、数量、有効期限、コメント。各行が新しいバッチを作成します |
| **シリアル数量** | **シリアル**として追跡 | 部品番号、リビジョン、ロケーション、保管ユニット、シリアル番号、有効期限、コメント。各行が1ユニットなので、数量の列はありません |

追跡タイプが異なるアイテムの行は、正しいインポートを示すエラーで失敗します。非在庫のアイテムは在庫を保持できません。

### 列のルール

* **部品番号 + リビジョン**は、既存のアイテムを特定する必要があります。空のリビジョンは `0` として読まれ、不明なアイテムはエラーです。
* **ロケーション**は、対応付けの際に自社のロケーションのいずれかと照合されます。
* **保管ユニット**は任意で、そのロケーション内で名前により、大文字小文字を区別せずに照合されます。存在しないものを指定するとエラーになります。インポートが保管ユニットを作成することはありません。
* **数量**は正の数である必要があります。
* **有効期限**は任意で、`YYYY-MM-DD` 形式です。固定期間の保存期間を持つアイテムで省略した場合、有効期限は手動調整の場合と同様に計算されます。
* 一意の ID の列がないため、これらのインポートは CSV の ID の対応付けを保存しません。

HEADS UP

**在庫数量のファイルを2回実行すると、在庫が2倍になります**

在庫で追跡される行には自然キーがないため、有効な行は実行のたびに再度転記されます。バッチとシリアルの行は保護されています。アイテムがすでに持っているバッチ番号またはシリアル番号は、ステータスを問わず**スキップ**され、ファイル内で最初の行の後に繰り返される番号も同様です。2 つの異なるアイテムが同じシリアル番号を共有しても構いません。

## 結果を読む

失敗は行ごとに処理されます。問題のある行は報告され、問題のない行はインポートされます。レポートには次が含まれます。

| レポートの部分 | 内容 |
| - | - |
| **挿入** / **更新** | 書き込まれたレコードの数。 |
| **エラー** | 必須データが欠落しているため、修正して再インポートする行。それぞれ行番号、理由、元のセルの値を含みます。 |
| **スキップ** | ファイル内の重複や、すでに存在するレコードなど、意図的に除外された行。同じ形式で表示されます。 |

製法のインポートは、**部品**を挿入と更新として数え、BOM の明細、工程、ステップ、工具、パラメータの合計を追加します。たとえば、「4 parts updated. Added: 6 BOM lines. 0 rows need fixing, 2 rows skipped.」（4 件の部品を更新しました。追加：BOM 明細 6 件。修正が必要な行は 0 件、スキップした行は 2 件。）のようになります。

失敗した行は元のセルを保持しているため、結果画面から、ファイルを読み直さなくても、何を修正すべきかがすぐに分かります。インポート全体が失敗するのは、ファイルをダウンロードできない、またはデータベースが予期せず失敗するといった、重大なエラーの場合だけで、その場合は、行ごとのレポートではなく 1 つのエラーメッセージが表示されます。

## 権限

HEADS UP

**インポートは行レベルセキュリティを迂回するため、確認は送信時に一度だけです**

インポート関数は RLS を迂回する特権のデータベース接続を使用するため、Alforse は送信時に一度だけ、**インポートする権限**を確認します。該当するモジュールの更新権限が必要です。得意先は販売、仕入先は購買、アイテムと製法は部品、作業区とプロセスは生産、保管ユニットと開始時在庫は在庫です。権限がない場合、何かが書き込まれる前にインポートは拒否されます。開始時在庫には、手動の在庫調整と同様に、在庫の作成権限も追加で必要です。

## 関連項目

**在庫**

手持在庫と、開始時在庫のインポートが転記する手動調整。

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

**製法**

製法のインポートが読み込む、部品表と工順。

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

**アイテム**

アイテムのインポートで作成される、部品、材料、工具、消耗品、治具。

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

**仕入先と得意先**

得意先と仕入先のインポートで作成される、住所と条件付きの取引先レコード。

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

**作業区**

作業区のインポートで作成される能力レコード。

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


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