系统及业务函数使用(三)

一、系统函数

公式 描述
orgId() 获取所属组织ID
orgName() 获取所属组织名称
userId() 获取当前用户ID
userName() 获取当前用户名称
tenantId() 获取当前租户ID
tenantName() 获取当前租户名称

这些公式使用比较简单,直接点击插入即可,以下以用户举例

  • 实现效果

二、业务函数

2.1、条件判断函数

描述 详情
公式 iif(condition,thenvalue,elsevalue)
功能描述 根据不同的条件取不同的值,条件判断函数。 参数:condition--一个逻辑值或逻辑表达式 thenvalue--值对象,如果condition为true,返回此对象 elsevalue--值对象,如果condition为false,返回此对象 返回值:Object,取决于thenvalue 及elsevalue

此公式属于基础公式,很多时候和其他公式嵌套使用,请看后续示例

2.2、判断对象是否为null

描述 详情
公式 isNull()
功能描述 常用于判断数据值是否存在
使用示例-业务流防止重复下推 isNull(getValue("voucher.order.Order","id","srcBill",id))&&verifystate==2

该示例公式上游是通过应用构建自建的单据,下游是销售订单, 通过查询销售订单的来源单据id是否存在和 上游单据id一样的情况,isNull如果是空返回true(也就是不存在的情况)。 verifystate是单据状态,2是审核态

2.3、根据条件查询档案的值

描述 详情 描述
公式 getValue(fullName,selectFiled,conditionField,conditionValue)
功能描述 根据条件查询档案的值 参数: fullName--档案的uri selectFiled--要查询的字段 比如 code conditionField--条件字段 比如 id conditionValue -- 条件值
使用示例
getValue("bd.currencytenant.CurrencyTenantVO","id","code","CNY") 根据币种编码查询币种id
getValue("bd.exchangeRate.ExchangeRateTypeVO","id","code","01") 根据汇率类型编码查询汇率类型id
getValue("bd.taxrate.TaxRateVO","id","code","VAT0") 根据税目税率编码查询税目税率id

四、常见问题

4.1、getValue中的uri如何获取?

  • 1、进入UI模板节点,复制出一个副本,然后点击设计按钮进入单据设计器

  • 2、左上角点击层级,然后选择实体清单,根据需求选择自己需要的实体,右侧的数据源名称即为我们需要的URI

  • 3、页面设计器中显示的字段并不全,可以先看下是否可以找到自己需要的字段。

如我要根据员工编码获取员工的手机号,那么我们可以按照以下方式获取对应的字段

  • 4、那么根据员工编码获取员工手机号的公式即可写出

getValue("hred.staff.Staff","mobile","code",staffcode)

  • 5、实现效果

4.2、根据4.1章节3中没有找到字段怎么办?

  • 1、在UI模板节点点击配置进入配置页面

  • 2、在变量区域即可查找可使用字段,点击插入即可显示可使用的字段编码

  • 3、那么获取当前用户的员工信息编码的公式即可写出

getValue("hred.staff.Staff","code","userId",userId())

  • 4、实现效果

4.3、如何实现公式嵌套使用?

  • 1、需求:获取当前用户的主职位所在部门名称

分析:

  • 2、第一步要根据用户获取员工id;

getValue("hred.staff.Staff","id","userId",userId())

  • 3、第二步根据员工id查询和是否结束查询部门信息;

getValueMore("hred.staff.StaffJob","deptId","staffId",getValue("hred.staff.Staff","id","userId",userId()),"endFlag","0")

  • 4、第三步根据部门id获取部门名称

getValueMore("hred.staff.StaffJob","deptId.name","staffId",getValue("hred.staff.Staff","id","userId",userId()),"endFlag","0")

4.4、在4.3章4中我们直接通过deptId.name获取到了部门名称?

  • 1、这是一种简化穿透某个字段的写法,这种写法只能用于参照字段或者主子结构有关联关系的字段。 即通过参照类型的字段可以直接通过 . 的方式带出参照字段。 (这里可能不方便理解,下文会进行讲解使用)

  • 2、这里以员工的部门为例,进入员工的UI模板单据配置页面,部门在任职下,按照以下操作

  • 3、我们能够通过deptId.name的方式带出名称,那么可以带出别的部门字段吗?

答案是可以的,只要我们知道部门的字段编码,那么我们就可以带出,如code

getValueMore("hred.staff.StaffJob","deptId.code","staffId",getValue("hred.staff.Staff","id","userId",userId()),"endFlag","0")

4.5、如何更快捷的查找字段编码?

  • 1、 在UI模板选择需要的模板,点击配置按钮,增行后进行

  • 2、在公式的变量区域即可查找对应的字段

  • 3、如4.4我们已经的公式已经在任职下查询,那么对应的字段即为deptId.name
Copyright © 用友 -【生态技术部】 2022-2023 all right reserved,powered by Gitbook修订时间: 2023-04-04 16:46:22

results matching ""

    No results matching ""