系统及业务函数使用(三)
一、系统函数
公式 | 描述 |
---|---|
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