函数用得好,轻松下班早

简介: 介绍宜搭表单函数的使用

背景

  • 在宜搭表单设计过程中,会有一些表单规则需求,比如获取当前登录人的信息自动填充,校验提交字段值在数据库中唯一不重复,表单提交后自动更新相关表单的值...。为了满足开发表单丰富又灵活的规则,宜搭提供了种类繁多且功能强大的表单函数来帮助用户快速实现需求。

函数的分类

  • 数学函数。处理数字值组件之间的一些计算,求最大最小值,四舍五入等等。
  • 文本函数。处理文本值组件的值的截取,替换,格式化等等。
  • 日期函数。处理时间戳值组件的日期增减,日期指定,天数计算等等。
  • 逻辑函数。根据条件判断返回true和false。
  • 业务函数。给表单自动填默认值。
  • 关联函数。增删改其他单据页面的数据。

函数的使用

函数的使用有三个入口:

1.表单组件默认值。

image.png

2.表单提交校验。

validate.gif

3.表单业务关联规则。

business.gif

函数的列表

基础函数

  • 包括文本函数,数学函数,日期函数,逻辑函数。
组件 函数分类 函数 函数名 基本用法
单行输入框 文本 UUID 唯一字符串 UUID()
RMBFORMAT 转人民币格式 RMBFORMAT(数字输入框)
CONCATENATE 字符串合并 CONCATENATE(单行输入框,单行输入框)
LEFT 字符串向右截取 LEFT(单行输入框,end_index)
RIGHT 字符串向左截取 RIGHT(单行输入框,end_index)
MID 字符串截取定长 MID(单行输入框,start_index,end_index)
LEN 字符串长度 LEN(单行输入框)
LOWER 字符串大写转小写 LOWER(单行输入框)
UPPER 字符串小写转大写 UPPER(单行输入框)
REPLACE 字符串替换 REPLACE(单行输入框,start_index,end_index,"new_text")
REPT 字符串复显 REPT(单行输入框,repeat_time)
SEARCH 字符串查找 SEARCH("find_text",单行输入框,n)
ARRAYGET 字符串数组取值 ARRAYGET(明细.单行输入框,n)
SPLIT 字符串分割 SPLIT(单行输入框,"separator")
TRIM 字符串去首尾空格 TRIM(单行输入框)
TEXT 数字转字符串 TEXT(数字输入框)
VALUE 字符串转数字 VALUE(单行输入框)
PINYINHEADCHAR 取汉字首字母 PINYINHEADCHAR(单行输入框)
逻辑 IF 条件判断 IF()
AND AND(EQ(数字输入框),EQ(数字输入框))
OR OR(EQ(数字输入框),EQ(数字输入框))
FALSE 返回false FALSE()
TRUE 返回true TRUE()
NOT 取反 NOT()
XOR 异或 XOR()
TIMECOMPARE 时间比较 TIMECOMPARE(日期选择框,日期选择框)
NUMBERCOMPARE 数字比较 NUMBERCOMPARE(数字输入框,数字输入框)
ISEMPTY 字符串或数组判空 ISEMPTY(单行输入框)
EQ 相等 EQ(数字输入框,数字输入框)
NE 不等 NE(数字输入框,数字输入框)
LT 小于 LT(数字输入框,数字输入框)
GT 大于 GT(数字输入框,数字输入框)
LE 小于等于 LE(数字输入框,数字输入框)
GE 大于等于 GE(数字输入框,数字输入框)
EXACT 字符串是否相等 EXACT(单行输入框,单行输入框)
EXIST 查重 EXIST(单行输入框),EXIST(单行输入框,单行输入框)
VALIDATEALIMAIL 邮箱格式校验 NOT(VALIDATEALIMAIL( 单行输入框 ,"WORK"))
ISNULL 数组判空 ISNULL(明细.单行输入框)
HASEMPTYTEXT 数组有无空字符串 HASEMPTYTEXT(明细.单行输入框)
日期选择框 时间 DATE 日期构造 DATE(year,month,day,hour,minute,second)
单独使用返回:Wed Dec 31 00:00:00 CST 2
TIMESTAMP 转时间戳 TIMESTAMP(TODAY())
TIME 时间占天比 TIME(hour,minute,seconds)
TODAY 当前时间 TIMESTAMP(TODAY())
NOW 当前时间 NOW()
返回:Fri Aug 02 09:40:08 CST 2019
SYSTIME 服务器时间 SYSTIME()
返回:Fri Aug 02 09:40:08 CST 2019
DAY 日期日 DAY(DATE(日期选择框))
MONTH 日期月份 MONTH(DATE(日期选择框))
YEAR 日期年份 YEAR(DATE(日期选择框))
HOUR 日期小时 HOUR(DATE(日期选择框))
MINUTE 日期分钟 MINUTE(DATE(日期选择框))
SECOND 日期秒数 SECOND(DATE(日期选择框))
DAYS 日期之间的天数 DAYS(日期选择框,日期选择框)
DAYS360 日期之间的天数 DAYS360(日期选择框,日期选择框)
DATEDELTA 日期加减 DATEDELTA(DATE(日期选择框),1)
直接赋值给其他日期选择框生效
DATEDELTA(TODAY(),3)
日期选择框默认今天往后推
WEEKNUM 日期周数 WEEKNUM(日期选择框)
ISOWEEKNUM 日期ISO周数 ISOWEEKNUM(日期选择框)
DAYBEGIN 日期时分秒置零 TEXT(DATE(DAYBEGIN(日期选择框)),"yyyy-MM-dd HH:mm:ss")
DAYEND 日期时分秒最大 TEXT(DATE(DAYEND(日期选择框)),"yyyy-MM-dd HH:mm:ss")
CASCADEDATEINTERVAL 日期区间组件计算相隔天数 CASCADEDATEINTERVAL(日期区间选择框)
YEAREND 日期年终日 TEXT(DATE(YEAREND(日期选择框)),"yyyy-MM-dd HH:mm:ss")
数字输入框 数学 AVERAGE 算术平均值 AVERAGE(数字输入框,数字输入框)
COUNT 表单提交数 COUNT("FORM-XXXXXXX")
LARGE 取数组中某个最大值 LARGE(明细.数字输入框)
SMALL 取数组中某个最小值 SMALL(明细.数字输入框)
ARRAYGET 数组取值 ARRAYGET()
MAX 取最大值 MAX(数字输入框,数字输入框)
MIN 取最小值 MIN(数字输入框,数字输入框)
ABS 取绝对值 ABS(数字输入框)
ROUND 四舍五入指定位数 ROUND(数字输入框,digit)
CEILING 向上舍入 CEILING(数字输入框,digit)
FLOOR 向下舍入 FLOOR(数字输入框,digit)
INT 向下舍入最近整数 INT(数字输入框)
LOG 对数 LOG()
MOD 相除取余 MOD(数字输入框,数字输入框)
POWER 乘幂 POWER(数字输入框,power)
PRODUCT 乘积 PRODUCT(数字输入框,数字输入框)
SQRT 取正平方根 SQRT(数字输入框)
SUM 取和 SUM(明细.数字输入框)
SUMPRODUCT 数组乘积 SUMPRODUCT(明细.数字输入框,明细.数字输入框)
FIXED 舍入指定小数 FIXED(数字输入框,digit)
ADD 字段相加 ADD(数字输入框,单行输入框)

