程式資訊
- 程式 ID:
ATTACHMENT - 所屬子系統:Other
- 狀態:stable
附件管理¶
功能簡介¶
「附件管理」是一個跨單據共用的彈出視窗,讓你把外部檔案(報價單掃描、合約 PDF、圖片、Excel 等)掛在某一張已存檔的單據上。它不是主選單裡的獨立程式,而是各單據右側「支援面板」上的附件頁籤所開啟的子視窗,因此採購、銷售、應收應付、傳票等只要有附件頁籤的單據,掛附件的操作都長得一模一樣。
附件實體檔不存在資料庫,而是複製到公司的數位圖書館(檔案伺服器)保存;資料庫只記錄檔名、標籤與存放路徑。掛好之後,回到單據的附件頁籤即可看到清單,點 顯示 就能用系統預設程式直接開檔。
這是系統共用功能,不是某一張單據
ATTACHMENT 在程式內被標記為「系統保留」的共用 ProgramClass,沒有自己的主選單入口、也沒有獨立權限。它永遠是從某一張單據的附件頁籤開出來的,掛上去的附件會綁定到「那張單據」。
前置需求¶
- 權限:本功能沒有獨立權限,沿用你開啟的那張來源單據的權限。能編輯該單據(看得到附件頁籤)就能掛附件。
- 能連到檔案伺服器:附件實體檔會複製到數位圖書館,開窗前系統會先檢查連線。
- 單據必須先存檔:只有已經有
Pkid(單據主鍵)的單據才能掛附件。新增中、尚未存檔的單據附件頁籤無法作用。
| 資料/前置 | 影響什麼 |
|---|---|
| 來源單據已存檔(有主鍵) | 沒存檔(Pkid = 0)時按 附件 不會有反應 |
| 數位圖書館(檔案伺服器)連線正常 | 連不上時開窗前就會被擋下並提示「連不上附件伺服器」 |
| 來源單據的標籤欄位(依單據別設定) | 自動串成附件的標籤,並把客戶/廠商/部門/使用者代號分別寫入對應欄位,方便日後依關鍵字找檔 |
操作步驟¶
附件管理視窗從各單據的附件頁籤進入,標題為「新增附件視窗」,視窗大小固定 1000 × 600。
- 在單據上先存檔,確定該單據已有主鍵。
- 切到單據右側支援面板的附件頁籤,按
新增附件(或頁籤上的新增鈕)開啟附件管理視窗。- 此時系統會先檢查能否連上檔案伺服器,連不上會直接提示並中止,不會開窗。
- 在附件清單裡掛檔,有兩種方式:
- 逐列掛:在某一列按
新增(載入鈕),跳出檔案選取對話框,選一個檔,檔名會填進該列的 附件 欄。 - 一次掛多個:按視窗左下角的
多選,在對話框裡用 Ctrl/Shift 複選多個檔,系統會自動往下逐列填入。
- 逐列掛:在某一列按
- 視需要在 標籤 欄補上方便搜尋的關鍵字(例如「2026 報價」)。系統已依該單據別的標籤欄位設定自動帶入一串關鍵字。
- 想先確認掛對檔,按該列的
顯示(開啟鈕)用系統預設程式開檔預覽。 - 確認無誤後按
儲存。系統會把每個檔複製到數位圖書館、寫回資料庫,並重新整理單據資料。 - 不掛了就按
離開,不會留下任何變更。
這個視窗只負責「新增」附件
本視窗沒有刪除鈕,且 附件 欄唯讀、無法直接清空,因此已掛上的附件無法在這個視窗內移除。儲存邏輯上雖會把「附件欄為空」的列當成刪除處理,但本視窗沒有提供把既有附件清空的操作。被設為「禁止刪除」(禁止刪除 = Y,系統流程產生)的附件則永遠唯讀,不可編輯。
欄位說明¶
開窗時系統會先載入此單據既有的附件,再往下補 50 列空白列供你新增。
| 欄位 | 必填 | 說明/格式/預設 |
|---|---|---|
| 序號 | 自動 | 三位數流水號(001、002…),接在既有附件之後自動編,唯讀 |
| 新增(鈕) | — | 點下開啟檔案選取,把選到的檔填進本列 附件 欄 |
| 標籤 | — | 自由文字,供日後搜尋。預設依該單據別的標籤欄位設定串入一串關鍵字(以逗號分隔),可手動增刪 |
| 附件 | ✔ | 要掛的檔案路徑/檔名,唯讀(不能直接打字編輯)。只能透過該列 新增 鈕或左下角 多選 填入。儲存後顯示為伺服器上的新檔名 |
| 載入 | 自動 | Y 表示此檔已複製到數位圖書館(已上傳)。唯讀;空白表示是這次新掛、尚未上傳 |
| 顯示(鈕) | — | 用系統預設程式開啟本列附件。已上傳的檔會先抓回本機暫存再開 |
標籤的自動帶值來源
開窗時系統依該單據別設定的附件標籤欄位清單(GetAttachmentFields),逐一抓出來源單據上對應欄位的值,串成標籤帶進每一列(多個值以逗號分隔;值本身的逗號會先換成空白)。實際串哪些欄位由單據別設定決定,不固定。另外,客戶代號/廠商代號/部門代號/使用者帳號會分別寫進各自的欄位(取自單據的工作流程欄位設定)。標籤只影響日後搜尋,不影響檔案本身。
欄位連動與附加功能¶
這一節把「按了什麼、輸入了什麼,系統會怎麼反應」逐條列出,全部對應實際程式行為。
開窗時(從附件頁籤按下新增)¶
- 先擋連線:附件頁籤在開窗前會先用
IsPathAvailable(含 ping 與 2 秒逾時)檢查數位圖書館。連不上時跳出「連不上附件伺服器(路徑),請檢查網路連線或洽系統管理員」並中止——目的是避免你選完檔、按存檔時才失敗。 - 取得單據主鍵:系統從來源單據抓出主鍵
Pkid與單號等關鍵欄位,作為附件的歸屬。Pkid = 0(單據未存檔)時附件頁籤的新增不會有反應。 - 載入既有附件:以單據別+主鍵查出此單據已掛的附件填入清單;既有附件的 載入 欄會是
Y。 - 補空白列:在既有附件之後自動補 50 列空白列,序號接續編號(
D3三位數),並把來源單據帶出的客戶/廠商/部門/使用者代號與自動串好的標籤預先填到每一列(透過SetAttachmentProperty)。
逐列按 新增(載入鈕)¶
當你在某列按 新增,系統會:
- 跳出標準檔案選取對話框(單選)。
- 把你選到的檔案完整路徑填進該列的 附件 欄。此時 載入 仍為空白,代表尚未上傳,要按
儲存才會真正複製到伺服器。
按 多選(左下角)¶
- 跳出檔案選取對話框並允許複選多個檔。
- 從目前既有附件後的第一個空白列起,把選到的每個檔依序填入 附件 欄;空白列不夠時自動再往清單尾端新增列。
按某列的 顯示(開啟鈕)¶
- 若該列 載入 =
Y(已上傳),系統先把伺服器上的檔複製回本機暫存目錄,再用 系統預設程式(依副檔名)開啟。 - 若 載入 為空白(尚未上傳的新檔),直接用本機原始路徑以系統預設程式開啟。
- 開啟後,若主螢幕解析度大於 1920×1080,系統會嘗試把開啟的程式視窗移到 1920 以右的區域擺放(純體驗優化,不影響檔案內容)。
按 儲存¶
按下 儲存 時,系統對清單裡每一列做下列處理:
- 判斷增刪:附件 欄空白的列(含你沒掛檔的那些空白列)標記為刪除(
D),不會寫進資料庫;附件 有值的列才保留。 - 複製檔案到數位圖書館:尚未上傳(載入 不是
Y)且 附件 有值的列,把實體檔複製到數位圖書館,路徑為「數位圖書館\年月\」,並產生不重名的新檔名;複製成功後把 附件 改為新檔名、路徑 記為伺服器完整路徑、載入 設為Y。任一檔複製失敗就整批中止並回報。 - 補稽核欄位:每列回填單據別、其他單據 id、單號、建檔日期(今日
YYYYMMDD)、建檔人員(目前登入者)。 - 寫回資料庫:原本就有附件時以「修改」上傳、原本沒有時以「新增」上傳。
- 成功後:跳出「儲存成功」訊息、釋放單據編輯鎖,並自動重新整理來源單據的資料,讓附件頁籤即時看到最新清單。
- 失敗時:跳出系統錯誤訊息,不寫入。
按 離開¶
- 釋放這次開窗占用的單據編輯鎖(放行碼),不寫入任何變更後關閉視窗。
附件存的是「複本」
按 儲存 是把你選的檔複製一份到伺服器,之後刪除或修改你電腦上的原始檔,都不影響已掛上的附件。反過來,掛附件前若原始檔還沒存好最終版本,請先把原始檔改好再掛。
常見問題¶
按了附件頁籤的新增鈕沒有任何反應?
多半是單據還沒存檔(主鍵 Pkid 仍為 0)。請先把單據存檔,有了主鍵才能掛附件。另一個可能是連不上檔案伺服器——那種情況會跳出「連不上附件伺服器」提示而非完全沒反應。
出現「連不上附件伺服器」怎麼辦?
附件實體檔存在公司的數位圖書館(檔案伺服器)。系統在開窗前會先 ping 該路徑(2 秒逾時),連不上就擋下。請檢查網路/VPN 連線,或洽系統管理員確認檔案伺服器是否正常。
想刪掉一個已經掛上的附件,找不到刪除鈕?
這個「新增附件視窗」只負責新增:沒有刪除鈕,而且 附件 欄唯讀、無法清空,所以已掛上的附件無法在這個視窗裡移除。若確實需要拿掉某個附件,請洽系統管理員或循其他維護管道處理。
按 顯示 開不了檔,或開出來是亂的?
顯示 是交給 Windows 用副檔名對應的預設程式開檔。請確認本機有安裝能開該類型檔案的程式(例如 PDF 閱讀器、Office)。若是已上傳的附件,系統會先把檔從伺服器抓回本機暫存再開,伺服器連線異常時也會開檔失敗。
儲存後序號跳號、或新掛的檔名跟我選的不一樣?
序號是接在既有附件之後自動編的三位數流水號,屬正常。檔名變動是因為複製到伺服器時為了避免重名,系統會自動產生不重複的新檔名並寫回資料庫,原始檔不受影響。
相關功能¶
需補截圖清單
以下截圖待 runtime 驗收後補拍(放 docs/Other/images/):
attachment-step1.png— 從單據附件頁籤按下新增、開啟「新增附件視窗」的全貌attachment-step2.png— 附件清單列(含「新增/標籤/附件/載入/顯示」欄與序號)attachment-step3.png— 按多選後一次掛入多個檔的結果