程式資訊
- 程式 ID:
Sliy1 - 所屬子系統:Other
- 狀態:stable
批次修改項目編號¶
功能簡介¶
「批次修改項目編號」是一支輔助工具,用來把已過帳傳票明細上的 項目編號(會計項目/工令代號)一次補上或改掉。它不會出現在主選單,而是從別的單據以延伸功能叫出的小視窗:
實務情境:某個會計科目當初登傳票時漏填或填錯項目編號,事後要逐張改太慢。本工具讓你指定一個科目代號+一段傳票日期區間,把符合的傳票明細全部撈出來,輸入一次目標項目編號後,逐列或整批套用,最後一次存回資料庫(走轉單/回寫機制)。
這是修改工具,不是查詢報表
本頁雖然工具列只有一顆 查詢 鈕,但它的目的是改資料。查出來的傳票明細格線本身是唯讀的,要修改的項目編號是靠每列前面的 更新 按鈕、把上方條件列的項目編號套進該列;按 儲存 才把變更回寫到傳票檔。請確認你有該科目傳票的維護權限再操作。
前置需求¶
| 資料 | 影響 |
|---|---|
| 會計科目(accl,含「輸入傳票」「控制方式4」設定) | 決定科目能不能查、能不能輸入項目編號 |
| 會計項目主檔(項目編號/項目名稱) | 項目編號 條件與每列項目名稱的來源 |
| 已過帳傳票(sliym/sliy) | 查詢的資料來源;明細要存在於指定科目與日期區間內才撈得到 |
操作步驟¶
整個操作集中在視窗上方的條件列與下方的兩個頁籤:
- 在 科目代號 欄輸入或用放大鏡選一個會計科目,按 Tab 離開欄位。
- 搜尋控件會自動帶出右側唯讀的科目名稱。
- 系統同時用科目去字典查 控制方式4,判斷此科目是否允許輸入項目編號(見欄位連動與附加功能)。
- 設定 起始日期 ~ 截止日期(比對傳票日期),預設都是今天,請依需要往前調整成要處理的傳票區間。
- 在 項目編號 欄輸入這次要套用的目標項目編號(同樣可用放大鏡查詢)。
- 若此科目不允許輸入項目編號,系統會跳出提示且不接受輸入。
- 按
查詢。符合「科目代號=指定值,且傳票日期落在區間內」的傳票明細會載入下方 Data 頁籤。- 若有傳票正被其他人編輯而鎖住,它們會被分流到 鎖住資料 頁籤(頁籤標題會顯示筆數)。
- 套用項目編號到要修改的列——Data 頁籤的格線是唯讀的,無法直接在儲存格鍵入:
- 在 Data 頁籤該列最前面按
更新按鈕,系統會把上方條件列的 項目編號 寫進這一列。 - 要套用相同值時,逐列按
更新即可;本工具沒有「全部套用」一鍵按鈕。
- 在 Data 頁籤該列最前面按
- 確認 Data 頁籤各列項目編號無誤後,按視窗右下角的
儲存將變更回寫到傳票。- 存檔成功會跳出成功訊息;依系統參數設定,視窗可能會在存檔後自動關閉。
- 若要放棄這次修改,按
取消;要關閉視窗按離開。

