跳轉到

程式資訊

  • 程式 IDZCOND1
  • 所屬子系統:A.系統資料
  • 狀態:stable

預設條件值

功能簡介

「預設條件值」用來維護瀏覽查詢視窗裡的預設條件配方。系統很多單據的瀏覽/查詢視窗(例如挑客戶、挑品號、挑訂單)上方都有一個「預設條件」下拉,選了之後條件列會自動填好——那些條件列的內容就是在這支表單裡定義的。

每一筆主檔代表「某個程式別 × 瀏覽辨識碼」底下的一組預設條件(一個配方),底下的明細就是這組配方要套用的條件式清單:每一列指定一個 欄位 × 運算子 × 值

適合系統管理員或顧問在導入、調整查詢介面時使用。本表單只負責維護條件配方的內容;配方框架(程式別、類別、瀏覽辨識碼)本身是在上一層的 自訂條件別 建立後帶進來的,所以本頁主檔欄位多為唯讀,實際可編輯的是下方明細。

與 TWORKZCOND1 的關係

本表單(ZCOND1)與 預設條件值(TWORK 版) 共用相同的程式碼邏輯與資料結構,兩者編號同為 A-110。差別在於套用對象不同:ZCOND1 對應 自訂條件別(ZCOND,使用者層級),TWORKZCOND1 對應 TWORKZCOND(系統層級樣板)。操作方式兩者完全一致。

前置需求

  • 權限:A.系統管理 → A-110 預設條件值 的瀏覽/修改/刪除權限。本程式在系統中停用新增ProgramPermissionSetting 將 ZCOND1 設為 ProgramAllowAdd = false),新的配方框架請到 自訂條件別 建立。
  • 基礎資料:本表單的下拉與明細欄位需要下列資料先到位——
資料 影響什麼
自訂條件別(ZCOND,含程式別、瀏覽辨識碼、類別) 提供本表單主檔的配方框架;主檔的編號/程式別/類別/瀏覽辨識碼都從這裡帶來
瀏覽欄位定義(各程式別的可查欄位) 明細 欄位說明 下拉的可選清單;沒有定義就只能用 Model 預設欄位
運算子對照(系統內建 A~S 共 19 種) 明細 運算子說明 下拉的可選清單
多語系顯示名稱(語言版本) 主檔 顯示說明 與欄位/運算子的顯示文字,依語言版本翻譯

小技巧

若不確定某個程式別有哪些可查欄位、或某組配方框架是否存在,先到 自訂條件別 確認程式別 × 瀏覽辨識碼 已建立、並維護過欄位清單,再回來這支補條件式。

操作步驟

本表單為主檔 + 明細結構:上方一塊主檔(唯讀),下方一張條件式格線(可編輯)。

  1. 用工具列的查詢/翻頁功能定位到要維護的配方(一筆主檔 = 一組程式別 × 瀏覽辨識碼的預設條件)。
  2. 定位後,上方主檔顯示這組配方的 編號程式別類別顯示說明瀏覽辨識碼語言版本(皆唯讀)。系統會自動依主檔的程式別 + 瀏覽辨識碼 + 語言版本,把可選的欄位清單運算子清單載入下方兩個下拉。
  3. 在下方格線維護條件式:
    1. 欄位說明:從下拉挑要套用條件的欄位(下拉顯示中文欄位說明,實際存的是欄位編號)。
    2. 運算子說明:挑比較方式(等於、不等於、大於、Between、Contains…)。
    3. 依運算子填 值1(單值),需要區間(如 Between)時再填 值2值3 供較長字串使用。
    4. 視欄位型態填 物件1/物件2(搭配的物件設定)與 遮罩1/遮罩2(輸入格式遮罩)。
  4. 要刪掉某一列條件,把該列的欄位說明清空(欄位編號 = 0),存檔時系統會自動把該列視為刪除。
  5. 按工具列 儲存。存檔時系統會把主檔的程式別、瀏覽辨識碼、編號自動寫回每一列明細(使用者不需手動輸入),確保明細掛回正確的配方。

注意

主檔的編號/程式別/類別/瀏覽辨識碼在本表單是唯讀的。要新增一組「全新的配方框架」(新的程式別 × 瀏覽辨識碼),請到 自訂條件別 建立;本表單只負責填那組框架底下的條件式內容。

欄位說明

主檔(唯讀)

欄位 必填 說明/格式/預設
編號 ✔(系統帶) 此組預設條件配方的代號,唯讀,由配方框架帶入
程式別 ✔(系統帶) 此配方套用的單據別(程式),唯讀
類別 配方的分類碼(對照 ZCOND 多語系翻譯成顯示說明),唯讀
顯示說明 系統依「類別」翻譯出的中文說明文字(ZCOND 語系字典),唯讀、自動產生
瀏覽辨識碼 下拉值 BD(瀏覽類別),唯讀顯示
語言版本 此配方對應的語言版本,決定欄位/運算子下拉與顯示說明的語系

明細(條件式,可編輯)

欄位 必填 說明/格式/預設
序號 條件列的排列序號
欄位說明 ComboBox,顯示中文欄位說明、實際儲存欄位編號;清空(欄位編號 = 0)代表刪除此列
運算子說明 ComboBox,顯示中文運算子說明、實際儲存運算子編號(A~S,見下方說明)
值1 視運算子 條件比對的主要值(最長 254 字)
值2 視運算子 區間運算子(如 Between)的第二個值(最長 40 字)
值3 供較長字串條件使用(最長 999 字)
物件1/物件2 搭配欄位的物件設定(最長 60 字)
遮罩1/遮罩2 輸入格式遮罩(最長 40 字)

