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,具体细节还得慢慢探索才行。