小技巧
本工具的設計是「整批同值、逐列確認」:先在條件列填好 項目編號,再對每一列按 更新 把該值套進去。格線不開放直接編輯,所以不同列要套不同值時,請改用上方條件列換值後再對那些列按 更新。
欄位說明¶
查詢條件列¶
| 欄位 | 必填 | 說明/格式/預設 |
|---|---|---|
| 科目代號 | ✔ | 要處理的會計科目;離開欄位自動帶科目名稱並判斷可否輸入項目編號 |
| 起始日期 / 截止日期 | ✔ | 比對傳票日期的區間,預設皆為今天,可改 |
| 項目編號 | — | 本次要批次套用的目標項目編號;輸入受科目「控制方式4」管制 |
Data/鎖住資料 頁籤主要欄位¶
兩個頁籤欄位結構相同,差別在資料來源(可轉單 vs. 被鎖住)。
格線唯讀,靠按鈕改值
Data 頁籤格線整體設為唯讀(IsReadOnly),所有儲存格都不能直接鍵入;下表「修改方式」欄說明此格線中唯一會被改動的 項目編號 是怎麼變的。
| 欄位 | 修改方式 | 說明 |
|---|---|---|
| 更新(按鈕,僅 Data 頁籤) | — | 按下後把上方條件列的項目編號程式化寫進該列(走 JobCodeBinding) |
鎖定使用者(僅鎖住資料頁籤,綁定 修改人員) |
— | 正在編輯/鎖住該傳票的使用者 |
| 項目編號 | 經 更新 按鈕 |
本工具的修改目標欄位;格線唯讀,不可直接鍵入 |
| 傳票號碼 / 傳票日期 / 序號 | — | 傳票來源識別 |
| 科目代號 / 科目名稱 | — | 該明細的會計科目 |
| 幣別 / 原借方金額 / 原貸方金額 / 匯率 | — | 原幣金額與匯率 |
| 本借方金額 / 本貸方金額 | — | 本位幣金額(唯讀) |
| 功能幣匯率 / 借方金額 / 貸方金額 | — | 功能幣金額 |
| 集團幣匯率 / 集借方金額 / 集貸方金額 | — | 集團幣金額 |
| 部門代號 / 部門簡稱 | — | 維度:部門 |
| 分類索引1~4 | — | 維度:自訂分類索引 |
| 客廠代號 / 客廠部簡稱 | — | 維度:客戶/廠商 |
| 員工編號 / 姓名 | — | 維度:員工 |
| 項目名稱 | — | 依項目編號帶出的名稱 |
| 單別1~3 / 單號1~3 | — | 來源單據勾稽 |
| 產品群組 / 品號 / 數量 / 單位 / 單價 / 折扣 / 金額 | — | 數量金額維度 |
| 財務單id / 財務明細id | — | 傳票回寫的對應鍵(唯讀) |
| 到期日 | — | 票據/應收付到期日 |
金額欄位只是參考
本工具的目的是維護項目編號這個維度,金額、匯率、借貸方等欄位是讓你辨識傳票用的;不要把它當成改金額的地方。
欄位連動與附加功能¶
本節整理「輸入某欄位/按某按鈕後系統會做什麼」,全部依程式實際邏輯:
科目代號 → 帶名稱、判斷可否輸入項目編號¶
當你離開 科目代號 欄(UpdateSourceTrigger=LostFocus)時:
- 右側唯讀的科目名稱由科目搜尋控件(
AcclSearch)自己解析帶出(綁定該控件的Description)。 - 同時 ViewModel 用科目代號去會計科目字典(
GetAcclDic)查資料,檢查該科目的 控制方式4(項目編號控制旗標):- 若控制方式4 =
N(不使用項目編號),系統把內部的「可輸入」(canInput)旗標關掉。 - 若這個科目代號在字典中找不到,也會把「可輸入」旗標關掉。
- 其他情況則開放輸入。
- 若控制方式4 =
科目沒設定就不能改項目編號
上面這個旗標會直接擋住下一步——只有「控制方式4 不是 N」且「科目存在」的科目,才允許在本工具輸入/套用項目編號。
項目編號 → 受「可輸入」旗標管制¶
當你在條件列輸入 項目編號 時:
- 若目前選的科目不允許輸入(見上一條),系統會跳出提示 「此科目代號無法輸入項目編號」 並拒絕寫入該值,欄位維持原樣。
- 允許時才接受輸入,這個值會成為後續逐列
更新要套用的來源。
查詢 → 撈傳票並分流鎖住資料¶
按 查詢 時:
- 系統以條件「該科目代號 + 傳票日期介於起訖區間」呼叫傳票轉單查詢(後端 SP
DARB_TUR_SLIY,來源表sliym)。 - 查得的傳票明細分成兩類:
- 可轉單/可編輯的進 Data 頁籤(
傳票Source)。 - 被其他使用者鎖住的進 鎖住資料 頁籤(
傳票無法轉單Source),並在頁籤標題以醒目色顯示鎖住筆數。
- 可轉單/可編輯的進 Data 頁籤(
- 若整批都沒有資料,系統會提示「無資料」;若資料正被特定人員鎖定,會提示鎖定者名稱。
鎖住資料只能看不能改
鎖住資料頁籤列出的傳票正由別人編輯中,本工具不會把它們納入存檔範圍。請等對方結束編輯後再重新查詢。
每列 更新 按鈕 → 套用條件列的項目編號¶
Data 頁籤每列最前面的 更新 按鈕(UpdateCommand → 更新項目),按下後系統把條件列目前的項目編號寫進該列的項目編號欄(透過 JobCodeBinding setter,內部設定 項目編號 並通知更新)。由於格線本身唯讀,這顆按鈕是把值套進列的唯一途徑——沒有它就無法在格線改項目編號。
儲存 → 把修改回寫傳票¶
按右下角 儲存(SqlEditTurn 工具列)時:
- 系統把 Data 頁籤所有列複製成上傳用的
Twork_acc_vw_sliySource、逐筆標記為修改(增刪修=E),透過ItemsBindingManager(註冊sliy表)寫回傳票。 - 存檔成功跳出成功訊息;是否自動關閉視窗由使用者參數
24的第 1 個值決定(Y=關閉,預設Y)。 - 存檔或取消後,兩個頁籤的清單會被清空,回到可重新查詢的初始狀態。
取消 / 離開¶
取消:放棄目前查詢結果與未存的修改,清空清單;是否同時關閉視窗由使用者參數24的第 2 個值決定(Y=關閉,預設N=留在原視窗)。離開:直接關閉本視窗(不存檔)。
本工具沒有新增/刪除/列印
本視窗只做「查詢既有傳票 → 改項目編號 → 存回」。它沒有新增傳票、刪除傳票、列印或轉傳票等動作;要做這些請回總帳傳票輸入主畫面。
常見問題¶
輸入科目代號後,項目編號欄打不進去、一直跳「此科目代號無法輸入項目編號」?
這代表該會計科目的 控制方式4 設成 N(不使用項目編號),或這個科目代號在會計科目主檔中找不到。請先到會計科目維護確認該科目有開放「項目編號」這個控制維度,再回來操作。
按了查詢卻沒有任何資料?
請檢查三件事:(1) 科目代號是否正確;(2) 起訖日期是否涵蓋目標傳票的傳票日期(兩個日期預設都是今天,常見是忘了把起始日期往前調);(3) 該科目在此區間內是否真的有傳票明細。若系統提示鎖定者名稱,表示資料正被該人員編輯。
查出來的資料跑到「鎖住資料」頁籤,改不動?
鎖住資料頁籤列出的傳票正被「鎖定使用者」欄顯示的人編輯中,本工具不會回寫它們。請等對方存檔/離開後再重新查詢,資料就會回到可編輯的 Data 頁籤。
格線的項目編號欄打不進去?
這是正常的。Data 頁籤格線整體設為唯讀,不能直接在儲存格鍵入項目編號。要改值請先在上方條件列填好項目編號,再按各列前面的 更新 按鈕套用。
按了每列的「更新」按鈕,項目編號卻沒變?
更新 是把條件列目前的項目編號複製到該列。若條件列的項目編號是空的(或因科目限制沒輸入成功),複製過去自然也是空的。請先在條件列填好有效的項目編號,再按各列的 更新。
存檔後視窗自動關閉了,是正常的嗎?
是。存檔後是否關閉視窗由使用者參數 24 的第 1 個值控制(預設 Y=存檔後關閉);按 取消 是否關閉視窗則看第 2 個值(預設 N=不關)。若要連續處理多個科目而不想每次重開,可請系統管理員調整該參數。
相關功能¶
需補截圖清單
以下截圖待 runtime 驗收後補拍(放 docs/Other/images/):
sliy1-step1.png— 主畫面:上方條件列(科目代號/日期/項目編號)+ 下方 Data/鎖住資料兩頁籤+右下角儲存/取消/離開工具列