一般的情況下資料整筆填寫完,發送簽核時不會再進行任何變更,但如果希望簽核到某一階層時,才需填寫某個欄位值,且尚未簽到該階層時不能填寫、編輯此欄位的話,可以依照以下的步驟來操作:
在一般的簽核流程中,送簽後資料不會再進行任何變更操作,所以系統預設會勾選「開始簽核後自動上鎖資料」的功能設定。因此如果要能夠編輯特定欄位,就要先將該欄位設定為「忽略資料上鎖」,並在後續步驟中搭配條件式格式的唯讀套用。
不管簽核流程總共是幾階,我們都會需要新增兩個欄位來顯示不同階的簽核狀態,來進行後續比對並對欄位採取唯讀或解除唯讀的動作。而這兩個欄位的簽核階層需要設定為「不能修改欄位的最高階」和「可以修改欄位的最高階」。
舉例來說,若您的簽核流程為兩階,想要設定為第二階的主管可以修改先前唯讀的欄位,則您需要在表單中新增兩個欄位(假設為 I2、I3),用來顯示第一階和第二階的簽核狀態。I2 中需要寫入簽核公式 APPROVAL.STEP(1).STATUS() 顯示第一階的簽核狀態,而 I3 寫入公式 APPROVAL.STEP(2).STATUS() 顯示第二階的簽核狀態。簽核狀態欄位在簽核未完成時會顯示為 N,完成後是 F 。
設定好欄位顯示兩階的簽核狀態後,您需要再新增一個欄位用來判斷第一階和第二階的狀態是否是相同的:一樣都是未簽核或是已簽核的時候唯讀,不一樣(一個是已簽核、一個是未簽核)時則解開唯讀狀態,讓第二階簽核者能夠修改。
假設新增的欄位為 I4,我們要在 I4 寫入 IF 條件式公式 IF(I2.RAW=I3.RAW, 'Y','N') ,設定完成後,如果前兩個欄位回傳的狀態都是 N 或者都是 F 時,也就是兩階都未簽核,或者兩階均已簽核的狀況,此欄位會回傳 Y。若一個欄位是 N,一個欄位是 F,也就是第一階簽完,第二階還沒簽時,此欄位則會回傳 N。
選擇條件式格式,設定為「兩階狀態是否相同」(以上述例子為 I4 欄位)不是 N 時,將指定欄位「唯讀」,意思也就是只有是 N (第一階簽核完成,第二階未簽核)時,才會解除該欄位的唯讀狀態。設定好並存檔後,就能夠實現在第二階簽核時才能修改欄位的目標了。
以下我們來看看設定完成後的效果。若資料尚未開始簽核,覆核數量欄位會呈現唯讀狀態:
若是已經簽完第一階層,則簽核數量欄位會解除唯讀狀態,可以編輯:
照上述方式設定完簽核到特定階層才可以編輯某個欄位後,如果你希望只有該階層的簽核人才可以編輯該欄位的話,請照以下步驟設定:
新增一個選擇使用者欄位,套用簽核公式 APPROVAL.STEP([stepIndex]).USERS() ,不填入 [stepindex] 參數來回傳目前這一階層的簽核人。
注意:如果同階層可能有多個簽核人,設定完成簽核公式後,記得勾選選擇使用者欄位的多選選項。
到條件式格式,在所設定的簽核條件式格式新增條件,例如:
原本設定的條件:「兩階狀態是否相同」不是 N 時,將指定欄位「唯讀」。
新增一個條件:選擇「或」,並設定條件為「目前階層簽核人」不包括「登入使用者」。
設定完成後,代表必須同時符合以上兩個條件的反面,該欄位才會解開唯讀。
實際效果:
非該階層簽核人無法編輯「覆核數量」欄位,而該階層的簽核人則可以編輯。