目录
1. 需求
因为用户的不同的需求,所以单据模板提供了许多的模板公式,这样能够让实施人员在不需要修改代码的前提下,只用通过修改单据模板来满足用户的需求。
模板公式的归纳总结
NC单据公式现在主要分为日期,数学,字符串,数据库,财务,常用这6个大分类.
2. 日期
2.1. compareDate(date1, date2, field)
用于日期比较,返回两个日期指定时间域的差值,可比较的时间域包括"Y"-比较年;"M"-比较月;"D"-比较日;"H"-比较小时;"m"-比较分钟;"S"-比较秒.比如:compareDate("2005-12-27 23:12:10", toDateTime("2005-12-27 23:12:08"), "S")将返回两个日期相差的秒数.
2.2. date()
返回当前系统日期
2.3. dateAdd(date1, num, fieldchar)
返回在指定日期的年、月或者日上增加某个值num,可增加的时间域fieldchar包括"Y"-增加年;"M"-增加月;"D"-增加日;"H"-增加小时;"m"-增加分钟;"S"-增加秒.比如dateAdd("23:13:23", 1, "H")表示对前面的时间增加一小时.
2.4. dateFormat(date, pattern)
用于将时间格式化为期望的字符串,其中date可以是时间字符串,也可以是Date对象,pattern为格式化参数,yyyy表示年,MM表示月,dd表示天数,HH表示小时,mm表示分钟,ss表示秒.比如dateFormat("2006-07-04 12:12:12", "日期:yyyy-MM-dd HH:mm:ss") 将返回"日期:2006-07-04 12:12:12".
2.5. datetime()
返回当前日期和时间
2.6. dayOf(date)
返回日期date的天. 比如dayOf ("2006-07-04 12:12:12") 将返回"04 ".
2.7. formataddress(key)
格式化地址,key:地址簿id,将地址格式化成语言格式中设置的样式.
2.8. loginbusidate()
得到当前登录业务时间.
2.9. month()
返回当前月
2.10. monthOf(date)
得到指定日期内的月份,比如monthOf ("2006-07-04 12:12:12") 将返回"07 ".
2.11. time()
取得当前时间,格式是HH:mm:SS
2.12. toDate(str)
将字符串格式的时间str转换成UFDate对象
2.13. toDateTime(str)
将字符串格式的时间str转换成UFDateTime对象,比如toDateTime("2006-10-15 21:01:01").
2.14. toTime(str)
将字符串格式的时间str转换成UFTime对象
2.15. year()
返回当前年
2.16. yearof(date)
求日期date的年,比如yearOf ("2006-07-04 12:12:12") 将返回"2006 ".
3. 数学
3.1. abs(num)
返回数num的绝对值
3.2. add(num1,num2)
用于高精度加法运算
3.3. div(num1,num2)
用于高精度除法运算
3.4. mul(num1,num2)
用于高精度乘法运算
3.5. rand()
生成随机数
3.6. round(double num, int index)
对num保留index位小数(四舍五入)
3.7. sgn(num)
当数num大于0时,返回1,等于0时,返回0,小于0时返回-1
3.8. sub(num1,num2)
用于高精度减法运算
3.9. zeroifnull(var)
表示如果var为空将返回0
4. 字符串
4.1. charat(st,index)
得到字符串st中第index个字符
4.2. endswith(st, end)
判断字符串st是否以字符串end结尾
4.3. equalsIgnoreCase(st1, st2)
判断忽略大小写字符串st1是否与字符串st2相等
4.4. indexOf(st1, st2)
判断字符串st1中第一个字符串st2所在的位置,比如IndexOf("HI,UAP2006,UAP","UAP")返回3.
4.5. isEmpty(id)
用于判断变量是否为空,包括空串("")及空值(null)
4.6. lastIndexOf(st1, st2)
判断字符串st1中最后一个字符串st2所在的位置,比如lastIndexOf("HI,UAP2006,UAP","UAP")返回11.
4.7. left(st, index)
返回字符串st左边前index个字符组成的字符串
4.8. leftStr(st,len,defaultStr)
求字符串st左边前len个字符组成的字符串,如果字符串长度小于len,则用defaultStr补齐,比如leftStr("abc",6,"@")将返回abc@@@.
4.9. length(st)
求字符串st的长度
4.10. mid(String st, int start, int end)
求字符串st左边前第start个字符至第end个字符之间的字符串
4.11. right(String st, int index)
求字符串st右边前index个字符组成的字符串
4.12. rightStr(st,len,defaultStr)
求字符串st右边后len个字符组成的字符串,如果字符串长度小于len,则用defaultStr补齐,比如rightStr("abc",6,"@")将返回abc@@@.
4.13. startsWith(String st, String start)
判断字符串st是否以字符串start开头
4.14. toLowerCase(String st)
求字符串st的小写形式,比如toLowerCase("Abc")返回"abc".
4.15. toString(obj)
将对象obj转换为本解析器可识别的字符串形式
4.16. toUpperCase(String st)
求字符串st的大写形式
4.17. trimzero()
剪除字符串或数字str的末尾0值
5. 数据库
5.1. ass(freevalueID,checktype)
是关于会计平台中辅助核算的函数,从gl_freevalue表中根据freevalueID及checktype返回checkvalue ,目前不可用,因为没有checktype这个字段了。
5.2. cvn(tablename,fieldname,pkfield,pkvalue)
根据主键(pkfield:主键字段名,pkvalue:主键值)从数据库查询特定字段(fieldname)的值,其返回的值将直接作为数字使用
5.3. cvs(tablename,fieldname,pkfield,pkvalue)
根据主键从数据库查询特定字段的值,其返回的值将直接作为字符串使用
5.4. getColNmv(tablename,fieldname,pkfield,pkvalue)
根据字段从数据库查询特定字段的值,其返回的值将直接作为数字使用,其功能类似SQL语句:select fieldname from tablename where pkfield = pkvalue 从这条SQL语句可以看出各个参数的含义.
5.5. getColNmv2(tablename,fieldname,pkfield1,pkvalue1,pkfield2,pkvalue2)
根据字段从数据库查询特定字段的值,其返回的值将直接作为数字使用,其功能类似SQL语句:select fieldname from tablename where pkfield1 = pkvalue1 and pkfield2 = pkvalue2. 从这条SQL语句可以看出各个参数的含义.
5.6. getColsValue("tablename","fieldname1","fieldname2","pkfield",pkvalue)
根据主键从数据库查询多个字段的值,左边待赋值的字段要用逗号分割,注意里面的字段,表名要用双引号扩起来。比如:fieldname1,fieldname2->getColsValue("tablename","fieldname1","fieldname2","pkfield",pkvalue)
5.7. getColValue(tablename,fieldname,pkfield,pkvalue)
根据主键从数据库查询特定字段的值,其功能类似SQL语句:select fieldname from tablename where pkfield = pkvalue 从这条SQL语句可以看出各个参数的含义.
5.8. getColValue2(tablename,fieldname,pkfield1,pkvalue1,pkfield2,pkvalue2)
根据主键从数据库查询特定字段的值,其功能类似SQL语句:select fieldname from tablename where pkfield1 = pkvalue1 and pkfield2 = pkvalue2. 从这条SQL语句可以看出各个参数的含义.
5.9. getMLCValue("tablename","fieldname","pkfield",pkvalue)
根据主键从数据库查询特定当前登录语种对应名称字段的值
6. 财务
6.1. getChineseCurrency(Object)
将传入的字符串或数字转换为大写金额
6.2. getEnglishCurrency(mark,number)
将数字金额转为英文文本描述
6.3. setThMark(String)
将传入的字符串或数字转为金额后加入千分位标志,如果希望保留数字后面的0,则需要先将数字转为字符串,然后再用setThMark()函数,比如setThMark(toString(56510.000)).
6.4. toChinese(Object number,int flag1,int flag2)
将传入的字符串或数字转换为中文
7. 常用
7.1. iif(condition, result1, result2)
根据condition是否成立,返回值不同。当condition=true,返回result1,否则返回result2。