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

# X12 端口

> X12 端口的配置與使用指南。

export const SampleFilesTab = () => <>
    <p><em>上傳範例檔案可以方便地在任何連線的 CSV Map 或 XML Map 端口中進行對映。</em></p>

    <p>使用 <strong>範例檔案</strong> 索引標籤生成用於 <a href="/26.3/self-hosted/zh/connectors/map">CSV Map</a> 或 <a href="/26.3/self-hosted/zh/connectors/xml-map/xml-map">XML Map</a> 端口的源或目標 XML 範本。單擊 <strong>新增範例檔案</strong>。</p>

    <p style={{
  paddingLeft: '1.5rem',
  marginTop: '0.25rem',
  marginBottom: '0.25rem'
}}>1. 如果您已有反映資料預期格式和結構的範例檔案，請選擇 <strong>檔案上傳</strong> 並瀏覽到您的檔案。或者，選擇 <strong>手動建立</strong> 直接在應用程式中建立檔案。如果您選擇 <strong>手動建立</strong>，請為範例檔案命名。單擊 <strong>下一步</strong>。</p>
    <p style={{
  paddingLeft: '1.5rem',
  marginTop: '0.25rem',
  marginBottom: '0.25rem'
}}>2. 如果您瀏覽到現有檔案，<strong>檢視檔案</strong> 索引標籤將填充其內容。如果您選擇手動建立檔案，請在此索引標籤上輸入範例資料。單擊 <strong>下一步</strong>。</p>
    <p style={{
  paddingLeft: '1.5rem',
  marginTop: '0.25rem',
  marginBottom: '0.25rem'
}}>3. <strong>翻譯和預覽</strong> 索引標籤顯示將範例資料轉換為 XML 的預覽。當您對範例滿意時，單擊 <strong>新增</strong>。</p>
  </>;

export const EdiPrintView = ({fileFormat = "EDI", customImage = "x12_print_preview.png"}) => <>
    <p>在端口的 <strong>交易</strong> 索引標籤上檢視 {fileFormat} 文件時，可以以列印預覽格式或原始資料格式進行檢視。預設情況下，文件以預覽格式顯示，如下圖所示：</p>
    <img src={`/public/images/${customImage}`} alt={`${fileFormat} print preview`} width="800" />
    <p>預覽格式以易於閱讀的佈局顯示資料。使用右上角的 <strong>原始檢視</strong>（Raw View）開關可以檢視未格式化的文件。</p>
  </>;

export const EdiUploadTestFile = ({fileFormat = "EDI", documentType}) => {
  const docLabel = documentType || fileFormat;
  return <>
      <p>按照以下步驟生成輸入檔案的 XML 範本：</p>
      <p style={{
    paddingLeft: '1.5rem',
    marginTop: '0.25rem',
    marginBottom: '0.25rem'
  }}>1. 在端口的 <strong>交易</strong> 索引標籤中，單擊 <strong>更多</strong> 下拉功能表，然後單擊 <strong>上傳測試檔案</strong>。</p>
      <p style={{
    paddingLeft: '1.5rem',
    marginTop: '0.25rem',
    marginBottom: '0.25rem'
  }}>2. 導航到磁碟上要建模為 XML 的檔案，選擇它，然後單擊 <strong>OK</strong>。</p>
      <p style={{
    paddingLeft: '1.5rem',
    marginTop: '0.25rem',
    marginBottom: '0.25rem'
  }}>3. 將 {fileFormat} 端口連線到流中的 XML Map 端口。此連線可以在任一方向進行——入站到 XML Map 端口，或從 XML Map 端口出站。</p>
      <p>XML Map 端口會自動檢測測試檔案的結構。根據您放置 {fileFormat} 端口的位置，該檔案將出現在 XML Map 端口的 <strong>來源檔案</strong> 或 <strong>目的檔案</strong> 下拉功能表中。</p>
      <Note>XML Map 端口需要源範本和目標範本，因此必須根據資料來源結構或應轉換為的結構來設定剩餘範本。例如，如果需要將 {docLabel} 文件中的資料插入資料庫，則 XML Map 端口中的另一個範本將是資料庫插入的 XML 模型。有關在兩個範本檔案之間建立對映的更多資訊，請參閱 XML Map 端口的 <a href="/26.3/self-hosted/zh/connectors/xml-map/xml-map-designer">使用對映編輯器</a>。</Note>
    </>;
};

export const EdiXmlMapIntro = ({fileFormat = "EDI"}) => <p>{fileFormat} 端口執行兩項操作之一：接收 XML 輸入或生成 XML 輸出。為確保輸入和輸出檔案具有正確的 XML 結構，我們強烈建議在生成出站 {fileFormat} 文件時將 <a href="/26.3/self-hosted/zh/connectors/xml-map/xml-map">XML Map 端口</a> 用作流程中的上一步，或在接收入站 {fileFormat} 文件時將其用作流程中的下一步。下面描述的 <strong>上傳測試檔案</strong> 功能使 XML Map 端口和 {fileFormat} 端口之間的互動變得簡單。</p>;

export const DynamicallyProcessPartnersDetail = ({customImage1 = "edi_partners_tab.png", customImage2 = "edi_dynamically_process_partners_disabled.png"}) => <>
    <p>預設情況下，端口 <strong>設定</strong> 頁面上的 <strong>動態處理交易夥伴</strong> 核取方塊是啟用的。這意味著端口會自動從 EDI 交易中識別並跟蹤交易夥伴關係。在這種情況下，不需要手動配置交易夥伴，因為端口會在許可限制範圍內動態管理所有交易夥伴，並在達到限制時發出通知。端口根據其處理的檔案跟蹤識別碼，這意味著可能可以使用單個端口來處理所有交易夥伴。</p>

    <img src="/public/images/edi_dynamically_process_partners.png" alt="Dynamically process partners setting" width="200" />

    <p>僅當知行之橋正在動態處理交易夥伴時，<strong>EDI 交易夥伴</strong> 索引標籤才會被啟用。該索引標籤會填充端口識別出的每個關係的交易夥伴識別碼和個人識別碼，以及該交易夥伴最後一次處理檔案的日期。在 <strong>EDI 交易夥伴</strong> 索引標籤中，可以透過將滑鼠懸停在交易夥伴上並點選垃圾桶圖示，刪除最後處理日期超過 30 天的交易夥伴。</p>

    <img src={`/public/images/${customImage1}`} alt="EDI Partners tab" width="600" />

    <p>啟用此設定後，端口識別出的所有交易夥伴關係都會自動跟蹤以用於許可計量。它們會出現在 <strong>設定 &gt; 許可</strong> 頁面的 <a href="/26.3/self-hosted/zh/getting-started/administration/settings/license-settings#connector-usage">端口使用情況</a> 部分。在此處，您可以檢視交易夥伴識別碼和個人識別碼、關聯的端口以及日期資訊。</p>

    <img src="/public/images/edi_partner_licenses.png" alt="EDI partner licenses" width="800" />

    <p>如果停用此設定，則必須在 <strong>設定</strong> 頁面的 <strong>交易夥伴識別碼</strong> 和 <strong>個人識別碼</strong> 欄位中顯式配置交易夥伴關係，如下圖所示。</p>

    <img src={`/public/images/${customImage2}`} alt="Dynamically process partners disabled" width="700" />

    <p>手動定義的交易夥伴關係也會出現在 <strong>設定 &gt; 許可</strong> 頁面的 <a href="/26.3/self-hosted/zh/getting-started/administration/settings/license-settings#connector-usage">端口使用情況</a> 部分。</p>
  </>;

