如果你的表單有設定簽核流程,就可以套用以下公式來傳回簽核相關的資料。
目前與簽核有關的公式,主要有兩大類:
公式 | 敘述 |
---|---|
APPROVAL.COUNT() | 傳回簽核的總階層數 |
APPROVAL.STATUS() | 傳回簽核的狀態。
N: New,尚未開始簽核或取消簽核 P: Processing,開始簽核後等待簽核完成 REJ: Rejected,有任何一階拒絕簽核 F: Finish,全部簽核人都同意時,代表完成 |
APPROVAL.SUBMITDATE([true]) | 傳回開始簽核的日期和時間,可以套用在日期欄位上。True為選填代表用UTC+0,沒有則使用公司時區。(在前端重算會用瀏覽器時區,後端重算會用公司時區) |
APPROVAL.SUBMITTER() | 傳回開始簽核的使用者E-mail,可以套用在使用者欄位。 |
APPROVAL.SUBMITTERNAME() | 傳回開始簽核的使用者名稱。 |
APPROVAL.FINISHDATE([true]) | 傳回簽核結束的日期和時間。簽核「結束」指的是全部簽核人都同意或是有人拒絕簽核,可以套用在日期欄位上。True為選填代表用UTC+0,沒有則使用公司時區。(在前端重算會用瀏覽器時區,後端重算會用公司時區) |
公式 | 敘述 |
---|---|
APPROVAL.CURRENTSTEPINDEX | 下一階層的索引值。從 0 開始,0 代表尚未開始簽核,開始簽核後會變成 1,代表第 1 階。每次完成一階層的簽核時這個值都會加 1,直到總階層數為止。當結束簽核(全部階層都同意/或某一階拒絕/或取消簽核)時也傳回 0。 |
APPROVAL.STEP([stepIndex]) | 用索引值指定某一階層。以下的公式前面都要加上 APPROVAL.STEP([stepIndex]),stepIndex 為選擇性的參數,如果不帶,表示使用 APPROVAL.CURRENTSTEPINDEX 作為 stepIndex,代表下一階層。
APPROVAL.STEP(-1) : 上一階 APPROVAL.STEP() : 下一階 (等同於 APPROVAL.STEP(APPROVAL.CURRENTSTEPINDEX)) APPROVAL.STEP(0) : 錯誤,不能這樣用 APPROVAL.STEP(1) : 第一階 APPROVAL.STEP(2) : 第二階 |
APPROVAL.STEP([stepIndex]).NAME() | 傳回這一階層的名稱。 |
APPROVAL.STEP([stepIndex]).STATUS() | 傳回這一階層的狀態。
N: New,這階尚未同意或拒絕簽核,處於簽核中 F: Finish,如果這階是單人,代表該簽核人同意或拒絕簽核;如果這階是多人,代表已同意簽核人數大於等於擇辦人數,或是有人拒絕簽核。 |
APPROVAL.STEP([stepIndex]).RESP([email]) | 傳回這一階層的回應。email 為選擇性的參數,可以是信箱字串或是使用者欄位,用來在多人簽核時取得某個人的回應。
單人簽核: (不需要帶 email 參數) N: Not yet,這階尚未同意或拒絕簽核,處於簽核中。 A: Accepted,該簽核人同意簽核 A_D: Accept by deputy,該簽核人的代理人同意簽核 REJ: Rejected,該簽核人拒絕簽核 REJ_D: Reject by deputy,該簽核人的代理人拒絕簽核
多人簽核: 沒有帶 email 參數: N: Not yet,已同意簽核人數小於擇辦人數 A: Accepted,已同意簽核人數大於等於擇辦人數 REJ: Rejected,有人拒絕簽核 有帶 email 參數: unSigned: 該簽核人尚未同意或拒絕簽核 signed: 該簽核人同意簽核 signed_by_deputy: 經由該簽核人的代理人同意簽核 rejected: 該簽核人拒絕簽核 rejected_by_deputy: 經由該簽核人的代理人拒絕簽核 |
APPROVAL.STEP([stepIndex]).ISMULTI() | 傳回這一階是否為多人簽核的 boolean 值。 值為 true 或 false 兩種。 |
APPROVAL.STEP([stepIndex]).THRESHOLD() | 傳回這一階的擇辦人數。如果這階是單人簽核或是沒有設定擇辦人數,值為 -1。 |
APPROVAL.STEP([stepIndex]).USERS() | 傳回這一階所有的簽核人。範例值: 王小美|李曉明|彭大海。可以將此公式套用在使用者多選欄位(因為目前多選欄位不支援套用公式,所以要自己手動設定 f 屬性)。 |
APPROVAL.STEP([stepIndex]).ACTIONDATE([email],[true]) | 傳回這一階簽核人同意或拒絕的日期和時間,套用在日期欄位。True為選填代表用UTC+0,沒有則使用公司時區。 (跟 NOWTZ 與 TODAYTZ 相同特性,在前端重算會用瀏覽器時區,後端重算會用公司時區)
email 為選擇性的參數,可以是信箱字串或是使用者欄位,用來在多人簽核時取得某個人的同意或拒絕的日期和時間。 單人簽核: (不需要 email 參數) 傳回該簽核人的同意或拒絕的日期和時間。
多人簽核: 沒有帶 email 參數時,傳回有人拒絕或是有人同意簽核而且達標(已同意簽核人數大於擇辦人數)的日期和時間。 有帶 email 參數時,傳回該簽核人同意或拒絕的日期和時間。 (注意:公式內的[email]參數僅可套用於參照2021/07/13後所建立的簽核步驟) |
APPROVAL.STEP([stepIndex]).UNSIGNEDUSERS() | 傳回這一階未簽核的人。
範例值:王小美|李曉明|彭大海。可以將此公式套用在使用者多選欄位(因為目前多選欄位不支援套用公式,所以要自己手動設定 f 屬性)。 |
APPROVAL.STEP([stepIndex]).SIGNEDUSERS() | 傳回這一階已同意簽核的人。
範例值: 王小美|李曉明|彭大海。可以將此公式套用在使用者多選欄位(因為目前多選欄位不支援套用公式,所以要自己手動設定 f 屬性)。 |
APPROVAL.STEP([stepIndex]).SIGNEDCOUNT() | 傳回這一階已同意簽核的人數。 |
APPROVAL.STEP([stepIndex]).SIG([email]) | 傳回這一階的簽核人的數位簽名,值為 base64 圖片網址字串,如果沒有簽名傳回空值。可以將這公式套用在圖片欄位上。email 為選擇性的參數,可以是信箱字串或是使用者欄位,用來在多人簽核時取得某個人的數位簽名。
單人簽核: (不需要帶 email 參數) 傳回該簽核人的數位簽名
多人簽核: 一定要帶 email 參數,傳回該簽核人的數位簽名 |
APPROVAL.STEP([stepIndex]).SIGIMG([email], [width], [height]) | 傳回這一階的簽核人的數位簽名,類似APPROVAL.STEP([stepIndex]).SIG([email]),只是這公式的值為bbcode [image],width 與 height 為可選參數,設定圖片的寬與高,如果沒設定,預設寬為 300px 高為 150px。可以配合 bbcode 公式將結果呈現在文字敘述上。請注意此公式的[email]參數需加上" "引號。如果要呈現單人簽核而且長為 600px 寬為 300 px 的簽名圖,要寫成 APPROVAL.STEP([stepIndex])SIGIMG(null, 600, 300),此處的 null 不需加引號 |
APPROVAL.STEP([stepIndex]).COMMENT([email]) | 傳回這一階的簽核人在同意或拒絕簽核時留下的理由。如果還沒同意或拒絕簽核,或是做了這兩個動作但沒有留下理由,回傳空值。
單人簽核: (不需要帶 email 參數) 傳回該簽核人的理由 多人簽核: 一定要帶 email 參數,取得某人的理由 |
APPROVAL.STEP([stepIndex]).COMMENTDATE([email],[true]) | 傳回這一階的簽核人在同意或拒絕簽核時寫下理由的日期和時間。如果還沒同意或拒絕簽核,或是做了這兩個動作但沒有留下理由,回傳空值,可以將這公式套用在日期欄位上。True為選填代表用UTC+0,沒有則使用公司時區。
單人簽核: (不需要帶 email 參數) 傳回該簽核人寫下理由的日期和時間。 多人簽核: 一定要帶 email 參數,傳回某人寫下理由的日期和時間 |
當你在資料庫中輸入資料時,資料會依據你所寫的公式做計算,一旦你儲存了你的資料,此值就會被儲存並不會改變。
也就是說,即使你在設計模式下改變了你的公式,原本既已儲存的資料也不會依據新的公式重新被計算。
會這樣的原因是因為你先前根據舊公式所計算出來的資料還是有效的,不應該因為你更新了公式而自動更改已經儲存的資料。
舉個例子來說,如果你有一張計算稅收的表單,因為最近稅率漲了而你更改公式,但先前儲存的稅收資料還是應該要以舊的稅率來計算沒錯。
但某些情況,你有可能會需要用最新的公式將舊的資料都重新算一遍。你可以在表單設計模式下,到你想要重新計算公式的欄位公式中,下面有兩個選項讓你用新的公式將所有資料更新,或是讓所有新的公式更新所有資料(如果你更新了不只一個公式)。
如果你是在設計模式下修改、新增公式,記得要先儲存設計再按公式重算喔!
如果你常常更改一個公式或是公式中的變數,你也可以考慮利用寫程式來將你的公式每天重新計算。