代码改变世界

如何在K3 WISE BOS集成开发工具中自定义字段过滤条件

2017-08-22 18:38  新田三十三  阅读(2176)  评论(0编辑  收藏  举报

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