運算子代碼對照

運算子下拉的選項是系統內建的 19 種,存的是單一字母代碼,顯示文字會依使用者語言翻譯:

A 等於、B 不等於、C 大於、D 大於等於、E 小於、F 小於等於、G 開頭為、H 結尾為、I 包含、J 不包含、K 在清單內、L 不在清單內、M 為 Null、N 不為 Null、O 為空、P 不為空、Q 介於(Between)、R 採用此條件、S 不採用此條件。

欄位連動與附加功能

這一節說明本表單在背後實際會做的事,全部來自程式碼(Zcond1ViewModelZcond1SaveTwork_sys_vw_zcond_defineSourceBrowseInitialzation)。

  • 翻頁/定位主檔後,自動載入下拉清單(AfterMoverRecord:每當你切換到一筆主檔,系統會:
    1. 依主檔的「類別」呼叫語系字典,產生唯讀的顯示說明SetDisplayDescriptionZCOND 翻譯)。
    2. 以主檔的 程式別(單據別)+ 瀏覽辨識碼 + 語言版本 為條件,透過 BrowseInitialzation 撈出該程式別可查的欄位清單(依語言版本過濾)與運算子清單
    3. 把這兩份清單塞進每一列明細的下拉資料來源(ColumnListSymbolNoList),所以換一筆主檔,明細的欄位/運算子可選項也會跟著換
  • 欄位說明下拉連動欄位編號:明細的欄位下拉綁的是 欄位編號Binding。選一個欄位時,系統會把對應的欄位編號寫入該列,並同步更新該列的 欄位說明 文字;若選到的編號不在清單內,欄位說明會清空。
  • 運算子說明下拉連動運算子編號:同理,運算子下拉綁 運算子編號Binding,選擇後寫入運算子編號、同步更新運算子說明文字(運算子欄位的更新時機為失焦 LostFocus,欄位下拉則為即時 PropertyChanged)。
  • 存檔時自動把主檔鍵寫回明細,並判定刪除(Zcond1Save.HandleDataBeforeEndEdit:按儲存的瞬間,系統逐列檢查明細——
    • 若該列 欄位編號 = 0(你把欄位清空了)→ 標記為刪除增刪修 = D)。
    • 否則 → 自動把主檔的單據別、瀏覽辨識碼、編號蓋寫到該列,確保明細正確掛回這組配方。所以使用者不需要、也不應該自己去填這幾個鍵欄位。
  • 刪除主檔的條件:主檔在沒有編號(編號為空白)時才允許走刪除流程(NeedDeleteFunction);明細列則以「欄位編號 ≤ 0」作為可刪除的判定。
  • 這份資料會被瀏覽視窗讀回去用:本表單維護的條件式,正是各瀏覽/查詢視窗「預設條件」下拉的內容來源。BrowseInitialzation 會依程式別 + 瀏覽辨識碼讀回這些 define 列,自動把查詢視窗的條件列預先填好(含欄位、運算子、值1、值2)。換句話說,在這裡存好的條件,下次打開對應的瀏覽視窗就會看到並可直接套用

新增整組配方目前的入口

本表單聚焦於「維護既有配方框架底下的條件式」。要建立全新的程式別 × 瀏覽辨識碼框架,入口在 自訂條件別(ZCOND);本表單的主檔鍵欄位為唯讀,無法在此直接新開一組程式別框架。

常見問題

明細的欄位說明/運算子說明下拉是空的、選不到東西?

下拉清單是依目前定位的主檔的「程式別 + 瀏覽辨識碼 + 語言版本」即時載入的。若下拉空白,通常是:(1) 還沒定位到任何主檔;(2) 該程式別在 自訂條件別 還沒維護過可查欄位清單(此時只會退回 Model 預設欄位);(3) 語言版本對不上。先確認主檔已定位、且該程式別的欄位定義存在。

我在明細填的「值」存了,下次打開瀏覽視窗卻沒套用?

請確認該列有選欄位說明欄位編號不為 0——欄位編號為 0 的列在存檔時會被當成刪除整列丟掉。另外存檔後該列的程式別/瀏覽辨識碼/編號是由系統自動蓋寫的,若主檔定位錯誤,條件會掛到別組配方上。

顯示說明欄是空白或顯示成代碼?

顯示說明 是系統用「類別」去 ZCOND 語系字典翻譯出來的,並非手動輸入。若顯示空白或仍是原始碼,代表該類別在對應語言版本下沒有翻譯資料,請補上該語系的對照後重新定位主檔。

為什麼主檔的編號、程式別改不了?

這是設計如此。本表單只維護「配方框架底下的條件式內容」,框架(程式別 × 瀏覽辨識碼 × 編號)本身在 自訂條件別 建立與維護,因此在本頁皆為唯讀。

ZCOND1 跟 TWORKZCOND1 有什麼不同?要維護哪一個?

兩者程式邏輯完全相同,差別只在套用對象:ZCOND1 對應使用者層級的 自訂條件別TWORKZCOND1 對應系統層級樣板 TWORKZCOND。維護你實際使用的那一層即可,操作方式一致。

相關功能


需補截圖清單

以下截圖待功能 runtime 驗收後補拍(放 docs/A-System/images/):

  1. zcond1-step1.png — 主檔(唯讀)+ 下方條件式明細格線的整體版面
  2. zcond1-step2.png — 明細「欄位說明」下拉展開(顯示某程式別的可查欄位清單)
  3. zcond1-step3.png — 明細「運算子說明」下拉展開(A~S 運算子)