1.結論
對於輸入過濾條件后BOS報“列名不正確”的過濾條件,要在列名前增加x2標識
無效的過濾
FNumber in (002,003,004,005,011,020)
正確的過濾
x2.FNumber in (002,003,004,005,011,020)
2.完全可以不看的探索過程
有客戶需要我們在WISE中增加新單據,其中有個基礎資料字段需要根據客戶的的需求進行過濾。
我想這不是很簡單的嘛,甚至WISE BOS的文檔中直接都有操作方式。
4.3.2 字段屬性
每種字段類型都有一些屬性需要設置,通過設置屬性滿足來滿足實際的業務需要。
屬性
說明
適用范圍
過濾
設置基礎資料類型的過濾條件,用途是在F7或者F8的時候通過您所設置的條件去過濾掉一些不符合條件的數據,而這個屬性框里面需要維護的是用代碼寫的條件,以基礎資料是部門代碼為例,如果我需要過濾出部門代碼屬於某一類型部門的數據,那么我可以在過濾屬性欄寫下:FDProperty = 1070,那么在錄入單據時,該字段F7出來的數據一定都是屬於1070類型的部門代碼。您也可以在后台數據庫中執行以下SQL將屬性模板表中記錄的過濾字段FFilter的數據調出來參考着看看:SELECT FFilter,* from ICClassTableInfo
[基礎資料]
以上引用內容來自K3V14.0BOS用戶手冊
用戶需要的是對一個類型為部門的基礎資料字段過濾,讓用戶只能選擇總部的部門。部門本身並沒有標識表明是否為單據體,和客戶討論之后得出了總部部門的列表。
實際在數據庫里部門的結構如下
看上去,只要在對應字段的過濾屬性填下
FNumber in (002,003,004,005,011,020)
就行。然而,報錯了!
既然列名不明確,那我就明確一下列名試試,部門對應的表為t_Department,那我就改成
t_Department.FNumber in (002,003,004,005,011,020)
依然報錯,這次提示信息為“無法綁定由多個部分組成的標識符”,我將t_Department改為a/b/x均無法通過
好吧,看下文檔上的蛛絲馬跡。根據上面引用的文檔,我去ICClassTableInfo表查了過濾屬性FFilter,發現其中有一條Filter為
x2.FItemID<>GetFldValue(FDepartmentID,0)
懷着嘗試一下的心態,我將原來的過濾條件改為
x2.FNumber in (002,003,004,005,011,020)
BOS沒有報錯,保存,運行,OK!
個人認為是由於wise的數據結構是吧所有字段的過濾條件都至於同一張表單數據表中,導致過濾時選擇列明不明確,所以需要在之前增加標識,但是嘗試了一下x1,x3,都報“無法綁定由多個部分組成的標識符”,個人猜測是金蝶本身把當前基礎資料的標識符設置為了x2,具體細節還得慢慢探索才行。