Views: 6
偶而會遇到表單設定錯誤,但已經發佈出去的窘境。
情況分類
- 單據還沒開始跑,停用 → 發佈新版本 → 重新啟用
- 單據已經開始跑了,如果問顧問會遇到同上的答案。
發佈後有哪些東西是可以改的?
- 流程 (這個有介面)
- 標題、註解、翻譯 (這個有介面)
- 欄位的一些小設定(透過資料庫,要很小心),本次的主題是這項
- 欄位設定(透過資料庫,但不建議,容易造成系統大亂)
如何透過資料庫修改欄位設定
首先我先做一張有問題的測試表單來模擬,然後把表單給發行了,有問題的欄位是日期欄位,必填+無法修改預設值,等於說這張單會無法送出。之前我弄出無法送出的單都是勾到無法修改預設值,這個在系統中有最高的權限,後續在流程中的欄位填寫無論怎麼改都會導致無法更改,表單直接卡住。我覺得UOF應該做個防呆檢查…。
[SQL]找出表單在UOF系統當中的編號 VersionID
這邊要靠資料庫指令找出來,我發行的版本是2,表單名稱是「測試表單」
SELECT TOP (100) a.[FORM_ID] --表單ID
,a.[FORM_NAME] --表單名稱
,b.FORM_VERSION_ID --表單版本ID
,b.VERSION --版本
FROM [dbo].[TB_WKF_FORM] AS a
LEFT JOIN [TB_WKF_FORM_VERSION] AS b
ON a.FORM_ID = b.FORM_ID
WHERE FORM_NAME = '測試表單';
表單ID
找到對應的VERSION ID後就可以從資料表[TB_WKF_FORM_VERSION]
撈出對應的表單,然後表單內容的位置會在VERSION_FIELD
中。
點開來後會是一個XML(看XML功能要比較新的SSMS版本才有)
取消必填
這塊沒什麼技巧,就是從XML中找到對應的設定屬性,改掉預設值再UPDATE
<FieldItem fieldId="B06004" fieldName="日期" fieldSeq="3" fieldType="dateSelect" fieldRemark="" fieldTag="" DisplayLength="0" DecimalPoint="0" displayFieldName="True" externalData="False" wsUrl="" wsMethod="" wsAuth="False" wsAccount="" wsPassword="" wsSystemValueSend="" wsFormValueSend="" wsGetBeforeTime="False" wsVariation="False" delFlag="True" fieldDefault="2024/05/23" fieldModify="no">
<extensionSetting />
<fieldRestrict restrictChooseDateType="NotRestrict" restrictDaysBefore="" restrictDaysAfter="" />
<fieldControlData fieldControlFlag="no" />
<fieldModifyData Flag="accede" />
<allowApplicentUser Flag="False" />
<allowOtherUser Flag="False" />
<visibleControl Flag="NoLimit" />
<visibleUser Flag="<UserSet></UserSet>
" Filler="False" />
</FieldItem>
- 欄位ID
fieldId
- 欄位名稱
fieldName
- 欄位順序
fieldSeq
- 欄位類型
fieldType
- 外部資料
externalData
- 允許修改預設值
fieldModify = "yes"
- 不允許修改預設值
fieldModify = "no"
- 預設值
fieldDefault
- 顯示欄位標題
displayFieldName
- 欄位備註
fieldRemark
⚠️⚠️⚠️修改前務必備份
VERSION_FIELD
的內容⚠️⚠️⚠️
[SQL]更新的修改後的表單內容
UPDATE
[TB_WKF_FORM_VERSION]
SET
VERSION_FIELD = '新的表單內容'
WHERE
FORM_VERSION_ID = '表單ID'
0 Comments