业务函数

组件 分类 函数 函数名 基本用法
单行输入框 基本信息 LOGINUSER 登录人姓名 LOGINUSER()
LOGINUSERWORKNO 登录人工号 LOGINUSERWORKNO()
DIRECTOR 登录人主管姓名 DIRECTOR(1)
USERFIELD 登录人相关信息 USERFIELD( 人员搜索框 ,"userId")
DEPTNAME 登录人部门 DEPTNAME(LOGINUSERWORKNO())
人员搜索框 人员获取 USER 登录人 USER()
EMPLOYEE 工号数组取人 EMPLOYEE(多项选择框)

高级函数

函数 函数名 基本用法
UPDATE 更新 UPDATE(目标表单,EQ(目标表单.单行输入框,单行输入框),"",目标表单.单行输入框,单行输入框)
UPSERT 更新或插入 UPSERT(目标表单,EQ(目标表单.单行输入框,单行输入框),"",目标表单.单行输入框,单行输入框)
INSERT 插入 INSERT(目标表单,目标表单.单行输入框,单行输入框)
DELETE 删除 DELETE(目标表单,EQ(目标表单.单行输入框,单行输入框),"")

函数的组合

  • 每一个函数都代表一个小小的功能,当用户的业务场景非常复杂的时候,我们就需要把场景逻辑拆解成很多的小功能来变通组合实现,以下举一些通过函数组合来实现的复杂的功能。