export const CommonPendingAck = () => <p>當需要確認的 EDI 訊息未收到確認時，會在訊息中新增一個 Pending-Timeout 標頭。在等待 ACK 期間，訊息處於 <em>Pending</em> 狀態。如果在規定時間內未收到 ACK，則會將訊息狀態更改為 <em>Error</em> 的日期和時間填充到 Pending-Timeout 標頭中。當收到 ACK 並將訊息更新為 <em>Success</em> 時，會新增一個包含空字串值的新標頭。</p>;

export const SlasTab = ({siteName = "知行之桥"}) => <>
    <p><em>與配置服務級別協議 (SLA) 相關的設定。</em></p>
    <p>
      SLA 允許配置預期流程中端口傳送或接收的資料量，並設定預期達到該資料量的時間範圍。當 SLA 未達到時，{siteName} 會傳送電子郵件警告使用者，並將 SLA 標記為 <em>存在風險</em>，這意味著如果 SLA 未能儘快達到，則會被標記為 <em>已違反</em>。這讓使用者有機會介入並確定 SLA 未達到的原因，並採取適當的措施。如果在風險時間段結束時仍未達到 SLA，則會將 SLA 標記為已違反，並再次通知使用者。
    </p>
    <p>
      要定義 SLA，請啟用 <strong>預期資料量</strong>，然後點選 <strong>設定</strong> 索引標籤。
    </p>
    <img src="/public/images/sla_empty.png" alt="SLA Empty" />
    <ul>
      <li>如果端口具有單獨的傳送和接收操作，請使用選項按鈕指定 SLA 適用的方向。</li>
      <li>在視窗的 <strong>預計至少</strong> 部分中：
        <ul>
          <li>設定預計處理的最小交易數量（交易量）</li>
          <li>使用 <strong>每個</strong> 欄位指定時間範圍</li>
          <li>指示 SLA 生效的時間。如果選擇 <strong>開始於</strong>，請填寫日期和時間欄位。</li>
          <li>勾選希望 SLA 生效的星期幾對應的核取方塊。如有必要，請使用下拉功能表選擇 <strong>每天</strong>。</li>
        </ul>
      </li>
      <li>在視窗的 <strong>將狀態設定為“有風險”</strong> 部分中，指定應將 SLA 標記為有風險的時間。
        <ul>
          <li>預設情況下，只有在違反 SLA 的情況下才會傳送通知。要更改此設定，請勾選 <strong>傳送“有風險”通知</strong>。</li>
        </ul>
      </li>
    </ul>
    <p>
      以下範例顯示了為端口配置的 SLA，該端口預計在週一至週五每天接收 1000 個檔案。如果尚未收到 1000 個檔案，則會在時間段結束前 1 小時傳送風險通知。
    </p>
    <img src="/public/images/sla_defined.png" alt="SLA Configuration Example" />
    <Note>
      如果有必要，可以關閉 SLA 通知。這在維護視窗期間非常有用。點選導覽列上的 <strong>設定</strong>，然後跳轉到 <strong>通知 &gt; 通用通知</strong>。點選平板和鉛筆圖示進行編輯，並取消勾選 <strong>SLA 通知</strong> 設定。
    </Note>
  </>;

export const AlertsTab = ({siteNameShort = "知行之桥"}) => <>
    <p><em>與配置通知相關的設定。</em></p>
    <p>
      在執行服務級別協議 (SLA) 之前，需要設定電子郵件通知以接收通知。預設情況下，{siteNameShort} 使用 <a href="/26.3/self-hosted/zh/getting-started/administration/settings/alerts">通知</a> 索引標籤上的全域設定。要為此端口使用其他設定，請啟用 <strong>覆蓋全域設定</strong>。
    </p>
    <p>
      預設情況下，錯誤通知處於啟用狀態，這意味著每當出現錯誤時都會傳送電子郵件。要關閉錯誤通知，請取消選中 <strong>啟用</strong> 核取方塊。
    </p>
    <p>
      輸入 <strong>主題</strong>（必填）。勾選<strong>允許在主題中使用 ArcScript</strong>，即可在<strong>主題</strong>欄位中使用 ArcScript。選中後會顯示 <strong>ArcScript 編輯器</strong>按鈕（<img src="/public/images/rest_arcscript_editor.png" alt="ArcScript 編輯器按鈕" style={{
  display: 'inline',
  verticalAlign: 'middle',
  margin: 0
}} />）。
    </p>
    <p>
      （可選）輸入以逗號分隔的<strong>收件人</strong>電子郵件地址清單。
    </p>
  </>;

export const Message = () => <>
    <p><em>訊息設定確定端口如何搜尋訊息並在處理後管理它們。</em></p>
    <p><strong>注意：</strong>以下設定已棄用，預設處於隱藏狀態。只有先前已啟用這些設定或將其配置為非預設值的端口才會顯示它們。若要保留成功處理的檔案副本，請在工作流程中右鍵單擊該端口，選擇<strong>顯示成功路徑</strong>，然後將成功路徑連線到 <a href="/26.3/self-hosted/zh/connectors/file">File 端口</a>。</p>
    <table>
      <thead>
        <tr><th>設定</th><th>描述</th></tr>
      </thead>
      <tbody>
        <tr>
          <td><strong>儲存到已傳送資料夾</strong>（已棄用）</td>
          <td>將端口處理的檔案複製到 Sent 資料夾。預設停用。儲存到 Sent 資料夾中的檔案不受<a href="/26.3/self-hosted/zh/getting-started/administration/settings/encryption-at-rest">靜態加密</a>保護。</td>
        </tr>
        <tr>
          <td><strong>已傳送資料夾方案</strong>（已棄用）</td>
          <td>按所選時間間隔對 <strong>Sent</strong> 資料夾中的檔案進行分組。僅在啟用<strong>儲存到已傳送資料夾</strong>時適用。</td>
        </tr>
      </tbody>
    </table>
  </>;

