程式資訊
- 程式 ID:
TWORKZCOND1 - 所屬子系統:A.系統資料
- 狀態:stable
預設條件值(TWORK 版)¶
功能簡介¶
「預設條件值(TWORK 版)」用來維護資料瀏覽器(各單據查詢視窗)在每個「條件類別」底下實際使用的條件式列表。每一列條件由「欄位 × 運算子 × 值1 / 值2 / 值3 / 物件1 / 物件2 / 遮罩1 / 遮罩2」組成,多列串接後就是使用者開啟瀏覽器時看到的預設查詢條件。
本表單與 TWORK 瀏覽條件設定(樣板) 是一對:
TWORKZCOND(樣板,A-100):定義每個「瀏覽類別 × 單據別 × 瀏覽辨識碼」有哪些可用欄位與條件類別。TWORKZCOND1(本表單,A-110):在既有的條件類別上,逐列填寫實際的條件式。
本表單主檔欄位全為唯讀(從樣板帶過來),實際可編輯的只有下方的條件式明細格線。屬於系統/MIS 設定範疇,由系統管理員維護,一般使用者不需直接操作。
TWORK 版與標準版
本系統的瀏覽條件設定有兩套並存:TWORK 版(TWORKZCOND / TWORKZCOND1)與標準版(ZCOND / ZCOND1)。本表單與標準版的 ZCOND1 共用完全相同的程式邏輯與資料結構(同一組來源檢視與儲存規則),差別只在主選單入口(程式別 TWORKZCOND1 對應系統層樣板 TWORKZCOND;ZCOND1 對應使用者層 ZCOND)。本頁說明 TWORK 版的明細編輯;標準版請參考 ZCOND1。
前置需求¶
- 權限:A.系統管理 →
A-110 預設條件值(TWORK 版)的瀏覽/新增/修改/刪除權限。 - 必須先維護的主檔/參數:
| 資料 | 影響什麼 |
|---|---|
| TWORK 瀏覽條件設定樣板(TWORKZCOND) 的主檔 | 提供本表單的單據別 / 瀏覽辨識碼 / 條件類別;沒有先建樣板,本表單就沒有任何可選的條件類別 |
| 樣板中的欄位定義(欄位編號、欄位說明、語言版本) | 明細「欄位說明」下拉的可選欄位清單;下拉只列出該樣板登錄的欄位 |
系統運算子表(LCLZcondOperator) |
明細「運算子說明」下拉的可選運算子清單(系統內建,一般不需維護) |
| 多語系設定(LANGUAGE) | 主檔「語言版本」與欄位說明的顯示文字;不同語言版本對應不同的欄位清單 |
操作步驟¶
本表單沒有「新增主檔」動作(主檔由樣板帶入),主要流程是找到要設定的條件類別 → 編輯條件式明細 → 儲存。
- 開啟表單後,用工具列的上一筆/下一筆或查詢功能,移動到要設定的條件類別主檔。
- 每移動到一筆主檔,系統會依該筆的單據別 + 瀏覽辨識碼 + 語言版本,重新載入下方明細可用的「欄位清單」與「運算子清單」(詳見欄位連動與附加功能)。
- 確認上方主檔資訊(編號 / 單據別 / 類別 / 顯示說明 / 瀏覽辨識碼 / 語言版本)是要設定的對象。這些欄位皆為唯讀。
- 在下方條件式格線編輯每一列條件:
- 序號:條件的順序編號。
- 欄位說明:從下拉選取要套用條件的欄位(實際存的是該欄位的欄位編號)。
- 運算子說明:從下拉選取比較運算子(實際存的是運算子編號)。
- 視運算子需要填寫 值1 / 值2 / 值3(區間或多值條件)。
- 視欄位需要填寫 物件1 / 物件2(關聯物件)與 遮罩1 / 遮罩2(輸入遮罩)。
- 要新增一列條件式,在格線最後一列輸入即可;要刪除一列,將該列的欄位編號清掉(會被視為待刪,見欄位連動與附加功能)。
- 按工具列的
儲存寫回資料庫。
主檔由樣板帶入
主檔的單據別、瀏覽辨識碼、條件類別等資訊在 TWORKZCOND 樣板 維護後帶入本表單,於本頁為唯讀;本表單聚焦在條件式明細的填寫。實際可用的權限(新增 / 修改 / 刪除 / 瀏覽)由 權限設定 控管,與標準版 ZCOND1 一致。
欄位說明¶
主檔(皆唯讀)¶
| 欄位 | 必填 | 說明/格式/預設 |
|---|---|---|
| 編號 | — | 條件類別編號(最長 20)。唯讀,由樣板帶入。 |
| 單據別 | — | 此條件套用的單據/程式別(最長 60)。唯讀。 |
| 類別 | — | 條件類別名稱(最長 40)。唯讀。 |
| 顯示說明 | — | 由系統依「類別」翻譯出的顯示文字(DisplayDescription),唯讀。 |
| 瀏覽辨識碼 | — | 區分同一單據下不同瀏覽用途的代碼(單字元)。下拉來源為 B / D 兩種,唯讀顯示。 |
| 語言版本 | — | 此條件對應的語言版本(短整數)。唯讀,影響可用欄位清單。 |
明細:條件式¶
| 欄位 | 必填 | 說明/格式/預設 |
|---|---|---|
| 序號 | ✔ | 條件列的順序編號(整數)。 |
| 欄位說明 | ✔ | ComboBox,顯示欄位說明、實際儲存欄位編號。下拉來源為該主檔對應的欄位清單。 |
| 運算子說明 | ✔ | ComboBox,顯示運算子說明、實際儲存運算子編號(最長 6)。 |
| 值1 | △ | 條件主要值(最長 254)。是否必填視運算子而定。 |
| 值2 | — | 區間條件的結束值(最長 40)。 |
| 值3 | — | 延伸值(最長 999)。 |
| 物件1 | — | 關聯物件 1(最長 60)。 |
| 物件2 | — | 關聯物件 2(最長 60)。 |
| 遮罩1 | — | 輸入遮罩 1(最長 40)。 |
| 遮罩2 | — | 輸入遮罩 2(最長 40)。 |
欄位編號 / 運算子編號 與顯示文字的關係
格線中看到的是「欄位說明」「運算子說明」這些人看得懂的文字,但資料庫實際存的是對應的欄位編號與運算子編號。選取下拉時系統會自動把編號與說明對起來(見下節)。
欄位連動與附加功能¶
這一節說明在本表單操作時,系統在背後幫你做的事。
移動主檔時:重新載入欄位 / 運算子清單¶
當你用工具列移動到另一筆主檔(條件類別)時,系統會(AfterMoverRecord):
- 依「類別」重新計算主檔的顯示說明(
SetDisplayDescription,透過多語系字典ZCOND翻譯)。 - 以該主檔的單據別+瀏覽辨識碼為條件,重新組出此類別可用的:
- 欄位清單(
ColumnNoList):明細「欄位說明」下拉的可選項目。清單會依該主檔的語言版本過濾(GetColumnSourcesByLanguage)——找不到對應語言時,退回顯示全部欄位。 - 運算子清單(
SymbolNoList):明細「運算子說明」下拉的可選項目,來自系統運算子表。
- 欄位清單(
- 把上述兩份清單逐列灌進每一筆明細,讓每列的下拉都能正確把「編號」對應到「說明」。
下拉是空的?
若「欄位說明」下拉沒有選項,通常代表該條件類別在 TWORKZCOND 樣板 還沒登錄任何欄位,或登錄的欄位語言版本與本筆主檔的語言版本不一致。請先回樣板補欄位。
選取「欄位說明」下拉時:自動帶出欄位編號與描述¶
明細的欄位下拉綁定在輔助屬性 欄位編號Binding 上。當你選一個欄位:
- 系統把選到的欄位編號寫回該列,並從欄位清單字典查出對應的欄位說明填到內部的
ColumnDescription。 - 若選到的編號不在清單裡,描述會清空,提醒你這列的欄位設定不完整。
選取「運算子說明」下拉時:自動帶出運算子編號與描述¶
同理,運算子下拉綁定在 運算子編號Binding 上(觸發時機為 LostFocus):
- 選取後把運算子編號寫回該列,並從運算子清單字典查出對應的運算子說明。
- 找不到對應編號時描述清空。
刪除一列條件式¶
明細列是否被視為「要刪除」,由 NeedDeleteFunction 判斷:當該列的欄位編號 ≤ 0(即未選任何欄位)時,這列會被當成待刪/空列處理,儲存時不會寫入。換言之,要移除一列條件式,把它的欄位清成未選即可。
主檔的刪除判斷
主檔層級的刪除條件是「編號為空白」。但因為主檔在本表單為唯讀、由樣板帶入,正常情況不會在此產生空白主檔。
條件式如何被瀏覽器使用(背景說明)¶
本表單填好的條件式,會在使用者開啟對應單據的資料瀏覽器時被讀出,作為預設查詢條件:系統依「條件類別編號」撈出所有條件列,逐列轉成查詢條件物件(欄位、運算子、起始值=值1、結束值=值2),不足 5 列時補足空白列。這部分由瀏覽器初始化邏輯(BrowseInitialzation)處理,不需在本表單操作,但有助於理解這裡每個欄位最終的用途。
此表單沒有列印 / 匯入匯出 / 簽核
本 ViewModel 僅實作了移動紀錄(IMoveRecord),沒有額外的 ExtensionFunction、報表(GetReports)、Excel 匯入匯出或工作流程簽核。工具列上的標準動作(查詢、儲存、刪除)即為全部功能。
常見問題¶
上方主檔欄位都不能改?
這是正常的。本表單主檔(編號 / 單據別 / 類別 / 顯示說明 / 瀏覽辨識碼 / 語言版本)全部為唯讀,資料由 TWORKZCOND 樣板 帶入。要調整這些主檔資訊,請回樣板表單維護;本表單只負責編輯下方的條件式明細。
「欄位說明」下拉沒有任何欄位可選?
下拉的欄位清單來自 TWORKZCOND 樣板 中、該「單據別 + 瀏覽辨識碼」登錄的欄位定義,並會依本筆主檔的語言版本過濾。若樣板尚未登錄欄位,或登錄欄位的語言版本與主檔不符,下拉就會是空的。請先回樣板補上欄位定義。
選了欄位、運算子,存檔後再開卻顯示空白?
資料庫存的是欄位編號 / 運算子編號,畫面顯示的是對應「說明」。若再次開啟時某列空白,多半是該編號已不在目前的欄位/運算子清單中(例如樣板的欄位被刪、或語言版本改變)。確認樣板與語言版本一致後,重新選取即可。
怎麼刪掉一列條件式?
把該列的欄位清成未選(欄位編號變為 0 或以下),這列就會被視為待刪/空列,儲存時不會寫入。不需要另外的刪除鍵。
TWORKZCOND1 和 ZCOND1 是同一個東西嗎?
幾乎是。兩者是不同的主選單程式(TWORKZCOND1 屬 TWORK 版、ZCOND1 屬標準版),但共用完全相同的程式碼邏輯與資料結構——同一組來源檢視、同樣的明細編輯與儲存規則。差別只在套用對象:TWORKZCOND1 對應系統層樣板 TWORKZCOND,ZCOND1 對應使用者層 ZCOND。操作方式與權限項目(新增 / 修改 / 刪除 / 瀏覽)兩者一致,維護你實際使用的那一支即可。
相關功能¶
- TWORK 瀏覽條件設定樣板(TWORKZCOND)(本表單主檔的來源樣板)
- 預設條件值(標準版 ZCOND1)(共用相同程式邏輯的標準版孿生)
- 自訂條件別(標準版 ZCOND)(標準版的條件樣板)
- 多語系設定(LANGUAGE)(主檔語言版本與欄位說明的顯示文字)
- 權限設定(ZPERMIT)(控管本表單的瀏覽/編輯權限)
- 使用手冊(A-System 首頁)
需補截圖清單
以下截圖待功能 runtime 驗收後補拍(放 docs/A-System/images/):
tworkzcond1-step1.png— 表單全貌(上方唯讀主檔區 + 下方條件式格線)tworkzcond1-step2.png— 條件式明細格線(含「欄位說明」「運算子說明」下拉展開)tworkzcond1-step3.png— 移動主檔後欄位 / 運算子下拉清單隨之更新的示意