二开案例.基础资料.过滤.利用CASE WHEN实现条件过滤

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:1

二开案例.基础资料.过滤.利用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实现条件过滤

【应用场景】基于单据上的其它字段的值对当前基础资料进行联动查询。【案例演示】采购订单,新增两个基础资料字段,岗位和员工,员工F8列表...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息