export const MiscConnector = () => <>
    <p><em>特殊設定適用於特定用例。</em></p>
    <table>
      <thead>
        <tr>
          <th>設定</th>
          <th>描述</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td><strong>其他設定</strong></td>
          <td>允許在以分號分隔的清單中配置隱藏的端口設定，例如 <code>setting1=value1;setting2=value2</code>。正常的端口用例和功能不需要使用這些設定。</td>
        </tr>
      </tbody>
    </table>
  </>;

export const Logging = () => <>
    <p><em>用於管理日誌建立和儲存的設定。</em></p>
    <table>
      <thead>
        <tr>
          <th>設定</th>
          <th>描述</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td><strong>日誌級別</strong></td>
          <td>指定要記錄在端口日誌目錄中的資訊型別：
            <ul>
              <li><b>None</b> - 不建立任何日誌。</li>
              <li><b>Error</b> - 僅當端口遇到錯誤時才建立日誌。</li>
              <li><b>Warning</b> - 僅當端口發出警告時才建立日誌。</li>
              <li><b>Info</b> - 記錄工作流程的一般資訊，包括任何錯誤和警告（如果適用）。</li>
              <li><b>Debug</b> - 記錄成功和失敗工作流程的詳細偵錯資訊。</li>
              <li><b>Trace</b> - 記錄成功和失敗工作流程的詳細跟蹤資訊。</li>
            </ul>
            <strong>請注意：</strong><strong>Debug</strong> 和 <strong>Trace</strong> 級別的日誌可能會記錄敏感資訊，包括訊息內容和 SSL 憑證。儘管連線屬性（例如密碼）被遮蔽了，但在與您的組織外部共享它們之前，請檢視此級別的日誌以避免洩漏敏感資訊。</td>
        </tr>
        <tr>
          <td><strong>日誌資料夾結構</strong></td>
          <td>指示端口根據選定的時間間隔將日誌資料夾中的檔案分組。例如，<strong>Weekly</strong> 選項指示端口每週建立一個新的子資料夾，並將該周的所有日誌儲存在該資料夾中。空白設定告訴端口將所有日誌直接儲存在日誌資料夾中。對於處理許多交易的端口，使用子資料夾有助於保持日誌的有序性並提高效能。</td>
        </tr>
        <tr>
          <td><strong>保留訊息副本</strong></td>
          <td>指示端口在日誌目錄中儲存最新訊息副本的切換。請注意，端口每個子資料夾只保留一個訊息，並且端口在再次執行時會覆蓋以前儲存的訊息。</td>
        </tr>
      </tbody>
    </table>
  </>;

export const MacrosExamples = ({extraMacros = []}) => <>
    <p>
      某些宏（例如 %Ext% 和 %ShortDate%）不需要參數，但其他宏則需要。所有帶有參數的宏都使用以下語法：<code>%Macro:argument%</code>
    </p>

    <p>以下是帶有參數的宏的一些範例：</p>

    <ul>
      <li>%Header:headername%：其中 <code>headername</code> 是訊息上訊息頭的名稱。</li>
      <li>%Header:mycustomheader% 解析為輸入訊息上設定的 <code>mycustomheader</code> 訊息頭的值。</li>
      <li>%Header:ponum% 解析為輸入訊息上設定的 <code>ponum</code> 訊息頭的值。</li>
      <li>%RegexFilename:pattern%：其中 <code>pattern</code> 是規則運算式模式。例如，<code>%RegexFilename:^([\w][A-Za-z]+)%</code> 匹配並解析為檔名中的第一個單詞，並且不區分大小寫（<code>test_file.xml</code> 解析為 <code>test</code>）。</li>
      <li>%Vault:vaultitem%：其中 <code>vaultitem</code> 是 <a href="/26.3/self-hosted/zh/getting-started/administration/settings/global-settings-vault">vault</a> 中專案的名稱。例如，<code>%Vault:companyname%</code> 解析為儲存在保管庫中的 <code>companyname</code> 項的值。</li>
      <li>%DateFormat:format%：其中 <code>format</code> 是可接受的日期格式（有關詳細資訊，請參閱 <a href="/26.3/self-hosted/zh/scripting/value-formatters/date-formatters#sample-date-formats">範例日期格式</a>）。例如，<code>%DateFormat:yyyy-MM-dd-HH-mm-ss-fff%</code> 解析為檔案上的日期和時間戳。</li>
      {extraMacros.filter(item => item.example).map(item => <li key={`ex-${item.name}`}>{item.example}</li>)}
    </ul>

    <p>還可以建立更復雜的宏，如以下範例所示：</p>

    <ul>
      <li>將多個宏組合在一個檔名中：<code>%DateFormat:yyyy-MM-dd-HH-mm-ss-fff%%EXT%</code></li>
      <li>包括宏之外的文字：<code>MyFile_%DateFormat:yyyy-MM-dd-HH-mm-ss-fff%</code></li>
      <li>在宏中包含文字：<code>%DateFormat:'DateProcessed-'yyyy-MM-dd_'TimeProcessed-'HH-mm-ss%</code></li>
    </ul>
  </>;

export const MacrosTable = ({siteName = "知行之桥", extraMacros = []}) => <>
    <p>
      在檔案命名策略中使用宏可以提高組織效率和對資料的上下文理解。透過將宏合併到檔名中，可以動態地包含相關資訊，例如識別碼、時間戳和訊息頭資訊，從而為每個檔案提供有價值的上下文。這有助於確保檔名反映對組織重要的詳細資訊。
    </p>

    <p>{siteName} 支援這些宏，它們都使用以下語法：<code>%Macro%</code>。</p>

    <table>
      <thead>
        <tr><th>宏</th><th>描述</th></tr>
      </thead>
      <tbody>
        <tr><td>ConnectorID</td><td>替換為端口的 ConnectorID。</td></tr>
        <tr><td>ConnectorName</td><td>替換為端口名稱。可用於在檔名或路徑中包含連線名稱，例如按生成備份檔案的資料庫連線標記檔案。</td></tr>
        <tr><td>Ext</td><td>替換為端口當前正在處理的檔案的副檔名。</td></tr>
        <tr><td>Filename</td><td>替換為端口當前正在處理的檔案的檔名（包括副檔名）。</td></tr>
        <tr><td>FilenameNoExt</td><td>替換為端口當前正在處理的檔案的檔名（不帶副檔名）。</td></tr>
        <tr><td>MessageId</td><td>計算端口輸出的訊息的 MessageId。</td></tr>
        <tr><td>RegexFilename:<em>pattern</em></td><td>將規則運算式模式應用於端口當前正在處理的檔案的檔名。</td></tr>
        <tr><td>Header:<em>headername</em></td><td>替換為端口正在處理的當前訊息的目標訊息頭（<code>headername</code>）的值。</td></tr>
        <tr><td>LongDate</td><td>以常規格式計算系統的當前日期時間（例如，2024 年 1 月 24 日星期三）。</td></tr>
        <tr><td>ShortDate</td><td>以 yyyy-MM-dd 格式計算系統的當前日期時間（例如 2024-01-24）。</td></tr>
        <tr><td>DateFormat:<em>format</em></td><td>以指定格式（<code>format</code>）計算系統的當前日期時間。有關可用的日期時間格式，請參閱 <a href="/26.3/self-hosted/zh/scripting/value-formatters/date-formatters#date-formats-with-literal-characters">範例日期格式</a>。</td></tr>
        <tr><td>Vault:<em>vaultitem</em></td><td>計算指定保管庫專案的值。</td></tr>
        {extraMacros.map(item => <tr key={item.name}>
            <td>{item.name}</td>
            <td>{item.description}</td>
          </tr>)}
      </tbody>
    </table>
  </>;

