电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

金蝶云星空 金蝶EAS_V8.5_套打脚本指南及案例集.docx

金蝶云星空 金蝶EAS_V8.5_套打脚本指南及案例集.docx_第1页
1/11
金蝶云星空 金蝶EAS_V8.5_套打脚本指南及案例集.docx_第2页
2/11
金蝶云星空 金蝶EAS_V8.5_套打脚本指南及案例集.docx_第3页
3/11
金蝶EAS_套打脚本指南及案例集金蝶EAS_套打脚本指南及案例集金蝶软件(中国)有限公司发布日期:2015年9月版权所有©金蝶软件(中国)有限公司i金蝶EAS_套打脚本指南及案例集前言概述本手册主要介绍金蝶BOS套打脚本的语法规则和典型应用案例等内容。本手册的内容主要是对套打功能有扩展需求的使用用户,初学者可以通过套打用户手册和套打模板制作指南掌握套打模板的基本操作过程。读者对象本手册适用于金蝶BOS套打模板的编制用户。适用说明该文档适用于EAS6.0及以上版本的R1套打模板。详细的脚本方法说明请参考套打用户手册版权所有©金蝶软件(中国)有限公司ii金蝶EAS_套打脚本指南及案例集目录1套打脚本语法及规则........................................................................................................51.1简要说明...........................................................................................................................................................51.2脚本编辑域.......................................................................................................................................................51.3变量定义及赋值...............................................................................................................................................51.4控制语句...........................................................................................................................................................52案例..............................................................................................................................62.1盖章(电子签名)...........................................................................................................................................62.2“是”/“否”(枚举值显示为汉字)...............................................................................................................62.3字符串匹配替换...............................................................................................................................................72.4关于期间2011-01-01~2011-01-31现场则想得到格式201101.....................................................................72.5年龄计算...........................................................................................................................................................72.6时间差计算.......................................................................................................................................................82.6.1计算两个日期之间的间隔天数..............................................................................................................82.6.2推算某日期的前\后几天的日期.............................................................................................................82.7数值向上取整脚本示例...................................................................................................................................92.8某分录块没有数据,套打时整块分录不显示(包括表头行和数据行)...................................................92.9多级审批时,将对应环节的审批人取出,放置在指定单元格.................................................................102.10当审批中存在加签时,加签节点的任务名称和原审批节点的任务名称一致,如何分别取出多个审批人............................................................................................................................................................................112.11套打日期加一天后置脚本122.12总页码只有一页时候,隐藏总页码(利用回填值和字符串处理)12版权所有©金蝶软件(中国)有限公司iii金蝶EAS_套打脚本指南及案例集1套打脚本语法及规则1.1简要说明1、该脚本系统采用类Java/JavaScript的语法。2、面向对象的设计:调用一个对象(假设其名称为text1)的某个方法(假设为getValue),书写为:text1.getValue();如果是当前对象,则text1可省略,直接写为:getValue()。3、大小写敏感。1.2脚本编辑域套打脚本可存在于模板设计期中的任意对象,如文字对象、图片对象、金额对象、网格(单元格、行、列及整个网格对象)、数据表(单元格、行、列及整个数据表对象)、动态列表等的前\后处理脚本编辑框中。前处理脚本—是一段小程序,执行引擎在解析模板时,处理该对象之前运行,可用于修改初始值。后处理脚本—是一段小程序,执行引擎在解析模板时,处理该对象之后运行,可用于修改对象的输出结果。具体语法及函数可参考设计器脚本向导中的说明。1.3变量定义及赋值示例:vara=b+1;注意:所定义变量的作用域只在当前脚本块,全局变量请使用set()、get()函数。1.4控制语句if...else...forwhile/dowhileswitchcase版权所有©金蝶软件(中国)有限公司5金蝶EAS_套打脚本指南及案例集break/continue2案例2.1盖章(电子签名)需求一:对于动态的内容,由数据源提供数据,用图片对象直接绑定字段即可。需求二:对于固定的内容,只是有条件地控制是否显示。用图片对象,在其“后处理脚本”中写脚本进行控制。假设存在一个叫“是否完成”的字段isFinished,布尔值,单据状态为“完成”则加盖图章。图章的图片对象的脚本为:if(getFieldValue(“数据源名称”,“isFinished”)){setHide(false);}else{setHide(true);}脚本不是唯一的,只要符合语法,可以举一反三。上例也可写成:setHide(!getFieldValue(“数据源名称”,“isFinished”));2.2“是”/“否”(枚举值显示为汉字)数据表单元格或单元对象绑定目标字段。后处理脚本为:setValue(getValue()?“是”:“否”);或:setValue(toStr(getValue())==“true”?“是”:“否”);2.3字符串匹配替换需求:版权所有©金蝶软件(中国)有限公司6金蝶EAS_套打脚本指南及案例集明细分类账套打,凭证类型字段取值(凭证类型+编码)过长,如“银行付款–001”、“银行收款–002”,现希望在不改变元凭证类型基础资料前提下,实现打印效果只显示“银付–001”、“银收–001”。示例:vart=getValue();if(t.contains("银行付款")){setValue(replaceString(t,"银行付款","银付"));}if(t.contains("银行收款")){setValue(replaceString(t,"银行收款","银收"));}2.4关于期间2011-01-01~2011-01-31现场则想得到格式201101操作步骤:客户端登陆【系统平台->套打->套打管理】,编辑对应的ReportOne模板,找到薪资期间对应的单元格,右键->属性->切换到"通用"页签->后处理脚本。在后处理脚本框中添加脚本:stringstr=getValue();Listdate=Arrays.asList(str.split("~"));Listresult=Arrays.asList(date.get(0).split("-"));setValue(result.get(0)+result.get(1));2.5年龄计算vara=year(now());varb=year(getFieldValue("ds_baseInfo","birthday"));varc=month(now());vard=month(getFieldValue("ds_baseInfo","birthday"));vare=day(now());varf=day(getFieldValue("ds_baseInfo","birthday"));varage;if(c>d||(c==month(getFieldValue("ds_baseInfo","birthday"))&&e>=f)){age=a-b;}else{age=a-b-1;}setValue(age);版权所有©金蝶软件(中国)有限公司7金蝶EAS_套打脚本指南及案例集2.6时间差计算2.6.1计算两个日期之间的间隔天数解决方式:方法一、通过在SQL中加入天数的字段,将两个日期时间差计算好之后,在套打模板中引入天数字段取值;方法二、脚本处理:varv1=(getFieldValue("数据源","结束时间").getTime());varv2=(getFieldValue("数据源","开始日期").getTime());varquot=v1-v2;quot=toInt(quot/1000/60/60/24);setValue(quot);补充说明:推荐使用方式一,方法二调用了java取函数的方法,计算精确到毫秒,计算结果可能会带小数。2.6.2推算某日期的前\后几天的日期可以先通过js的getTime()转换成毫秒并参与运算,然后将毫秒转通过setTime()换成date型数据。例:varadd=1000*60*60*24;//增加一天vard1=now().getTime();vard2=newDate();d2.setTime(d1+add);setValue(d2);2.7数值向上取整脚本示例通过脚本Math.ceil()运算时,直接输入数值,如Math.ceil(1.23)可取整运算;但是在该方法中嵌套其他的方法时,无法计算出结果,如Math.ceil(getValue())或者Math.ceil(getFieldValue(ds,field))。版权所有©金蝶软件(中国)有限公司8金蝶EAS_套打脚本指南及案例集Math.ceil貌似和getValue这样的函数不在一个域内,试过好多情况都不能用。可以用一种变通的方法解决,参考以下脚本:varx=getValue();varn=toInt(x);varm=format(x,"0.0");m=rightString(toStr(m),1);if(toNumber(m)>0){setValue(n+1);}else{setValue(n);}2.8某分录块没有数据,套打时整块分录不显示(包括表头行和数据行)以员工简历为例,假如员工没有学历学位信息,则套打模板不显示学历学位整块内容。该类情况需要在主数据源中有一个标记字段,区分该员工是否有学历学位信息。此处假设以“曾用名”为标记字段,存在曾用名,则该有学历信息,否则表示该员工无学历信息。在学历数据表所在的网格行中使用后处理脚本setHide(getFieldValue("ds_baseInfo","oldName")==null)版权所有©金蝶软件(中国)有限公司9金蝶EAS_套打脚本指南及案例集2.9多级审批时,将对应环节的审批人取出,放置在指定单元格步骤1数据表(格式:普通行-数据行-普通行)绑定多级审批数据源。在第一个普通行中设置变量,用来存储审批人信息,如:Stringa="";Stringb="";建议使用更有意义的命名方式。步骤2数据行中获取审批人信息,如根据任务名称判断审批人,然后存储在已经设置的变量中。If(getFieldValue("审批数据源名","任务名称")=="某值"){a=getFieldValue("审批数据源名","审批人");}if(getFieldValue("审批数据源名","任务名称")=="某某值"){b=getFieldValue("审批数据源名","审批人");}…步骤3在最后一个普通行中,将获取到的变量值,设置在合适的单元格中。setValue(a);补充说明:1.前两行都要选中整行后,修改属性,最后一行显示值时,是选中单元格修改属性。2.定义变量请在前处理脚本中,数据处理及返回值在后置脚本中;前两行请在属性中设置“不打印”,只需显示最后一个普通行即可。具体实现,请自行调整。2.10当审批中存在加签时,加签节点的任务名称和原审批节点的任务名称一致,如何分别取出多个审批人步骤1普通行(或者数据行前的分组行)前处理脚本中,设置数组型变量。varresult=newArrayList();步骤2数据行后处理脚本中,将符合条件的数据插入到数组中。if(getFieldValue("R1Print_SystemDefine_Approve","AssignDetail.actdefName")=="XX审批"){result.add(getFieldValue("R1Print_SystemDefine_Approve","personId.name"));}步骤3将数组中存储的的各值取出。setValue(result.get(0));//取出数组中的第一个值版权所有©金蝶软件(中国)有限公司10金蝶EAS_套打脚本指南及案例集2.11使用数据表或者动态列表打印分录时,能显示每条分录的序号。步骤1在空白处拖入一个文字控件,前置脚本:Inta=0;后置脚本:setHide(true);步骤2在动态单元格中要显示序号的单元格或者写下后置脚本:if(getFieldValue("approveInfo","opinion")!=null){a+=1;}setValue(a);}2.12套打日期加一天后置脚本。后处理脚本:vara=getValue().toString();SimpleDateFormatsj=newjava.text.SimpleDateFormat("yyyy-MM-dd");//根据需要设置对应的日期格式Dated=sj.parse(a);Calendarcalendar=Calendar.getInstance();calendar.setTime(d);calendar.add(Calendar.DATE,1);setValue(sj.format(calendar.getTime()));2.13总页码只有一页时候,隐藏总页码(利用回填值和字符串处理)。后处理脚本://版权所有©金蝶软件(中国)有限公司11金蝶EAS_套打脚本指南及案例集if(getValue().substring(5,6)=="1"){setValue("");}版权所有©金蝶软件(中国)有限公司12

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

金蝶云星空 金蝶EAS_V8.5_套打脚本指南及案例集.docx

确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信