二开案例.基础资料.过滤.利用CASE WHEN实现条件过滤
【应用场景】
基于单据上的其它字段的值对当前基础资料进行联动查询。
【案例演示】
采购订单,新增两个基础资料字段,岗位和员工,员工F8列表根据岗位的选择值进行过滤显示。
【实现步骤】
<1>BOSIDE打开员工,获取就任岗位字段的标识【FPost】和字段名【FPOSTID】,该字段将用于过滤条件中,对员工按岗位进行过滤。
<2>BOSIDE打开采购订单,新增两个基础资料字段,岗位和员工,员工字段设置过滤条件,保存元数据,开发完毕。
员工字段的过滤属性,设置表达式如下:
FPost=CASE WHEN GetValue(F_Jac_Base1) IS NULL OR GetValue(F_Jac_Base1)=0 THEN t1.FPOSTID ELSE GetValue(F_Jac_Base1) END
表达式各部分含义说明:
FPost:员工中的就任岗位字段的标识
FPOSTID:员工中的就任岗位字段的字段名
t1.FPOSTID:员工查询过程中,BOS平台生成的SQL脚本给就任岗位字段自动分配的真实字段全称(格式:表别名.数据库字段名)
F_Jac_Base1:采购订单中的岗位字段的标识
GetValue(F_Jac_Base1):获取采购订单中的岗位字段的值
【测试验证】
登录业务站点,打开采购订单,岗位字段不录数据时,员工F8列表显示全部,岗位字段录入数据时,员工F8列表仅显示当前岗位下的员工。
岗位有值时,后台SQL如下:
岗位无值时,后台SQL如下:
---------------------------------------------------------------------------------------------------------
【知识点】
<1>GetValue方法空值的取值逻辑:
基础资料字段未录数据时,GetValue返回0。
判断基础资料字段的值是否为空,可用表达式:GetValue(F_Jac_Base1) IS NULL OR GetValue(F_Jac_Base1)=0
文本字段未录数据时,GetValue返回""。
判断文本字段的值是否为空,可用表达式:'GetValue(F_Jac_Text)'='' OR 'GetValue(F_Jac_Text)'=' '
<2>CASE WHEN:
请参考:https://docs.microsoft.com/zh-cn/sql/t-sql/language-elements/case-transact-sql
-- Syntax for Parallel Data Warehouse
CASE
WHEN when_expression THEN result_expression [ ...n ]
[ ELSE else_result_expression ]
END
---------------------------------------------------------------------------------------------------------
【金蝶云星空BOS二次开发案例演示】https://vip.kingdee.com/article/94751030918525696
二开案例.基础资料.过滤.利用CASE WHEN实现条件过滤
本文2024-09-23 04:08:03发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-163352.html