export const Performance = () => <>
    <p><em>與端口資源分配相關的設定。</em></p>
    <table>
      <thead>
        <tr>
          <th>設定</th>
          <th>描述</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td><strong>最大工作執行緒數</strong></td>
          <td>此端口上處理檔案時從執行緒池中消耗的最大工作執行緒數。如果設定，則會覆蓋 <a href="/26.3/self-hosted/zh/getting-started/administration/settings/advanced-settings">進階設定</a> 頁面的 <a href="/26.3/self-hosted/zh/getting-started/administration/settings/performance-settings">效能設定</a> 部分的預設設定。</td>
        </tr>
        <tr>
          <td><strong>最大檔案數</strong></td>
          <td>分配給端口的每個執行緒傳送的最大檔案數。如果設定，則會覆蓋 <a href="/26.3/self-hosted/zh/getting-started/administration/settings/advanced-settings">進階設定</a> 頁面的 <a href="/26.3/self-hosted/zh/getting-started/administration/settings/performance-settings">效能設定</a> 部分的預設設定。</td>
        </tr>
      </tbody>
    </table>
  </>;

export const companyName = "知行軟件";

export const siteNameShort = "知行之橋";

export const siteName = "知行之橋";

export const fileFormat = "X12";
export const documentType = "X12";

X12 端口支援從 XML 生成 X12 檔案以及將 X12 檔案轉換為 XML。

## 核心功能

* 完整的雙向 EDI X12 與 XML 文件處理，支援所有交易集
* 交換頭和功能群組頭的驗證與生成
* 支援 997/999 功能確認（ACK）及自動路由
* 提供 HIPAA 合規性所需的 SNIP 驗證等高階功能

## 概覽

接收 X12 報文時，X12 端口會驗證 X12 互動標頭並將 X12 報文轉換為 XML。這是一個非常有用的準備步驟，因為 XML 是 {siteNameShort} 用於處理工作流程中資料的主要格式。X12 端口自動讀取輸入檔案以確定與報文相匹配的 X12 Schema，然後根據該 Schema 解析報文。

生成 X12 報文時，X12 端口將 XML 檔案轉化為符合 X12 語法規則的 X12 報文，並應用此端口配置的 X12 交換頭資訊。這對於建立 X12 報文非常重要，此步驟發生在 XML 資料已在工作流程其他位置完成取得和轉換之後。

<Note>可以透過在端口的**測試指示符**設定中選擇 *Test Data* 來跳過交換頭驗證。</Note>