--根据下拉单选框的值对日期选择框赋值
IF(
    EQ(TRIM(下拉单选框),"早餐"),

  TIMESTAMP(DATE(YEAR(TODAY()),MONTH(TODAY()),DAY(TODAY()),16,50,0)),

  IF(
      EQ(TRIM(下拉单选框),"午餐"),
                                  TIMESTAMP(DATE(YEAR(DATE(DATEDELTA(TODAY(),1))),MONTH(DATE(DATEDELTA(TODAY(),1))),DAY(DATE(DATEDELTA(TODAY(),1))),9,50,0)),

    IF(EQ(TRIM(下拉单选框),"晚餐"),

TIMESTAMP(DATE(YEAR(DATE(DATEDELTA(TODAY(),1))),MONTH(DATE(DATEDELTA(TODAY(),1))),DAY(DATE(DATEDELTA(TODAY(),1))),14,50,0)),

    TIMESTAMP(DATE(DATEDELTA(TODAY(),1)))
    )
  )
)
--校验页面某字段为SUBMIT时,且当前时间段在8:00-17:00之中才能提交
IF(
    EQ(单行输入框,"SUBMIT"),
  
        OR(   TIMECOMPARE(DATE(YEAR(TODAY()),MONTH(TODAY()),DAY(TODAY()),8,0,0),TODAY()),TIMECOMPARE(TODAY(),DATE(YEAR(TODAY()),MONTH(TODAY()),DAY(TODAY()),17,0,0))
      ),
  
      FALSE()
)

总结

  • 宜搭的函数设计的非常简明清晰,功能小而搭建潜能巨大。
  • 复杂的业务场景对函数的熟悉度要求比较高,必要时还是得翻翻文档,看看函数列表。
目录
相关文章
|
7月前
|
敏捷开发 canal otter
【周末瞎想】这个需求能不能不做?
【周末瞎想】这个需求能不能不做?
35 0
|
7月前
|
大数据 程序员 开发者
程序员有周末吗?
程序员有周末吗?
|
10月前
|
Web App开发 数据采集 存储
我给项目加了性能守卫插件,同事叫我晚上别睡的太死-1
由于我组主要是负责的是H5移动端项目,老板比较关注性能方面的指标,比如首页打开速度,所以一般会关注FP,FCP等等指标,所以一般项目写完以后都会用lighthouse查看,或者接入性能监控系统采集指标.
95 0
|
开发者
用吃巧克力来理解 防抖和节流!再也不忘了!
用吃巧克力来理解 防抖和节流!再也不忘了!
89 0
|
机器学习/深度学习 人工智能 程序员
上班要怎么摸鱼才不会被老板发现?
上班要怎么摸鱼才不会被老板发现?
331 0
上班要怎么摸鱼才不会被老板发现?
|
Web App开发 程序员
亲爱的老板:程序员的10分钟就是3个小时
导读:国外程序员艾德·韦斯曼(Ed Weissman )从业32年。某天老板告诉他产品有个问题,10分钟可以修复问题,谁知结果一干就是3个小时。本文就是艾德记录下的过程。 10:48 老板:嗨,艾德,苏在底特律说,“产品历史屏幕”上经常出现错误的发票号码(Invoice Part Number)。
894 0