X12 端口還可以自動為傳入的 X12 報文生成 ACK。有關更多資訊，請參閱 [X12 ACK](#x12-ack) 部分。

## 必要條件

開始之前，請確保已為需要處理的文件型別安裝了正確的 Schema。X12 端口本身支援以下 Schema 定義：00401、00403 和 00501。可以在 {siteNameShort} 安裝目錄的 `app_data/x12_schemas` 目錄中找到它們。

下載並解壓 zip 存檔後，將整個資料夾放入 `app_data/x12_schemas` 目錄下適當命名的子目錄中。

## 端口配置

本節包含所有可配置的端口屬性。

### 設定索引標籤

#### 轉換配置

*與端口核心操作相關的設定。*

| 設定           | 描述                                                                                  |
| ------------ | ----------------------------------------------------------------------------------- |
| **端口 ID**    | 端口的靜態唯一識別碼。                                                                         |
| **端口型別**     | 顯示端口名稱及其功能描述。                                                                       |
| **端口描述**     | 可選欄位，用於對端口及其在流中的角色進行自由描述。                                                           |
| **轉換型別**     | 端口是將 X12 報文轉換為 XML 檔案，還是將 XML 檔案轉換為 X12 報文。                                         |
| **動態處理交易夥伴** | 啟用後，端口自動從 EDI 交易中識別並跟蹤交易夥伴關係。停用後，您必須手動定義夥伴關係。更多資訊請參閱 [EDI 交易夥伴索引標籤](#edi-交易夥伴索引標籤)。 |

#### EDI 交易夥伴

| 設定                  | 描述                                                             |
| ------------------- | -------------------------------------------------------------- |
| **交易夥伴識別碼 (ISA06)** | 標識 X12 通訊中的傳送方（生成 X12 文件時，此處應為您自己的識別碼）。僅在未勾選**動態處理交易夥伴**時適用。   |
| **個人識別碼 (ISA08)**   | 標識 X12 通訊中的接收方（生成 X12 文件時，此處應為您交易夥伴的識別碼）。僅在未勾選**動態處理交易夥伴**時適用。 |

#### 交換頭配置

*與 X12 文件的交換頭相關的設定。生成文件時，這些設定將作為交換頭應用到生成的文件中。解析文件時，交換頭設定用於驗證傳入文件。*

| 設定                      | 描述                                                       |
| ----------------------- | -------------------------------------------------------- |
| **交易夥伴 ID 限定符 (ISA05)** | 透過為該值提供上下文來限定**交易夥伴識別碼**。                                |
| **個人 ID 限定符 (ISA07)**   | 透過為該值提供上下文來限定**個人識別碼**。                                  |
| **控制版本號 (ISA12)**       | 標識交換的控制版本。                                               |
| **使用指示符 (ISA15)**       | 交換的資料是否代表測試資料、生產資料或常規資訊。當此項設定為 *Test Data* 時，交換頭*不會*被驗證。 |
| **功能群組**                | 選中此選項可自動將傳送者和接收者識別碼新增到**高階**索引標籤上的[功能群組配置](#功能群組配置)。     |

#### ACK

*與生成和請求確認相關的設定。*

| 設定            | 描述                                                   |
| ------------- | ---------------------------------------------------- |
| **TA1 ACK**   | 是否傳送 TA1 交換確認。                                       |
| **功能 ACK**    | 是否應傳回（接收時）和請求（傳送時）功能性 ACK。功能性 ACK 標識接收或拒絕已收到的交換和交換集。 |
| **功能 ACK 型別** | 選中此項以指定是否使用 997 或 999 功能確認。                          |

### 範例檔案索引標籤

<SampleFilesTab />

### 進階設定索引標籤

#### EDI 分隔符號

*指定哪些字元作為元素、段等的分隔符號。*

| 設定           | 描述                 |
| ------------ | ------------------ |
| **資料元素分隔符號** | 分隔文件中各個資料元素的字元。    |
| **元件元素分隔符號** | 分隔文件中元件資料結構內元素的字元。 |
| **段終止字元**    | 指示文件中段結尾的字元。       |
| **字尾**       | 附加到**段終止字元**中以區分段。 |

#### 交換頭配置

*與 X12 交換頭相關的其他設定。*

| 設定                  | 描述                        |
| ------------------- | ------------------------- |
| **授權限定符 (ISA01)**   | 透過提供值的上下文來限定**授權 ID** 設定。 |
| **授權 ID (ISA02)**   | 標識與交換關聯的授權級別。             |
| **安全限定符 (ISA03)**   | 透過提供值的上下文來限定**安全密碼**設定。   |
| **安全密碼 (ISA04)**    | 表示有關交換的安全資訊。              |
| **控制標準識別碼 (ISA11)** | 標識 X12 標準。唯一有效的值是 *U*。    |

#### 功能群組配置

*與 X12 文件的功能群組頭相關的設定。這些可選識別碼可以幫助對類似的交換進行分組或促進組織中的子定址。*

| 設定                 | 描述                   |
| ------------------ | -------------------- |
| **交易夥伴識別碼 (GS02)** | 標識 X12 通訊中的傳送方。      |
| **個人識別碼 (GS03)**   | 標識 X12 通訊中的接收方。      |
| **日期格式 (GS04)**    | 日期戳的格式。              |
| **時間格式 (GS05)**    | 時間戳的格式。              |
| **負責機構程式碼 (GS07)** | 標識 X12 標準的發行者。       |
| **識別碼程式碼 (GS08)**  | 標識 X12 標準的版本、發行版和行業。 |

#### 進階設定

*先前類別中未包含的設定。*

| 設定               | 描述                                                                                                                                                                                 |
| ---------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **批次處理交易**       | 一個交換（Interchange）可以包含多個交易。如果未選中，端口將為交換中的每個交易建立單獨的輸出檔案。如果選中，端口將同一個交換中的所有交易組織輸出在一個檔案中。僅當**轉換型別**為 X12 轉換為 XML 時適用。                                                                   |
| **使用引用 Id**      | 選中後，將 X12 轉換為 XML 時，引用 Id 將用於命名 XML 元素。僅當**轉換型別**為 X12 轉換為 XML 時適用。例如：`<_143>value</_143>`。如果未選中，則引用指示符將用於命名 XML 元素：`<BEG03>value</BEG03>`                                         |
| **編碼**           | 指定字元編碼（例如 ASCII 或 UTF-8）。                                                                                                                                                          |
| **擴充套件限定符值**     | 選中時，包含 EDI 限定符的 XML 元素包括包含限定符程式碼和值的子元素。例如：<br /><code>\<N101></code><br />  <code>\<Code>ST\</Code></code><br />  <code>\<Value>Ship To\</Value></code><br /><code>\</N101></code> |
| **功能 ACK**       | 預設情況下，所有功能確認（997、999）都會路由到流程圖中選擇的端口，並且**交易**索引標籤中不會接收 XML 轉換。選中此項可使轉換後的 ACK 也包含在**交易**索引標籤中。除了新的 EDI 文件之外，這還允許將功能確認整合到目標源中。                                                        |
| **生成描述為**        | 將 X12 轉換為 XML 時，可以提供 X12 段和元素的描述作為 X12 資料的上下文。使用此下拉式清單可以選擇是否將此上下文新增為 XML 註釋或 XML 屬性。                                                                                               |
| **HIPAA Schema** | 選中後，端口將使用一組單獨的 EDI Schema，並在轉換和驗證文件時應用 HIPAA 約束。對於除受 HIPAA 約束的醫療保健文件之外的 EDI 文件，此設定將被忽略。                                                                                            |
| **HIPAA 278**    | 兩個單獨的 Schema 可用於 278 文件，具體取決於這些文件是否應解釋為請求或回應。選中後，將使用請求 Schema；否則使用回應 Schema。                                                                                                       |
| **本地檔名方案**       | 用於為端口輸出訊息分配檔名的方案。可在檔名中使用宏動態包含識別碼和時間戳等資訊。更多資訊請參閱[宏](#宏)。                                                                                                                            |
| **巢狀迴圈**         | 選中後，端口會檢測 EDI 資料中嵌入了層次關係的 EDI 結構，並生成 XML，其中這些層次關係表示為父子關係。有關詳細資訊，請參閱[主從層次結構：轉換 HLLoop](#主從層次結構轉換-hlloop)。                                                                           |
| **處理延遲**         | 放置在**交易**索引標籤中的檔案的處理延遲時間（以秒為單位）。這是一項遺留設定。最佳做法是[使用 File 端口](../flows/designing-a-flow#interacting-with-the-local-file-system)來管理本地檔案系統，而不是使用此設定。                                    |
| **SNIP 驗證**      | 啟用後，端口將執行前三個級別的 SNIP 驗證以確保 HIPAA 合規性：(1) 文件的語法完整性，(2) 是否存在所需的段以及重複段的適當重複，以及 (3) 索賠行專案和索賠總額之間正確的數學關係。更高階別的 SNIP 驗證 (4+) 可能需要 [Validate](./validate) 端口或自定義指令碼。                      |
| **嚴格 Schema 驗證** | 當檢測到以下情況時，端口是否應忽略、警告或失敗：重複計數超過允許的數量、缺少必需的元素或段、無效的限定符和程式碼值、不允許的元素長度以及無效的元素值。選擇"停用"會關閉 Schema 驗證檢查。                                                                                  |
| **跟蹤 ISA06**     | 是否將 ISA06 值作為跟蹤頭新增到已處理的訊息中。                                                                                                                                                        |
| **跟蹤 ISA08**     | 是否將 ISA08 值作為跟蹤頭新增到已處理的訊息中。                                                                                                                                                        |
| **跟蹤交易型別**       | 是否將交易型別作為跟蹤頭新增到已處理的訊息中。                                                                                                                                                            |
| **驗證識別碼**        | 選中此項以確保已翻譯文件中的識別碼與端口配置中的識別碼匹配。                                                                                                                                                     |
| **重複檔案操作**       | 端口在收到控制編號曾經出現過的訊息（重複訊息）時應如何處理。設定為 `Ignore` 時，端口靜默跳過重複訊息並繼續處理。設定為 `Warn` 時，端口處理檔案但傳回警告。設定為 `Fail` 時，端口不接受檔案並傳回錯誤。                                                                   |
| **上傳 Schema**    | 用於上傳 Schema 並將其安裝到端口的 Schema 資料夾中。如果 Schema 已存在，系統將詢問是否要覆蓋。                                                                                                                        |
| **重置狀態**         | EDI 端口會跟蹤已使用的控制編號並遞增該數字，以確保未來的執行不會重複資料。使用此按鈕可在不更改任何已配置設定的情況下將計數器重置為初始狀態。                                                                                                           |

#### 訊息

<Message />

#### 日誌

<Logging />

#### 其他

<MiscConnector />

### EDI 交易夥伴索引標籤

<DynamicallyProcessPartnersDetail customImage1="edi_x12_partners_tab.png" customImage2="edi_x12_partner_config_disabled.png" />

### 自動化索引標籤

#### 自動化設定

*與端口自動處理檔案有關的設定。*

| 設定                 | 描述                                                                                                                  |
| ------------------ | ------------------------------------------------------------------------------------------------------------------- |
| **傳送**             | 指示端口在檔案就緒時自動傳送檔案的開關。                                                                                                |
| **重發間隔**           | 端口在重新傳送收到負面 ACK 的檔案之前等待的時間間隔。例如，如果交易夥伴收到檔案但檔案存在問題並行回負面 ACK，此設定指定在再次傳送檔案前等待多長時間。                                     |
| **最大嘗試次數 (async)** | 當請求功能性 ACK 時，端口處理輸入檔案的最大次數。是否成功基於在**重發間隔**內收到功能性 ACK。如果未傳回成功的功能性 ACK，端口將重新傳送檔案直到達到**最大嘗試次數**。如果設定為 0，則端口將無限次重新傳送檔案。 |

#### 效能

<Performance />

### 告警索引標籤

<AlertsTab />

### SLA 索引標籤

<SlasTab />

## 轉換格式

以下各節詳細介紹了將 X12 轉換為 XML 的過程，以及將 XML 轉換為 X12 的過程。

### X12 轉換為 XML

將**轉換型別**設定為 *X12 轉換為 XML* 指示端口將傳入的 X12 文件解析為 XML。端口首先讀取文件"交換"和"功能群組"部分的所有標頭資訊，並根據配置的端口設定驗證它們（除非**測試指示符**設定為 *Test Data*）。然後，端口解析文件中使用的特定 X12 Schema，並從磁碟上的 `x12_schemas` 資料夾載入 Schema。使用該 Schema，端口生成表示文件 X12 結構的 XML，使用文件中的值填充 XML，並以 XML 註釋或 XML 元素屬性（基於**生成描述為**的值）的形式為每個值提供上下文。

要使用一組測試 X12 文件檢視此過程，請導航到 X12 端口的**交易**索引標籤（將**轉換型別**設定為 *X12 轉換為 XML*）並選擇**更多 > 建立測試檔案**。發票、採購訂單、採購訂單確認和發貨通知的 X12 文件會自動生成並放置在**交易**目錄中。端口處理這些測試檔案後，導航到**交易**索引標籤以檢視生成的 XML。

一旦 X12 報文被轉換成 XML，資料就可以透過多種方式進行轉換和操作。通常，X12 資料需要儲存在資料庫或其他後端應用系統中。因為 {siteNameShort} 使用 XML 來表示這些後端系統中的插入，所以儲存 X12 資料就變成了簡單地將一個 XML 結構對映到另一個 XML 的問題。通常是用視覺化設計器驅動 [XML Map 端口](./xml-map/xml-map)。

### XML 轉換為 X12

將**轉換型別**設定為 *XML 轉換為 X12* 指示端口根據文件的 XML 表示形式生成 X12 文件。端口根據從 XML 解析的資料構建 X12 訊息後，會根據配置的端口設定新增功能群組和交換標頭。

要使用一組測試 XML 檔案檢視此過程，請導航到 X12 端口的**交易**索引標籤（將**轉換型別**設定為 *XML 轉換為 X12*）並選擇**更多 > 建立測試檔案**。發票、採購訂單、採購訂單確認和發貨通知的 XML 檔案將自動生成並放置在**交易**目錄中。端口處理這些測試檔案後，導航到**交易**索引標籤以檢視生成的 X12 文件。

### 列印檢視

<EdiPrintView fileFormat={fileFormat} customImage="x12_print_preview.png" />

## 與 XML Map 端口配合使用

<EdiXmlMapIntro fileFormat={fileFormat} />

### 上傳測試檔案

<EdiUploadTestFile fileFormat={fileFormat} documentType={documentType} />

## X12 ACK

以下章節詳細介紹了三種 X12 ACK，以及 {siteNameShort} 期待、處理和生成 ACK 的方式。

### 交換 ACK、997 和 999

TA1 是一種普遍接受的交換確認形式。這表明雙方之間已經發生了資料交換，儘管不一定交換了具體報文。這作為接收方發給發件人的收據，表明接收方已成功收到 EDI 訊息，但未指定在處理訊息內容時是否存在任何問題。

997（版本 4010）、997（版本 5010）或 999 確認被視為功能性 ACK，即單個訊息（例如發票或採購訂單）已被接受的確認。這些是根據雙方的雙向協議生成的。

### 期待 ACK、處理 ACK 和生成 ACK

#### 期待 ACK

X12 端口在 XML 轉換為 X12 模式下執行時，可以進行配置，以便可以要求交換和功能確認。在"設定"索引標籤的 [ACK](#ack) 部分中選中 **TA1 ACK** 或 **功能 ACK** 時，端口將保持傳輸的"Pending ACK"狀態，直到傳回並處理相應的 ACK。這意味著端口狀態可用於確定收件人是否已確認他們收到了交換。

<CommonPendingAck />

下圖顯示了從發票文件期待 ACK 時涉及的邏輯流程：

<img src="https://mintcdn.com/qiao/ilnLy7gsSdFqbKmI/public/images/x12-ack-receive.png?fit=max&auto=format&n=ilnLy7gsSdFqbKmI&q=85&s=ed95bc9aa45c3334d492fc91f2367344" alt="接收 X12 ACK" width="640" height="408" data-path="public/images/x12-ack-receive.png" />

上圖中，以 XML 轉換為 X12 模式執行的 X12 端口生成要交換的文件 **（1）**，在文件傳輸到交易夥伴時保持為 Pending ACK 狀態。交易夥伴根據其業務邏輯處理傳輸，並根據配置的交換參數建立確認 **（2）**。當確認傳回後，將根據下一部分 **（3）** 中的資訊進行處理。

#### 處理 ACK

在典型的工作流程中，X12 ACK 將到達以 X12 轉換為 XML 模式執行的 X12 端口。可以將該 X12 端口配置為自動將所有收到的 ACK 路由到最初生成被確認文件的 X12 端口。在[流](../flows/flows)畫布上，可以透過將 X12 轉換為 XML 模式下 X12 端口底部的灰色點拖動到 XML 轉換為 X12 模式下的 X12 端口上，來視覺化配置 X12 端口之間的 ACK 路由。

一旦 XML 轉換為 X12 模式下的 X12 端口接收到路由的 ACK，會將 ACK 與原始訊息進行匹配，並將其狀態從 "Pending ACK" 更新為 "Sent"。

#### 生成 ACK

當處於 X12 轉換為 XML 模式的 X12 端口收到一條訊息並生成相應的 XML 時，它可以自動為收到的訊息生成確認。為此，請在"設定"索引標籤的 [ACK](#ack) 部分中啟用 **TA1 ACK** 和/或**Functional ACK expected**。必須將這些確認路由到另一個 X12 端口（處於 XML 轉換為 X12 模式）以最終確定 ACK。ACK 路由到的端口將應用交換標頭，並將 ACK 傳遞到工作流程中的下一個端口，就像其他 X12 訊息一樣。要適當路由 ACK，請將 X12 轉換為 XML 模式下 X12 端口底部邊緣的灰色點拖動到 XML 轉換為 X12 模式下的 X12 端口上。

下圖顯示了為收到的發票文件建立 ACK 時涉及的邏輯流程：

<img src="https://mintcdn.com/qiao/ilnLy7gsSdFqbKmI/public/images/x12-ack-create.png?fit=max&auto=format&n=ilnLy7gsSdFqbKmI&q=85&s=bc7bc6233185cefdf4a9ff06ee8b4764" alt="建立 X12 ACK" width="640" height="408" data-path="public/images/x12-ack-create.png" />

如上圖所示，在交易夥伴傳送了一條要求確認的訊息後 **（1）**，X12 轉換為 XML 模式下的 X12 端口解析文件會自動生成一個 ACK **（2）**。該 ACK 是一個 XML 檔案，其中包含與交易相關的交易資訊。然後，此 XML ACK 將以 XML 轉換為 X12 模式 **（3）** 路由至 X12 端口，以便在將 ACK 傳送至交易夥伴之前使用交換標頭（和其他 EDI 方協議設定）。

## 主從層次結構：轉換 HLLoop

在 EDI 文件中，大多數層次結構關係由 EDI 段的順序表示。但一些 EDI 結構，例如 HLLoop（見於\_預先裝運通知\_或 X12 856s 中）不遵循此約定，而是將層次結構關係嵌入到 EDI 元素資料本身中，這使得將 EDI 資料轉換為 XML 時保留這些層次關係變得困難。

X12 端口透過**高階**索引標籤[進階設定](#進階設定)中的**巢狀主從細節迴圈**設定支援在 HLLoop 中保留層次結構關係。啟用後，端口將解析 HLLoop 段中的元素，以確定哪些段"屬於"層次關係中的其他段。這些層次結構關係在輸出的 XML 中反映為"父子關係"。換句話說，此設定將 EDI 內容隱含的層次結構轉換為 XML 結構表示的層次結構。

本節將簡要說明如何在 HLLoop 資料中編碼層次結構，以及在啟用**巢狀主從細節迴圈**時如何將此層次結構轉換為 XML。

### HLLoop 層次結構

所有 HL 段均具有兩個有助於建立層次結構的值：

* ID 值，它標識當前的 HL 段（此值儲存在 HL01 或 HL 段中的第一個元素中）
* 父 ID 值，標識當前 HL 段的層次結構父級（此值儲存在 HL02 或 HL 段中的第二個元素中）

例如，假設 HL 段的 ID 值為 '2'。如果下一個 HL 段以分層關係"屬於"該段，則下一個 HL 段的父 ID 應為 "2"。

如果 HL 段的父 ID 為 "0"，則表示該段沒有父級（即位於層次結構的頂層）。

#### HLLoop 範例

為了進一步闡明 HLLoop 資料中的層次結構關係，請使用以下 EDI 程式碼段作為樣本輸入（僅以 *HL* 開頭的行與確定資料層次結構相關；其餘段被包括在內以更緊密地代表實際的 EDI 資料）：

```csharp theme={null}
HL*1*0*S      // First HL loop, the shipment loop
TD3*RR*SEAU*1234567
HL*2*1*O      // Second HL loop, the order loop
PRF*PO111111
HL*3*2*P      // Third HL loop, the first package loop
MAN*UC*PACKAGE1
HL*4*3*I      // Fourth HL loop, the first item loop
MAN*UC*ITEM_1
HL*5*3*I      // Fifth HL loop, the second item loop
MAN*UC*ITEM_2
HL*6*2*P      // Sixth HL loop, the second package loop
MAN*UC*PACKAGE_2
HL*7*6*I      // Seventh HL loop, the third item loop
MAN*UC*ITEM_1
HL*8*6*I      // Eighth HL loop, the fourth item loop
MAN*UC*ITEM_3
```

在此資料中，第二個 HL 段以分層關係"屬於"第一個 HL 段。可以透過檢視以下段的 HL01 和 HL02 的值來確定：

* 第一個 HL 段的 HL01（ID）的值為 "1"
* 第二個 HL 段的 HL02（父 ID）的值也為 "1"

將父 ID 值與 ID 值進行匹配相同的過程可用於確定資料中的所有層次關係。

### 將 HLLoop 層次結構轉換為 XML

啟用**巢狀主從細節迴圈**時，X12 端口會自動處理 HL 層次結構到 XML 層次結構的轉換。端口從 EDI 輸入中解析 HL01 和 HL02 元素值，並確保 XML 元素正確巢狀（縮排）在代表其父元素的元素內。

檢視 HL 層次結構如何轉換為 XML 層次結構，啟用**巢狀主從細節迴圈**時，將從上面的範例 HL 資料生成以下 XML 輸出：

```xml theme={null}
<HLLoop1_S>
  <HL><HL01>1</HL01><HL02>0</HL02><HL03>S</HL03></HL>
  <TD3><TD301>RR</TD301><TD302>SEAU</TD302><TD303>1234567</TD303></TD3>
  <HLLoop1_O>
    <HL><HL01>2</HL01><HL02>1</HL02><HL03>O</HL03></HL>
    <PRF><PRF01>PO111111</PRF01></PRF>
    <HLLoop1_P>
      <HL><HL01>3</HL01><HL02>2</HL02><HL03>P</HL03></HL>
      <MAN><MAN01>UC</MAN01><MAN02>PACKAGE1</MAN02></MAN>
      <HLLoop1_I>
        <HL><HL01>4</HL01><HL02>3</HL02><HL03>I</HL03></HL>
        <MAN><MAN01>UC</MAN01><MAN02>ITEM_1</MAN02></MAN>
      </HLLoop1_I>
      <HLLoop1_I>
        <HL><HL01>5</HL01><HL02>3</HL02><HL03>I</HL03></HL>
        <MAN><MAN01>UC</MAN01><MAN02>ITEM_2</MAN02></MAN>
      </HLLoop1_I>
    </HLLoop1_P>
    <HLLoop1_P>
      <HL><HL01>6</HL01><HL02>2</HL02><HL03>P</HL03></HL>
      <MAN><MAN01>UC</MAN01><MAN02>PACKAGE2</MAN02></MAN>
      <HLLoop1_I>
        <HL><HL01>7</HL01><HL02>6</HL02><HL03>I</HL03></HL>
        <MAN><MAN01>UC</MAN01><MAN02>ITEM_1</MAN02></MAN>
      </HLLoop1_I>
      <HLLoop1_I>
        <HL><HL01>8</HL01><HL02>6</HL02><HL03>I</HL03></HL>
        <MAN><MAN01>UC</MAN01><MAN02>ITEM_3</MAN02></MAN>
      </HLLoop1_I>
    </HLLoop1_P>
  </HLLoop1_O>
</HLLoop1_S>
```

快速辨別差異有一定難度，但需要注意的關鍵是，HLLoop 段包含在其他段中（即，在 XML 中具有父子關係），這與原始 HL01 和 HL02 的值一致。

## 宏

<MacrosTable />

### 範例

<MacrosExamples />

## X12 操作

除了 {siteNameShort} 提供的[操作](../scripting/operations/operations)之外，端口還可以提供將功能擴充套件到 ArcScript 中的操作。這些端口操作可以像任何其他 ArcScript 操作一樣呼叫，但必須透過 `connector.rsc` 端點呼叫，並且必須包含身分驗證權杖。

下面列出了 X12 端口特定功能的操作。

### x12Scan

從 X12 文件的標題中掃描標題值。

#### 必須的參數

* **file**：X12 檔案的路徑。

#### 可選的參數

* **format**：檔案格式。預設值為 'X12'。

#### 輸出屬性

* **InterchangeSenderIdQualifier**：傳送方 ID（ISA05）限定符。
* **InterchangeSenderId**：傳送方 ID（ISA06）。
* **InterchangeReceiverIdQualifier**：接收方 ID（ISA07）限定符。
* **InterchangeReceiverId**：接收方 ID（ISA08）。
* **InterchangeControlNumber**：唯一標識 EDI 交換的值（ISA13）。
* **FunctionalGroupSenderId**：功能群組配置中傳送方 ID（GS02）。
* **FunctionalGroupReceiverId**：功能群組配置中接收方 ID（GS03）。
* **DocumentType**：檔案型別或交易集識別碼程式碼（ST01）。
* **StandardVersion**：此交換中使用的 X12 標準的主要版本（例如 00401、00501）。

## 常見錯誤

以下列出了常見錯誤，以及原因和建議的解決方案。

### 錯誤：找不到 Schema 檔案（\[schema 主要版本] \[schema 文件型別]）

**原因**

{siteNameShort} 解析 X12 檔案時，首先在檔案中掃描 EDI 版本和文件型別，以確定在解析過程中使用哪種 Schema。該應用程式包含一組廣泛的 JSON 格式的 X12 Schema，儲存在應用程式目錄的 `schemas` 資料夾中（緊鄰 `data` 資料夾）。

此錯誤表明應用程式找不到與檔案報告的主要版本和文件型別相匹配的 Schema 檔案。

如果錯誤訊息中缺少 \[schema major version] 值或 \[schema document type] 值，則表明 EDI 文件不包含主要版本或文件型別。

否則，這表明 {siteNameShort} 隨附的 Schema 定義集中未包含相應的 Schema。

**解決**

如果 EDI 檔案不包含 Schema 主版本或文件型別，請與交易夥伴（或 EDI 文件的其他來源）聯絡，告知他們這些值必須包含在訊息標頭中。

否則，請從免費下載頁面取得合適的 Schema 版本。下載 Schema 資料夾並將其放置在以下位置之一：

1. 在磁碟上的 Schema 資料夾內（例如 `<ConnectorDirectory>/Resources/Schemas/`）
2. 如果一個 Schema 被多個端口使用，建議使用如下資料夾結構：`<ApplicationDirectory>/schemas/<type>_schemas/<major version>`。在此範例中，`<type>` 應為 `x12`。

### 錯誤：第 \[line number] 行中標記為 \[segment name] 的段在指定 Schema（\[schema 主要版本] \[schema 文件型別]）中不處於有效位置。這可能表示輸入檔案包含順序錯誤的段。

**原因**

{siteNameShort} 解析 X12 檔案時，首先在檔案中掃描 EDI 版本和文件型別，以確定在解析過程中使用哪種 Schema。該應用程式包含一組廣泛的 JSON 格式的 X12 Schema，儲存在根安裝目錄的 `www\app_data` 資料夾中。

此錯誤表明剖析器在檔案中遇到的 EDI 段與相關文件 Schema 中定義的段的順序不匹配。這可能表明幾個不同的問題：

* 交易夥伴生成的 EDI 檔案有誤
* EDI 檔案由不同於檔案中指示的 Schema 版本生成
* EDI 檔案由自定義 Schema 生成

**解決**

如果 EDI 檔案由自定義 Schema 生成，請將自定義 Schema 檔案（JSON 格式）放在 {siteNameShort} 讀取 EDI Schema 的資料夾中。端口透過按順序檢查以下位置來搜尋 Schema：

1. 在磁碟上的 Schema 資料夾內（例如 `<ConnectorDirectory>/Resources/Schemas/`）
2. 如果一個 Schema 被多個端口使用，建議使用如下資料夾結構：`<ApplicationDirectory>/schemas/<type>_schemas/<major version>`。在此範例中，`<type>` 應為 `x12`。

如果 EDI 檔案不是由自定義 Schema 生成的，則有兩種方法可以解決交易夥伴生成的 EDI 檔案與用於解析該檔案的 EDI Schema 之間的差異。

1. 手動編輯適當的 EDI Schema 檔案（在上面的檔案路徑中找到），以調整段順序，使其與交易夥伴的 EDI 檔案匹配。錯誤訊息指示檔案中段與 Schema 定義不同的行。跟蹤段順序的 JSON 定義，直到找到差異為止，然後對 JSON 中的段重新排序以匹配交易夥伴提供的檔案。
2. 與交易夥伴聯絡瞭解 EDI 檔案情況。確認檔案是根據檔案中報告的主要版本生成的，並說明未識別檔案中段的順序。

使用哪種方法取決於對特定文件型別的 EDI 段的熟悉程度（根據交易夥伴的檔案正確編輯 JSON Schema）和交易夥伴的靈活性（調整 EDI 檔案以回應有關錯誤的資訊）。
