EAS扩展脚本编写指南.

合集下载

Encase脚本库使用手册

Encase脚本库使用手册

Encase脚本库使用手册,1,广东省公安厅网监处二,XX年三月一、 IE本部分脚本用于对微软IE浏览器进行分析。

1、 IE History查找IE历史记录并进行解码~能解码HTTP头部信息。

公安部许剑卓编写。

2、 IE历史记录具备恢复残缺历史记录功能~能对IE历史记录文件或恢复的残缺历史记录进行解码~同时生成搜索文件,见搜索文件部分内容,~支持关键字。

3、根据搜索文件和关键字搜索IE历史记录根据搜索文件,见搜索文件部分内容,和输入的关键字搜索IE历史记录~并进行解码。

4、解码Cookie文件和残缺Cookie记录能对Cookie文件和恢复的残缺Cookie记录进行解码。

二、 QQ5、 QQ号码和好友(FAT32版)针对FAT文件系统搜索本机使用过的QQ号码、好友QQ号、QQ组信息。

公安部许剑卓编写6、残缺QQ号码目录(FAT)针对FAT文件系统搜索名称全部为数字的目录~很可能是本机使用过的QQ号码~要求QQ号码长度不超过10位。

可用于在安装还原软件的网吧计算机查找嫌疑人QQ号码。

7、残缺QQ号码目录,NTFS,针对NTFS文件系统搜索名称全部为数字的目录~很可能是本机使用过的QQ号码。

三、查找恢复8、 FileFinder(v4)查找恢复文件~包括AOL、BMP、EMF、GIF、JPG、Photoshop、PNG、TIF、Word/Excel、ZIP、GZIP、RAR等类型~还能自定义文件类型~可以指定搜索范围。

9、 FileMounter(v4)自动打开复合文档~以便后期分析。

可打开DBX、GZIP、PST、TAR、Thumbs.db、ZIP等类型~既可根据扩展名打开~也可根据文件签名打开。

注:慎用~因打开大量复合文件需占用大量内存~可能导致Encase运行非常缓慢甚至出错。

10、 PartitionFinder(v4)搜索FAT、NTFS、EXT2分区的首扇区~用于恢复分区。

11、文本编码查询v0.9生成文本的UNICODE、GB、BIG5编码关键字。

EAS用户与角色扩展

EAS用户与角色扩展

EAS用户与角色扩展用户表:T_PM_USER角色表:T_PM_ROLE用户角色组织对应表:T_PM_USERROLEORG扩展:1.应用功能表,用于存放应用功能菜单信息。

用树型结构还是?(如考勤系统→请假单)。

2.操作权限类别表,用于存放操作权限类别(如只读,编辑,审核等)。

可否用枚举代替?3.角色功能权限对应表,用于存放角色的功能权限对应信息。

如:用户:TestUser角色:TestRole应用功能:考勤系统→请假单操作权限:只读,编辑,审核(具体要有哪些?)可以设置TestRole角色对请假单有只读或编辑或是审核的权限,这样属于TestRole 角色下的用户都对请假单有只读或编辑或是审核的权限。

问题:1.用EAS的角色表会不会有冲突?例:A用户只属于B角色,B角色对C功能只能有只读权限,但这时需要B角色对C功能有修改权限。

A用户在EAS系统里有且只能有B角色,B角色在应用系统里的C功能有且只能有只读权限,这时要如何处理?解决方法:可同时对用户和角色设置权限,如有冲突时以用户权限优先。

2.应用系统中如何应用?例:考勤系统如何应用这些权限设置,是做个中间件(如Web Services)由各个应用系统统一调用还是每个应用系统自行编写(此有点太……)?以上问号部分讨论后决定。

应用系统表(peak_sys_ Applications)功能菜单表(peak_sys_Functions)角色功能权限表(peak_sys_RolePermissions)用户功能权限表(peak_sys_UserPermissions)注:当用户功能权限表和角色功能权限表都同时存在时,以用户功能权限表为准。

自定义扩展点

自定义扩展点

自己动手编写Eclipse扩展点分类:Eclipse开发2004-09-15 20:271738人阅读评论(2)收藏举报eclipsedocumentation扩展extensionstringschema扩展(Extension)是Eclipse中一个关键的机制,plug-in利用扩展向Eclipse平台添加新功能。

但是扩展不能随意地创建,必须按照扩展点(extension point)定义的规范进行明确的声明,Eclipse才能认出这些扩展。

我们不仅可以使用Eclipse提供的众多现成的扩展点,而且还可以定义新的扩展点,并在该扩展点上进行扩展。

当然,扩展点的定义比较复杂。

不过Eclipse为用户提供了图形化的编辑界面,我们只要输入一些信息,Eclipse就会自动生成代码,使扩展点的定义变得非常简单。

下面我们就来看看如何在Eclipse中创建一个新的扩展点,并在这个扩展点上进行扩展。

我们需要做以下的工作:1.设计该扩展点2.定义扩展点,即编写扩展点的清单文件3.编写代码来载入该扩展点的扩展我们以创建workList扩展点为例,进行详细介绍。

worklist完成的功能是:创建一个view,在其中以树状显示系统中可用的功能模块,通过双击某个模块节点,执行该扩展定义的方法(method)。

其实相当于一个控制台,通过控制台来运行不同的功能。

由于Eclipse是由一个运行时核心(runtime core)和众多插件组成的,我们也将workList 扩展点定义在一个插件中,有关workList的代码文件也放在这个插件中,这样便于查找和修改,也不影响Eclipse本身的代码。

1. 定义扩展点首先我们要创建一个存放新扩展点信息的插件net.softapp.worklist,这个插件对org.eclipse.ui.views进行扩展,以下是插件的plugin.xml文件在views扩展点的信息:<extensionpoint="org.eclipse.ui.views"><categoryname="WorkListCategory"id="WorkListCategory"/><viewicon="icons/sample.gif"class="net.softapp.internal.worklist.WorkListView"category="WorkListCategory"name="WorkList视图"id="net.softapp.internal.worklist.WorkListView"/></extension>这样就可以通过“window->show view->other”,在弹出的“Show view”对话框中选择“WorkList视图”,打开视图,我们用这个视图显示workList扩展点的所有扩展信息。

金蝶EAS_套打脚本指南及案例集

金蝶EAS_套打脚本指南及案例集

⾦蝶EAS_套打脚本指南及案例集⾦蝶EAS_套打脚本指南及案例集前⾔概述本⼿册主要介绍⾦蝶BOS套打脚本的语法规则和典型应⽤案例等内容。

本⼿册的内容主要是对套打功能有扩展需求的使⽤⽤户,初学者可以通过套打⽤户⼿册和套打模板制作指南掌握套打模板的基本操作过程。

读者对象本⼿册适⽤于⾦蝶BOS套打模板的编制⽤户。

适⽤说明●该⽂档适⽤于EAS6.0及以上版本的R1套打模板。

●详细的脚本⽅法说明请参考套打⽤户⼿册⽬录1 套打脚本语法及规则 (4)1.1 简要说明 (4)1.2 脚本编辑域 (4)1.3 变量定义及赋值 (4)1.4 控制语句 (4)2 案例 (5)2.1 盖章(电⼦签名) (5)2.2 “是”/“否”(枚举值显⽰为汉字) (5)2.3 字符串匹配替换 (5)2.4 关于期间2011-01-01~2011-01-31 现场则想得到格式201101 (6)2.5 年龄计算 (6)2.6 时间差计算 (7)2.6.1 计算两个⽇期之间的间隔天数 (7)2.6.2 推算某⽇期的前\后⼏天的⽇期 (7)2.7 数值向上取整脚本⽰例 (7)2.8 某分录块没有数据,套打时整块分录不显⽰(包括表头⾏和数据⾏) (8)2.9 多级审批时,将对应环节的审批⼈取出,放置在指定单元格 (9)2.10 当审批中存在加签时,加签节点的任务名称和原审批节点的任务名称⼀致,如何分别取出多个审批⼈ (10)1 套打脚本语法及规则1.1 简要说明1、该脚本系统采⽤类Java/JavaScript的语法。

2、⾯向对象的设计:调⽤⼀个对象(假设其名称为text1)的某个⽅法(假设为getValue),书写为:text1.getValue();如果是当前对象,则text1可省略,直接写为:getValue()。

3、⼤⼩写敏感。

1.2 脚本编辑域套打脚本可存在于模板设计期中的任意对象,如⽂字对象、图⽚对象、⾦额对象、⽹格(单元格、⾏、列及整个⽹格对象)、数据表(单元格、⾏、列及整个数据表对象)、动态列表等的前\后处理脚本编辑框中。

金蝶EAS动态扩展平台(DEP)操作手册

金蝶EAS动态扩展平台(DEP)操作手册

EAS DEP动态扩展平台部署与应用[HR/OA方案中心] [赵黎黎]导读DEP是为彻底解决EAS二次开发与标准产品合并元数据量身打造的基于EAS运行期的动态开发平台。

采用DEP开发,不仅能使二次开发的元数据和标准产品解除耦合,而且能促使二次开发的代码和标准产品解除耦合。

假设:在项目实施过程中,客户因业务不同或管理要求不同需要在EAS系统中的某个页签或某个分录中增加相应的字段,通过DEP进行配置,满足客户的需求。

本文档包括:一、DEP环境准备,二、页签字段项目增加解决方案,三、分录项目增加解决方案,四、使用自定义预留基础资料解决基础资料中无项目的解决方案,五、使用动态查询方案对增加的字段查询解决方案。

适用范围文档适用对象:实施适用产品版本:EASV7.0及以上版本文档控制请注意:本文件只作为产品介绍之用,不属于您与金蝶签署的任何协议。

本文件仅包括金蝶既定策略、产品及功能方面的信息,不能以本文件作为要求金蝶履行商务条款、产品策略以及开发义务的依据。

本文件内容可能随时变更,恕不另行通知。

目录一、DEP环境准备 (1)二、页签中增加字段解决方案 (4)1、场景介绍 (4)2、配置步骤 (4)3、方案启动,结果展现 (10)三、分录增加列解决方案 (10)1、场景介绍 (10)2、配置步骤 (11)3、方案启动,结果展现 (14)四、使用系统“自定义预留基础资料”解决基础资料中无项目的解决方案 (14)1、场景介绍 (14)2、配置步骤 (15)3、方案启动,结果展现 (18)五、使用动态查询方案对增加的字段查询解决方案 (19)1、场景介绍 (19)2、配置步骤 (19)3、结果展现 (23)六、申请单增加字段反写到员工信息解决方案 (23)1、场景介绍 (23)2、配置步骤 (23)3、结果展现 (27)4、**********注意事项*********** (27)一、DEP环境准备通过administrator管理员进行客户化菜单编辑,从系统菜单中导入动态扩展平台到客户化菜单中。

EAS培训操作指引

EAS培训操作指引

EAS培训操作指引一、EAS客户端安装:1、1、点击“install_EAS_Client_Full.exe”2、2、OK下一步3、3、选择本人接受许可协议4、4、选择安装文件位置5、5、输入EAS服务器地址(113.108.161.147)、EAS服务器文件端口(11034)、文件更新服务器(7888)6、6、选择新程序组7、7、辅助工具安装向导8、8、完成、二、系统管理员登录及修改密码;1、1、各公司管理员登录,用户名为所在公司名称,密码为公司编码,2、2、登录后修改密码,修改密码的位置为登录EAS系统后,点击系统,点击修改密码。

、三、系统管理员新建职员;1、1、基础数据管理2、2、员工信息3、3、无职位人员4、4、增加----编码公司码+两位流水码,录入名字----保存、四、系统管理员创建用户及分配角色1、1、系统平台2、2、安全管理3、3、权限管理4、4、双击打开用户管理5、5、选择用户组、新增用户,对用户与无职位人员进关联6、6、分配角色7、7、用户登录及修改密码五、科目增加及数量金额式科目的修改1、1、功能菜单-基数数据管理2、2、主数据--科目--双击打开科目表3、3、鼠标先选择要增加的科目上级,点击增加4、4、输入科目编码5、5、输入名称6、6、保存7、7、选择需要修改为数据金额的科目8、8、点击修改,选择数量核算选择计量单位组9、9、保存、六、客户、供应商的增加1、1、基数数据管理--主数据--双击打开客户2、2、选择外部客户,点击新增,编码为公司四位字母代码+三位流水号,输入名称3、3、输入税务登记证号码4、4、点击保存核准5、5、客商名称一定要使用全称、七、银行账户增加1、1、资金管理---账户管理----基础设置2、2、双击打开银行账户序时簿3、3、选择新增4、4、银行账户编码与银行帐号一致5、5、名称为银行账户名称加银行账户后四位6、6、注意开户日期,要选择在2011年12月31日前、八、部门增加1、1、基数数据管理--组织架构2、2、双击打开组织单元3、3、在左边选择自己的公司4、4、点击新增,编码公司编码+两位流水号5、5、属性选择行政组织6、6、组织层次类型选择部门九、自定义核算项目1、1、功能菜单---基础数据管理---辅助资料2、2、双击打开自定义核算项目3、3、在左边增加自定义核算项目类型(如果是集团已经增加自定义核算项目类型的,可以直接点击新增按钮)4、4、下属单位公司使用的自定义核算项目类型,要选择绝对隔离,创建者管理单元私有5、5、保存自定义核算项目类型6、6、新增自定义核算项目、十、人员的增加1、功能菜单---基础数据管理---辅助资料--自定义核算项目2、人员往来3、输入四位公司代码+三位流水码、十一、模块设置启用期间1、1、系统平台2、2、系统设置3、3、双击打开系统状态控制4、4、总账选择2012年1月5、5、保存、十二、初始化流程1、1、财务会计--总账---初始化2、2、双击打开辅助者出事余额录入3、3、选择辅助帐,新增行,选择辅助帐项目,录入金额4、4、保存,录入完毕后点击结束初始化5、5、全部核算项目录入完毕后,点击全部结束初始化6、6、打开科目余额初始化7、7、打开业务--引入辅助帐余额8、8、选择综合本位币---试算平衡9、9、平衡后点击结束初始化、十三、凭证处理及期末结账1、1、财务会计--总账--凭证处理--双击打开凭证新增2、2、凭证新增--保存--审核--过账(F11快捷键)3、3、如果涉及现金流量的输入现金流量4、4、凭证模版的使用5、5、财务会计--总账--期末处理--期末结账、十四、科目余额表1、1、财务会计---总账---财务报表--科目余额表2、2、查询方案介绍3、3、科目余额表界面点击邮件4、4、表格设置及保存当前样式功能介绍、十五、报表分类1、1、财务会计---报表---双击报表分类2、2、在左边类型中新增:编码为四位公司码+两位流水,名称“报表类型”,再增加编码为四位公司码+两位流水,名称“会计年度”3、3、选择报表类型后点击左上方新增,编码为01、名称资产负债表和02、利润表等4、4、选择会计年度后点击左上方新增,编码为03、名称2012 和编码04 名称20135、5、点击分类次序,选择6、6、打开报表制作,查看效果(具体安装各公司实际需要进行编制)、十六、报表上报1、1、财务会计--报表--报表编制--双击打开报表编制2、2、在左边选择报表存放位置后点击新增3、3、选择“选用集团模版”,点击选择按钮对用的放大镜按钮4、4、选择报表,选择对用的会计期间后点击确定按钮5、5、打开报表后,点击数据--点击报表计算6、6、数据核对正确后点击保存按钮7、7、点击工具下的审批8、8、点击报表上报。

EAS扩展报表常见问题

EAS扩展报表常见问题

相关信息来源
您还可以通过以下途径了解我们的系统,并获取您需要的服务和帮助。 1. 在线信息 如果您需要及时了解金蝶 EAS 产品动态,交流产品应用解决方案,可以登录 金蝶网站(/) 。
2. 售前咨询服务 根据企业的发展和管理需要,提供管理咨询及解决方案,帮助企业作出快速、 准确的决策。 3. 产品培训 金蝶公司秉承技术创新、管理创新的宗旨,不断提供给客户完整的行业解决 方案。在提供优秀产品的同时,不断推出配套的培训服务,帮助用户在应用 软件时达到事半功倍的效果。 4. 实施咨询服务 金蝶公司吸收十多万客户的经验,结合国内外先进的管理理念和管理软件的 实施方法,推出符合中国国情的标准软件实施方法--金手指实施方法。我们 愿意运用我们在企业管理及 IT 技术方面的知识,帮助顾客获得更大的成功! 5. 现场支持服务 我们的资深专业人员面对面地和您沟通,在运行现场对问题进行研究分析, 使问题迅速得到解决。 6. CRM 服务 借助客户关系管理系统(金蝶 EAS-CRM)我们建立了客户综合信息管理库,能 够快速地解决客户的问题并保留历史记录,以便提供长期、持续、高效的服 务。 7. CSP 服务支持 金蝶公司融合多年客户服务经验与国外先进的管理思想,提炼出客户常用的 和最需要的服务为一体的 CSP 服务。它是以金蝶公司先进的科技手段和专业 化的服务队伍为依托,在业界领先推出的项目完整、功能全面的系统性服务 产品。 8. 呼叫中心 通过客户呼叫中心服务(Call Center) ,提供全面、周到的服务,快速解答 客户应用问题。
意见反馈
感谢您使用我们的产品及用户手册。在本手册的最后附有意见反馈表,您可 以在上面说明您对我们的产品或用户指南的意见和建议,并通过金蝶分支机 构或直接传真至(0755)86073142 商业分析系统部反馈给我们, 我们将期待 你给予我们好的建议和意见。

EAS通用Query查询开发指南

EAS通用Query查询开发指南

通用查询的实现是基于BOS,通过BOS的Query对象实现。

2. 2 前提条件业务查询是必须通过Query对象来完成(这里将作为通用查询的传入参数)3. 3 简单介绍通用查询提供一个通用查询面板CommonQueryPanel,它将查询对象作为初始参数传入并完成相应的初始化过程,其主要构造器:public CommonQueryPanel(EntityViewInfo entityViewInfo,EntityViewInfo lockedEntityViewInfo,IMetaDataPK queryObjectPK,boolean showFilter,boolean showSorter,boolean showToolbar,boolean showButton,IProcessor processor,IPromptBoxFactory promptBoxFactory,int width,int height) throws BaseCommonQueryException它内嵌了两个panel(CommonFilterPanel和CommonSorterPanel)分别实现了:一、通用过滤(CommonFilterPanel):类:实现接口:IQueryFilterPanel根据查询对象产生通用过滤界面,用户可根据查询条件、逻辑关系设置查询条件。

用户可以根据实际需要来决定是否加载它。

二、通用排序(CommonSorterPanel)类:实现接口:IQuerySorterPanel根据查询对象产生通用排序界面,用户可根据排序字段设置排序方式。

用户可以根据实际需要来决定是否加载它。

它还内置了一个工具条与方案列表配套使用,用户可以根据实际需要来决定是否加载它。

类:使用工具条用户可以读取已有的查询方案并可以对查询方案进行维护。

4. 4使用方法及代码示例通用查询对话框CommonQueryDialog接口类:CommonQueryDialog接口作用:该类为通用查询对话框。

EAS扩展脚本编写指南

EAS扩展脚本编写指南

定制平台系列扩展脚本编写指南简介扩展脚本运行引擎为Rhino,基于javascript语法,运行期解释执行。

jvm中的类的方法和属性均可应用于脚本中,调用方式类似于java代码编写。

其处在with(easNames){ …}中,所以不需要指定其全路径,即可调用getRemoteInstance()方法。

如果没使用with指定作用域,则必须使用全名称(包名+类名)。

变量的定义声明遵循javascript语法,接口实现使用function声明。

比如给一些控件增加监听器:上下文扩展脚本中封装了两种上下文,插件上下文(pluginCtx)和方法上下文(methodCtx)。

这两种上下文为系统内置,无需额外的声明或获取。

pluginCtx主要存放当前执行环境的相关信息,比如服务端的Context,客户端的界面控件、界面状态、编辑对象等。

methodCtx存放当前操作的相关信息,包含方法参数和方法返回值。

插件上下文:客户端和服务端的插件上下文存储的内容不一样,实现方式上,其分别对应于两个java类,com.kingdee.eas.ep.app.BeanParam和com.kingdee.eas.ep.client.UIParam。

这两个类中的方法均可以在脚本中直接使用。

上下文都存在get和put方法。

脚本中直接使用get(key)获取值,put(key,value)设置值。

客户端插件上下文封装了部分常用的内容,具体如下:直接通过pluginCtx调用即可,比如pluginCtx.getUI即可获取当前界面实例。

界面的控件可以通过get + 控件类型+ ( + 控件名+)的方式获得,比如获取单据分录的表格可以这样pluginCtx.getKDTable("kdtEntries")。

方法上下文:方法上下文存放了方法的相关信息,包括方法参数和方法返回值。

方法上下文提供了如下常过methodCtx.getParamValue(0)来获得model。

标准产品如何扩展_eas_bos二次开发

标准产品如何扩展_eas_bos二次开发

EAS标准产品如何扩展一、服务端服务端的扩展,主要是对ControllerBean的扩展在实体(Entity)或者功能(façade)的元数据中添加如下部分内容,添加完后,发布该元数据,会自动生成java代码,在生成的XXXControllerBeanEx.java中覆盖对应的方法即可。

Entity<rskey="entityObject[com.kingdee.eas.scm.im.inv.app.PurInWarehsBill].ext endedProperty.controllerBeanEx"><lang locale="en_US"value="com.kingdee.eas.scm.im.inv.app.PurInWarehsBillControllerBeanEx "/><lang locale="zh_CN"value="com.kingdee.eas.scm.im.inv.app.PurInWarehsBillControllerBeanEx "/><lang locale="zh_TW"value="com.kingdee.eas.scm.im.inv.app.PurInWarehsBillControllerBeanEx "/></rs>Façade<rskey="facade[com.kingdee.eas.scm.sd.sale.report.app.SaleCostDetailFaca de].extendedProperty.controllerBeanEx"><lang locale="zh_CN"value="com.kingdee.eas.scm.sd.sale.report.app.SaleCostDetailFacadeCon trollerBeanEx"/><lang locale="zh_TW"value="com.kingdee.eas.scm.sd.sale.report.app.SaleCostDetailFacadeCon trollerBeanEx"/><lang locale="en_US"value="com.kingdee.eas.scm.sd.sale.report.app.SaleCostDetailFacadeCon trollerBeanEx"/></rs>二、客户端1、单据类UIListUI和EditUI一样,都通过追加后缀名CTEx的方式来扩展。

eas通用功能操作手册

eas通用功能操作手册

EAS 综合项目管理业务操作手册—EAS 通用功能模块
一、 业务组织介绍
定义: (1) 业务组织是具有组织属性的组织单元,业务组织分为实体业务组织与虚体业务组 织。 (2) 虚体业务组织: 虚体业务组织下可以挂虚体业务组织与实体业务组织, 但虚体业务 组织上不能做业务单据。 (3) 实体业务组织:实体业务组织必为最底级业务组织,在 eas 系统中只能在实体业务 组织上做业务单据。 虚体实体组织显示如下图

业务组织介绍................................................................................................................... 3 切换组织 .......................................................................................................................... 4 设置默认组织................................................................................................................... 6 权限组成 .......................................................................................................................... 7 我的组织范围及权限查看............................................................................................... 8 叙事薄界面通用操作....................................................................................................... 9 通用按钮操作................................................................................................................... 9 叙事薄显示设置............................................................................................................. 22 叙事薄列表内容导出..................................................................................................... 24 流程查看及跟踪............................................................................................................. 25 单据状态说明................................................................................................................. 25 单据按钮操作介绍......................................................................................................... 27 单据通用字段说明......................................................................................................... 31 单据字段填写说明..................................................................................................... 32 流程审批通用操作..................................................................................................... 32 流程审批 ........................................................................................................................ 32 系统信息提示处理..................................................................................................... 35 个性化设置 ................................................................................................................ 36 色彩方案 ........................................................................................................................ 37 界面打开方式................................................................................................................. 39 个人快捷码 .................................................................................................................... 40 默认打开界面................................................................................................................. 42 消息选项 ........................................................................................................................ 43 工具栏风格选择............................................................................................................. 44 附件管理 .................................................................................................................... 44 在上级组织操作下级组织业务................................................................................. 45 botp 上查、下查 ........................................................................................................ 45

EAS动态扩展平台

EAS动态扩展平台

方式二:展开下拉菜单【分配权限】 ,选择【批量分配权限】 ,进行批量授权。如图所示, 点击【选择组织】 ,勾选组织单元,点击【确定】 。
完成授权分配后,用户需退出系统,重新打开客户端,启动登陆,权限方可生效。
注意事项: 分配组织必须是管理单元,否则可授权树中看不到动态扩展平台的权限项。 历史版本升级到 7.5 版本后,原“动态扩展平台”权限项将升级并更名为“动态扩展 平台高级版” 。
金蝶国际软件集团有限公司版权所有
事件定义
定义: 事件通常被业务功能(Function)操作使用,操作绑定实体对象事件,侦听事件是否被触发,从 而进行相关处理。该功能主要用于工作流流程配置时使用。
事件支持:

新增 修改 删除
定义事件:
1. 2. 3.
定义名称、别名、描述; 定义事件参数
导入业务方法
同步菜单
请使用系统管理员(administrator)登陆系统,单击〖系统〗〖客户化菜单编辑〗 ,如图 所示。
在客户化菜单编辑界面,点击【菜单升级】 ,弹出客户化菜单升级窗口,选择升级方式为智 能升级,点击升级。
完成智能升级客户化菜单后,客户化菜单如系统菜单一样,将动态扩展平台挂在【企业建 模】-->【业务对象建模】下。
定义名称、别名、描述; 定义访问级别:public/protected/package/private
定义子类模式:abstract/final/normal 定义事物属性:Required/NotSupported/Supports/RequiresNew/Mandatory/Never 定义返回值类型 定义实体 定义方法参数
相关主题
动态扩展方案管理
金蝶国际软件集团有限公司版权所有

EAS操作手册 - 报表制作

EAS操作手册 - 报表制作

EAS操作手册报表制作目录一、SQL数据集 (1)二、扩展报表 (8)1. 交叉分析报表 (10)2. 明细报表 (14)3. 分组汇总报表(未完成) (17)4. 联查 (17)一、S QL数据集SQL数据集是建立报表所需的数据的提取方式1.使用user,选择报表所需组织,打开报表工具商业分析—扩展报表—报表工具—报表工具2.选择报表所需存放的位置,点击新建数据集边黑色三角常用为第一项3.跳出SQL数据集编辑页面4.在表界面选择查找所需的表5.根据所需要的条件,关联两张表6.双击连接线跳出表链接对话框7.选择需要显示、使用的字段8.建立查询所需要的参数9.建立查询过滤条件10.建立显示排序11.建立输出字段12.查看生成的SQL语句推荐会编写SQL语句的人员直接编写SQL语句节省时间13.保存SQL数据集二、扩展报表1.在SQL同一目录下建立扩展报表2.跳出报表制作页面报表制作可直接手动设置、从EXCEL导入、报表引导三种方式3.点击左上方文件—新建报表向导4.选择报表类型1.报表向导中选择交叉分析2.导入刚才建立的SQL数据集3. 选择分组汇总条件4.完成后点击报表预览对报表进行修饰5.保存报表2.明细报表1.报表向导中选择列表2.导入刚才建立的SQL数据集3. 选择需要显示的列4.设置需要汇总的字段5.完成后点击报表预览对报表进行修饰6.保存后退出3.分组汇总报表(未完成)4.联查1.选择需要联查的单元格,点击右侧联查属性2.弹出联查窗口3.设置报表联查(EAS单据联查见第四步)3.1.点击新增按钮3.2.选择报表位置3.3.设置需要传入新报表的值3.4.保存后退出4.设置EAS单据联查(报表联查见第三步)4.1.点击新建按钮4.2.使用admin账号登陆系统,打开菜单编辑界面4.3.找到并复制需要联查的EAS页面ui4.4.取消自动ui检测,填写刚才复制的ui4.5.点击新建单据条目按钮4.6.填写需要传入系统的值所在单元格4.7.确定后退出保存。

EAS扩展报表入门

EAS扩展报表入门

环境介绍
扩展报表设计器
提供类Excel的报表编辑器供 用户设计报表,简单易用 通过属性编辑器可编辑属性, 所有属性都支持设置公式 通过数据源窗口可快速编写 取数公式
环境介绍
公式向导
属性、单元格都可以使用公 式向导设置公式 通过公式向导可以更方便地 编写公式
目录
概述 基本概念 环境介绍 制作报表流程
请记得保存制作好的报表 组织类型用于授权,保存报表时请选择正确的组织类型
目录
概述 基本概念 环境介绍 制作报表流程
准备数据源 引入数据源 创建报表 编辑报表 预览 发布 授权 公式系统 典型应用
制作报表流程-预览报表 设计好报表模板后,点击工具栏上的“报表预览”按钮,可弹出报表预览窗口进行预览
制作报表流程-引入数据源 选择数据源后点击确定,返回已选数据源界面,此时系统在下方列出了该数据源的字段
制作报表流程-引入数据源 此时可选中字段后点击编辑按钮,修改字段的别名。修改后的别名将在报表中引用
目录
概述 基本概念 环境介绍 制作报表流程
准备数据源 引入数据源 创建报表 编辑报表 预览 发布 授权 公式系统 典型应用
目录
概述 基本概念 环境介绍 制作报表流程
准备数据源 引入数据源 创建报表 编辑报表 预览 发布 授权 公式系统 典型应用
制作报表流程-报表授权ຫໍສະໝຸດ 报表授权对象为已发布、组织类型不为空的报表,未发布报表不能被授权 只有经过授权的用户才能在EAS中查看报表 报表授权分为2种:按用户授权、按角色授权 提供权限查看功能,可以查看已授的权限
目录
概述 基本概念 环境介绍 制作报表流程
准备数据源 引入数据源 创建报表 编辑报表 预览 发布 授权 公式系统 典型应用

EAS执行脚本问题处理指南

EAS执行脚本问题处理指南

EAS执行脚本问题处理指南1.EAS脚本分类及执行方式2.EAS脚本执行途径UNIX 环境下EAS 升级,建议用一台不关机的Windows 机器打开Xmanager 等工具,再用这台Windows 机器远程登陆到UNIX 等EAS 所在的操作系统进行EAS升级,以防止升级过程中界面断开,无法直观判断升级进度!如升级界面消失,可以查看admin.log 日志判断升级进度(UNIX 可以进入eas\admin\目录,使用tail –f admin.log 动态查看当前升级进度)3. EAS 各版本脚本执行顺序SP1与SP2之间的BOS 小补丁脚本已经包含在SP2中,可以不需要再单独执行EAS6.0与PTM038103之间的EAS 小补丁脚本已经包含在PTM038103中,可以不需要再单独执行在安装了PTM037265及PTM038103的EAS6.0环境中,执行完成这2个合并补丁的脚本后,新建或升级数据中心时,还需要执行这两个补丁之后发布的BOS 及EAS 小补丁脚本(如果有安装)升级过程中,如果跨越多个版本,系统会自动按顺序先升级BOS 的版本,然后再升级EAS 版本。

升级:指在数据中心对帐套进行版本升级4.EAS执行脚本常见问题处理方法4.1屏蔽法屏蔽法是指将执行过程中出错的脚本临时屏蔽掉不执行,主要适用于客户不使用的功能或模块相关的脚本。

如客户安装了EAS标准版,但是只启用了总帐、应收、应付、固定资产、HR模块,在升级过程中出现生产制造模块的脚本执行出错,由于客户并没有使用到生产制造模块,这里就可以采用临时屏蔽的方法将该脚本屏蔽掉后再重新升级即可。

根据屏蔽范围的不同,主要分为2种:1.屏蔽某条语句:找到该语句所在的脚本文件并将对应的行注释或删除掉2.屏蔽某个脚本文件:找到该脚本的入口,屏蔽执行该脚本的入口即可,不需要将该脚本文件删除(如果只是删除了文件而没有删除入口,则执行时会提示找不到文件)。

EAS 流程配置操作指南

EAS 流程配置操作指南

概述流程平台提供配置界面供用户自定义流程、自定义流程间各节点的反写规则与业务约束。

EAS的流程自定义由流程规则定义与反写规则定义两部分组成,用户可根据实际应用自行DIY配置企业的流程,流程平台可实现如下内容的配置:流程的入口条件,满足入口条件的单据会自动匹配流程,执行流程所配置的反写及控制;流程所包含的业务节点单据流的走向,如流程所包含的业务单据及业务单据间的关联关系;各业务节点间的数值反写规则,如已执行数量、未执行数量等如何反写;各业务节点间的执行状态反写规则,如分录的执行状态在满足一定条件下变更为关闭状态等; 某一业务节点的执行条件,如销售出库单的审核条件为订单不为关闭状态,累计出库数量不能大于订单所控制的数量;流程业务节点的生成方式,在流程配置界面可定义下级流程节点是手工生成还是自动生成;流程平台支持对二次开发扩展字段的反写配置。

流程平台暂不支持或暂未实现的内容:对单据本身字段的反写,如单据DEP增加累计未执行数量字段,在单据审核时对该字段赋予初始值,需要通过DEP来实现,对单据本身字段的反写不属于流程平台实现的范畴。

流程节点条件定义:目前流程解析跟据单据类型及BOTP来区分单据在流程中的节点,如果存在上游节点、单据类型及关联生成的BOTP均一致的多个节点单据,系统是无法区分该种场景的,需要通过在流程配置中结合BOTP等去规避该场景。

流程平台通过在单据实体中存储流程串号来识别单据与流程间的关系,目前暂不支持流程配置与原代码实现的流程控制在同一张单据上兼容,同一张单据也不允许存在匹配流程与不匹配流程两种情况的分录存在。

流程配置概念定义流程节点间的关系,在流程规则定义界面可定义以下信息:流程的入口条件:定义该流程的条件,目前只支持在入口单据定义流程条件,当入口单据满足流程条件时会自动匹配该流程,如果存在多个符合条件的流程,系统会跳出交互界面供用户人工决策。

流程的节点:通过连接线建立流程各节点间的关系,下游节点单据生成方式为通过BOTP关联生成,可以定义生成下游节点的方式为自动还是手工生成;流程与流程间的关系:定义一个新流程时可以引用另一个有效流程作为前置流程;流程节点间的反写及业务规则:通过在节点引用反写规则来实现,具体反写及业务规则详见反写配置章节。

EAS-BOS应用框架编程指南

EAS-BOS应用框架编程指南

状态配置表
下表列出了所有已知的数据状态属性,这些属性将作为基础的状态属性供定义具体的业务 对象时选择使用。
状态 状 状态枚举类型 名 态 描 述 生效 0: EffectedStatusEnum 状态 暂 存
属性名
字段名
EffectedStatus
FEffectedStatus
1: 生 效 作废 0: DeletedStatusEnum 状态 普 通
DeletedStatus
FDeletedStatus
1: 作 废 审核 0: CheckedStatusEnum 状态 未 审 核 1: 已 审 核 冻结 0: BlockedStatusEnum 状态 未 冻 结
CheckedStatus
FCheckedStatus
BlockedStatus
FBlockedStatus
原始单据ID String String
sourceFunction 来源功能
方法
名称 checkOut passAudit UnpassAudit Freeze Unfreeze checkStatusFreeze checkNumberDup checkNumberBlank 描述 结清(关闭)业务数据 审核通过 设置为未审核状态 冻结业务数据 解冻业务数据 检查业务数据是否被冻结 检查单据编号是否重复 检查单据编号是否为空
1.3. 普通业务对象超类ObjectBase
属性
名称 Creator CreateTime LastUpdateUser 描述 创建者 创建时间 最后修改 者 数据类型 连接属性——连接 到用户 Timestamp 连接属性——连接 到用户 Timestamp 对应字段 FCreatorID FCreateTime FLastUpdateUserID FLastUpdateTime

EAS自定义引入引出模板使用指南

EAS自定义引入引出模板使用指南

EAS自定义引入引出模板使用指南[EAS基础系统部] [潘柱军]导读本文档对EAS引入引出管理中的自定义模板使用进行详细说明并对常见问题进行解答。

适用对象✧需要引入引出功能的二次开发人员,实施人员,客户✧引入引出功能测试人员、开发人员目录1.简介 (2)1.1.目的 (2)1.2.适用对象 (2)1.3.参考资料 ............................................................................................................... 错误!未定义书签。

2.背景 (2)3.功能描述 (2)4.自定义模板使用说明 (3)4.1.制作模板 (3)4.2.引出模板 (6)4.3.使用模板 (7)5.发布自定义模板 (7)5.1.导出自定义模板脚本 (8)5.2.分发部署自定义模板 (9)5.3.使用导入的自定义模板 (9)6.自动引入数据 (9)6.1.制定自动引入计划 (9)6.2.自动执行引入任务 (10)6.3.立即执行引入任务 (11)7.常见问题解答 (11)1.1. 目的本文档对EAS引入引出管理中的自定义模板使用进行详细说明并对常见问题进行解答。

1.2. 适用对象适用于:✧需要引入引出功能的二次开发人员,实施人员,客户✧引入引出功能测试人员、开发人员数据引入问题一直是个非常复杂且耗时的问题,不少客户会提出自己特性导入需求,研发的解决办法就是完全定制开发,就算是很简单的实体也要耗去很多时间。

而现实情况是研发提供的导入功能只是针对一些有复杂关系或者有大历史数据的业务点,不可能对每个基础资料,业务单据都单独开发引入功能。

因此存在如下两种系统标准数据引入引出功能处理不了的情况:1.系统中有些业务对象没有开发对应的数据引入引出功能;2.业务对象开发了引入功能,但客户针对此业务对象做了二次开发,增加了字段,以前的引入功能将不能满足新增字段的内容引入;此时可以考虑利用自定义引入实现上面两类业务对象的引入。

EAS-DEP常用脚本模板

EAS-DEP常用脚本模板

EAS-DEP常用脚本模板1.改变工具栏中按钮的状态with(easNames){var auditAction = pluginCtx.getUI().getActionManager().getAction("actionBtnAssign");auditAction.setEnabled(false); //禁用工具栏按钮auditAction.setVisible(false); //隐藏工具栏按钮}注:取工具栏中的按钮,取其对应的功能即可,区分大小写2.改变分录右上角的按钮的状态with(easNames){var controlPanel =pluginCtx.getKDTable("kdtEntry").getParent().getParent().getComponent(0);MsgBox.showWarning(controlPanel.getComponentCount());for(var i = 1; i < controlPanel.getComponentCount(); i++){controlPanel.getComponent(i).setEnabled(false);}}注:想改变具体的按钮状态,将i改成具体的数字即可资料参考:/wiser/article/details/43480383.根据选中列表行的状态改变工具栏按钮的状态pluginCtx.getKDTable("tblMain").addKDTActiveCellListener(function(afterSelectLine,methodName){ //对选中行之后的事情进行监听with(easNames){var entry = pluginCtx.getKDTable("tblMain");var baseStatus = SCMClientUtils.getSelectRowFieldValue(entry,"status");var auditAction = pluginCtx.getUI().getActionManager().getAction("actionRemove");auditAction.setEnabled(false);if("已保存".equals(baseStatus[0])){auditAction.setEnabled(true);}}});注:如果想获取多行,则加for循环,baseStatus[0]→baseStatus[i]4.控制代办服务单,上牌备注不能为空var easImporter = JavaImporter();easImporter.importPackage(.kingdee.bos);easImporter.importPackage(.kingdee.eas.util);easImporter.importPackage(.kingdee.eas.util.client);with(easImporter){var txtCause = pluginCtx.getKDTextArea("txtHangtagRemark");//取上牌备注控件值//控制分录字段为必录项if(txtCause.getText().equals(""))//判断取值条件{MsgBox.showInfo("<上牌备注不能为空>");SysUtil.abort();}}5.控制代办调整单审核后可调整分录var easNames = JavaImporter();easNames.importPackage(.kingdee.bos.ctrl.swing); easNames.importPackage(Packages.java.math);easNames.importPackage(mon.client); easNames.importPackage(.kingdee.eas.util.client); easNames.importPackage(.kingdee.bos.util);easNames.importPackage(.kingdee.eas.scm.im.dt); easNames.importPackage(mon.client); easNames.importPackage(.kingdee.bos.metadata);easNames.importPackage(.kingdee.bos.ctrl.extendcontrols); easNames.importPackage(.kingdee.bos.util);easNames.importPackage(.kingdee.bos.metadata);easNames.importPackage(.kingdee.bos.framework); easNames.importPackage(.kingdee.bos.ctrl.extendcontrols); easNames.importPackage(.kingdee.bos.util);easNames.importPackage(.kingdee.eas.util);with(easNames){var kdtEntrys = pluginCtx.getKDTable("kdtEntrys");var controlPanel =pluginCtx.getKDTable("kdtEntrys").getParent().getParent().getComponent(0);//定义分录按钮 //取当前用户var user=pluginCtx.getUIContext().get("sysContext").getCurrentUserInfo();//当前组织 getCurrentCtrlUnitvar company = pluginCtx.getUIContext().get("sysContext").getCurrentFIUnit();//指定人员可编辑if(user.getPerson()=='XXX'){MsgBox.showWarning(user.getPerson());MsgBox.showWarning(company);kdtEntrys.getColumn("AgentItem").getStyleAttributes().setLocked(false);kdtEntrys.getColumn("PreReceiveAmount").getStyleAttributes().setLocked(false);controlPanel.getComponent(1).setEnabled(true);controlPanel.getComponent(2).setEnabled(true);controlPanel.getComponent(3).setEnabled(true);}}6.整车库存配车屏蔽var easNames = JavaImporter();easNames.importPackage(.kingdee.bos.ctrl.swing);easNames.importPackage(Packages.java.math);easNames.importPackage(mon.client);easNames.importPackage(.kingdee.eas.util.client);easNames.importPackage(.kingdee.bos.util);easNames.importPackage(.kingdee.eas.scm.im.dt);easNames.importPackage(mon.client); easNames.importPackage(.kingdee.bos.metadata);easNames.importPackage(.kingdee.bos.ctrl.extendcontrols); easNames.importPackage(.kingdee.bos.util);easNames.importPackage(.kingdee.bos.metadata);easNames.importPackage(.kingdee.bos.framework);easNames.importPackage(.kingdee.bos.ctrl.extendcontrols); easNames.importPackage(.kingdee.bos.util);easNames.importPackage(.kingdee.eas.util);with(easNames){var auditAction =pluginCtx.getUI().getActionManager().getAction("actionDecorationOrderAlter");auditAction.setEnabled(false);}7.控制分录字段不能为空(整车销售订单分录为例)var easImporter = JavaImporter();easImporter.importPackage(.kingdee.bos);easImporter.importPackage(.kingdee.eas.util);easImporter.importPackage(.kingdee.eas.util.client);with(easImporter){var kdtEntrys = pluginCtx.getKDTable("kdtEntrys");if(kdtEntrys.getRow(0).getCell("Color").getValue()==null)//判断字段条件{MsgBox.showInfo("<整车订单分录颜色不能为空>");SysUtil.abort();}if(kdtEntrys.getRow(0).getCell("SubscriptionAmount").getValue()<=0){MsgBox.showInfo("<订金不能为0>");SysUtil.abort();}}8.控制整车订单已出库已开票不能做订单变更var easImporter = JavaImporter();easImporter.importPackage(.kingdee.bos);easImporter.importPackage(.kingdee.eas.util);easImporter.importPackage(.kingdee.eas.util.client);with(easImporter){var kdtEntrys = pluginCtx.getKDTable("kdtEntrys");if(kdtEntrys.getRow(0).getCell("TotalIssueQty").getValue()>0){ MsgBox.showInfo("<当前单据已生成整车销售出库单,不能进行变更操作,请反审核删除整车销售出库单!>");SysUtil.abort();}if(kdtEntrys.getRow(0).getCell("TotalInvoiceAmount").getValue()>0){ MsgBox.showInfo("<当前单据已开票,不能进行变更操作,请反审核删除开票登记单!>");SysUtil.abort();}}9.控制根据精品销售单类型控制分录字段var easImporter = JavaImporter();easImporter.importPackage(.kingdee.bos);easImporter.importPackage(.kingdee.eas.util); easImporter.importPackage(.kingdee.eas.util.client); with(easImporter){var saletype=pluginCtx.getKDBizPromptBox("prmtdecorationSaleType"); var kdtEntrys = pluginCtx.getKDTable("kdtEntry");var rowCount = kdtEntrys.getRowCount();for(var i = 0;i<rowCount;i++){if(saletype.getValue()=='整车现金销售' &&kdtEntrys.getRow(i).getCell("IsApyGifts").getValue()==1){MsgBox.showInfo("销售类型为整车现金销售,分录随车赠品不能勾选"); SysUtil.abort();}if(saletype.getValue()=='整车赠送' &&kdtEntrys.getRow(i).getCell("discountRate").getValue()>0){MsgBox.showInfo("销售类型为整车赠送,分录折扣率或折扣额不能填"); SysUtil.abort();}if(saletype.getValue()=='整车赠送' &&kdtEntrys.getRow(i).getCell("favorAmount").getValue()==0){MsgBox.showInfo("销售类型为整车赠送,分录随车金额不能为空!");SysUtil.abort();}if(kdtEntrys.getRow(i).getCell("taxPrice").getValue()==0){MsgBox.showInfo("分录精品含税单价不能为O");SysUtil.abort();}if(kdtEntrys.getRow(i).getCell("discountRate").getValue()>55 &&saletype.getValue()=='整车现金销售'){MsgBox.showInfo("折扣率不能大于5.5折");SysUtil.abort();}if(kdtEntrys.getRow(i).getCell("discountRate").getValue()>55 &&saletype.getValue()=='售后销售'){MsgBox.showInfo("折扣率不能大于5.5折");SysUtil.abort();}}}10.控制整车销售出库分录的源单类型不能为空var easImporter = JavaImporter();easImporter.importPackage(.kingdee.bos);easImporter.importPackage(.kingdee.eas.util);easImporter.importPackage(.kingdee.eas.util.client);with(easImporter){var kdtEntry = pluginCtx.getKDTable("detailTable");//控制分录字段源单类型不能为空if(kdtEntry.getRow(0).getCell("coreBillType").getValue()==null){MsgBox.showInfo("<分录源单类型不能为空,不能保存!请关联单据出库!>");SysUtil.abort();}if(kdtEntry.getRow(0).getCell("ys").getValue()>kdtEntry.getRow(0).getCell("ysk").getValue()& &kdtEntry.getRow(0).getCell("remark").getValue()=='整车赠送'){MsgBox.showInfo("精品销售单应收小于已收,不能出库,请收款后再作出库!>");SysUtil.abort();}if(kdtEntry.getRow(0).getCell("ys").getValue()>kdtEntry.getRow(0).getCell("ysk").getValue()& &kdtEntry.getRow(0).getCell("remark").getValue()=='整车现金销售'){MsgBox.showInfo("精品销售单应收小于已收,不能出库,请收款后再作出库!>");SysUtil.abort();}}11.控制整车调拨单调出调入公司不能相同var easImporter = JavaImporter();easImporter.importPackage(.kingdee.bos);easImporter.importPackage(.kingdee.eas.util);easImporter.importPackage(.kingdee.eas.util.client);with(easImporter){var outcompany = pluginCtx.getKDBizPromptBox("prmtoutOrgUnit").getValue().tostring();//取调出控件值var incompany = pluginCtx.getKDBizPromptBox("prmtinOrgUnit").getValue().tostring();//取调入控件值if(outcompany==incompany){MsgBox.showInfo("<调出公司与调入公司不能相同!请重新修改提交!>");SysUtil.abort();}}12.整车价格特批设置/*var easImporter = JavaImporter();easImporter.importPackage(.kingdee.bos);easImporter.importPackage(.kingdee.eas.util);easImporter.importPackage(.kingdee.eas.util.client);easImporter.importPackage(ng);with(easImporter){var kdtEntrys = pluginCtx.getKDTable("kdtEntrys");var rowCount = kdtEntrys.getRowCount();var p1 = 0.0;//整车优惠var p2 = 0.0;//精品优惠var p3 = 0.0;//裸车总额度var p4 = 0.0;//整车加装优惠var p5 = 0.0;//精品加装优惠var p6 = 0.0;//加装总额度for(var i = 0;i<rowCount;i++){if(kdtEntrys.getRow(i).getCell("VehicleDiscount")!=null&& (kdtEntrys.getRow(i).getCell("VehicleDiscount").getValue()==null|| kdtEntrys.getRow(i).getCell("VehicleDiscount").getValue().equals(""))){ MsgBox.showInfo("整车优惠金额不能为空");SysUtil.abort();}if(kdtEntrys.getRow(i).getCell("DecorateDiscount")!=null&& (kdtEntrys.getRow(i).getCell("DecorateDiscount").getValue()==null|| kdtEntrys.getRow(i).getCell("DecorateDiscount").getValue().equals(""))){ MsgBox.showInfo("精品优惠金额不能为空");SysUtil.abort();}if(kdtEntrys.getRow(i).getCell("totalNullAmount")!=null&& (kdtEntrys.getRow(i).getCell("totalNullAmount").getValue()==null|| kdtEntrys.getRow(i).getCell("totalNullAmount").getValue().equals(""))){ MsgBox.showInfo("裸车总特批额度不能为空");SysUtil.abort();}if(kdtEntrys.getRow(i).getCell("markupCtrl")!=null&& (kdtEntrys.getRow(i).getCell("markupCtrl").getValue()==null|| kdtEntrys.getRow(i).getCell("markupCtrl").getValue().equals(""))){ MsgBox.showInfo("整车加装优惠金额不能为空");SysUtil.abort();}if(kdtEntrys.getRow(i).getCell("decorateAddDiscount")!=null&& (kdtEntrys.getRow(i).getCell("decorateAddDiscount").getValue()==null||kdtEntrys.getRow(i).getCell("decorateAddDiscount").getValue().equals(""))){MsgBox.showInfo("精品加装优惠金额不能为空");SysUtil.abort();}if(kdtEntrys.getRow(i).getCell("totalAddAmount")!=null&& (kdtEntrys.getRow(i).getCell("totalAddAmount").getValue()==null|| kdtEntrys.getRow(i).getCell("totalAddAmount").getValue().equals(""))){ MsgBox.showInfo("加装车总特批额度不能为空");SysUtil.abort();}p1 = (Double)(kdtEntrys.getRow(i).getCell("VehicleDiscount").getValue());p2 = (Double)(kdtEntrys.getRow(i).getCell("DecorateDiscount").getValue());p3 = (Double)(kdtEntrys.getRow(i).getCell("totalNullAmount").getValue());p4 = (Double)(kdtEntrys.getRow(i).getCell("markupCtrl").getValue());p5 = (Double)(kdtEntrys.getRow(i).getCell("decorateAddDiscount").getValue());p6 = (Double)(kdtEntrys.getRow(i).getCell("totalAddAmount").getValue());var p12 = p1.doubleValue() + p2.doubleValue();if(p12 > p3){MsgBox.showInfo("'整车特批额度'和'精品特批额度'之和不能大于'裸车总特批额度'");SysUtil.abort();}if(p2 < p3 * 0.3){MsgBox.showInfo("'精品特批额度'不能小于'裸车总特批额度'的30%");SysUtil.abort();}var p45 = p4.doubleValue() + p5.doubleValue();if(p45 > p6){MsgBox.showInfo("'整车加装特批额度'和'精品加装特批额度'之和不能大于'加装车总特批额度'");SysUtil.abort();}if(p5 < p6 * 0.3){MsgBox.showInfo("'精品加装特批额度'不能小于'加装车总特批额度'的30%");SysUtil.abort();}}}*/13.客户端调用服务端方法自定义方法脚本:var easImporter = JavaImporter();easImporter.importPackage(Packages.java.math);easImporter.importPackage(.kingdee.bos.util);easImporter.importPackage(.kingdee.eas.util);easImporter.importPackage(.kingdee.eas.util.app);easImporter.importPackage(.kingdee.bos.dao.ormapping);easImporter.importPackage(mon);easImporter.importPackage(.kingdee.eas.basedata.master.material);//加载包,可直接拷贝with(easImporter){var ctx = pluginCtx.getContext();//获得上下文。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

定制平台系列扩展脚本编写指南简介扩展脚本运行引擎为Rhino,基于javascript语法,运行期解释执行。

jvm中的类的方法和属性均可应用于脚本中,调用方式类似于java代码编写。

其处在with(easNames){ …}中,所以不需要指定其全路径,即可调用getRemoteInstance()方法。

如果没使用with指定作用域,则必须使用全名称(包名+类名)。

变量的定义声明遵循javascript语法,接口实现使用function声明。

比如给一些控件增加监听器:上下文扩展脚本中封装了两种上下文,插件上下文(pluginCtx)和方法上下文(methodCtx)。

这两种上下文为系统内置,无需额外的声明或获取。

pluginCtx主要存放当前执行环境的相关信息,比如服务端的Context,客户端的界面控件、界面状态、编辑对象等。

methodCtx存放当前操作的相关信息,包含方法参数和方法返回值。

插件上下文:客户端和服务端的插件上下文存储的内容不一样,实现方式上,其分别对应于两个java类,com.kingdee.eas.ep.app.BeanParam和com.kingdee.eas.ep.client.UIParam。

这两个类中的方法均可以在脚本中直接使用。

上下文都存在get和put方法。

脚本中直接使用get(key)获取值,put(key,value)设置值。

客户端插件上下文封装了部分常用的内容,具体如下:直接通过pluginCtx调用即可,比如pluginCtx.getUI即可获取当前界面实例。

界面的控件可以通过get + 控件类型+ ( + 控件名+)的方式获得,比如获取单据分录的表格可以这样pluginCtx.getKDTable("kdtEntries")。

方法上下文:方法上下文存放了方法的相关信息,包括方法参数和方法返回值。

方法上下文提供了如下常过methodCtx.getParamValue(0)来获得model。

同时可以通过methodCtx.getResultValue()来获得方法的返回值。

注意:设置方法的返回值必须通过methodCtx.setResultValue(value)来设置,不可以用类似方法返回值的方式写(return value)。

可以通过定制平台的扩展定义中的上下文来快速编写一些常用脚本。

自定义业务方法在实体或Façade中新增一个业务方法后,如何调用该业务方法?自定义业务方法的调用是通过工具类来实现的。

工具类主要需要三个参数:元数据PK (IMetaDataPK pk),方法名称(String methodSignature),参数对象数组(Object[] args)。

其中方法名称请从该业务方法的扩展点的描述信息中拷贝获得,否则容易出错,如果方法没有返回值,注意名称前有空格,不要删除。

com.kingdee.bos.framework.BOClientTool.callCmethod(pk,methodSignature,args)com.kingdee.bos.framework.BOProxy.getProxy(ctx,pk).callCmethod(methodSignature,args)自定义异常业务异常定义后,可以通过工具类抛出异常。

服务器端调用方式:com.kingdee.eas.ep.plugin.ExceptionUtil.throwOnServer(pluginCtx.getContext(),name,subName, args)其中参数为:Context ctx-服务器上下文String name-异常名称String subName-子异常名称Object[] args-参数对象数组,可删去args[i]中的内容将会替代对应的{i}中的内容,如果没有参数,可以省略该参数。

客户端调用方式:com.kingdee.eas.ep.plugin.ExceptionUtil.throwOnClient(name,subName,args)参数含义如上。

自定义基础资料或单据定制平台支持自定义基础资料和单据的实现原理是先通过内置的模板拷贝生成新的动态元数据,然后通过模板这个壳来运行。

新生成的元数据可进行业务调整。

所有对动态内容的操作,最终都转换为对模板的操作,模板根据具体元数据的信息,进行相应的转换后,再执行操作。

模板通过EAS系统内置产生,目前只内置了基础资料和单据两种模板。

其他模板请到【定制模板】功能中查看。

业务单据的模板信息为:下面通过对基础资料的相关操作来展示如何在脚本中应用动态内容。

客户端调用新增、修改、查询等动作首先需要一个远程接口,可通过如下方式获得:”com.kingdee.eas.custom.app.Diploma”。

返回值为com.kingdee.eas.ep.IDataBaseCustom类型,这是由于其从该模板生成所致。

这样IDataBaseCustom上的所有操作,动态基础资料都有,也均可以通过该实例执行。

比如,新增操作ORMMapping的。

删除、更新、查看等动作由于值对象都存在id,所以其可以自动解析获得,不需要手工设置。

调试如果想调试某段脚本,请在扩展定义中勾选“调试模式执行”。

这样,在脚本运行时会弹出脚本调试窗口。

注意:如果调试的脚本为服务器端脚本,即实体或façade中基于业务方法编写的脚本,则必须在定制平台中启动“脚本远程调试”,否则将会抛出BOS异常,提示启动远程调试服务器。

调试支持单步执行、断点设置、变量查看、脚本控制台等。

关于Rhino/rhino/Rhino is an open-source implementation of JavaScript written entirely in Java. It is typically embedded into Java applications to provide scripting to end users.Rhino语法简介Rhino 是一种使用Java 语言编写的JavaScript 的开源实现。

与本系列的其他很多语言一样,Rhino 是一种动态类型的、基于对象的脚本语言,它可以简单地访问各种Java 类库。

Rhino 从JavaScript 中借用了很多语法,让程序员可以快速编写功能强大的程序。

最为明显的区别是,Rhino 不再使用语句结束符( ; ),放宽了变量声明规则,并且极大地简化了修改和检索对象属性的语法(没有求助于调用存取方法)。

由于Rhino 是JavaScript 的一种基于Java 的实现,所以对于Java 开发人员来说,它应该特别易于使用。

JavaScript 的(以及Rhino 的)语法非常类似于Java 编程语言。

这两种语言都采用了与Java 编程语言相似的循环和条件结构,并且遵循类似的语法模式来表示这些结构。

历史简介在开始学习Rhino 基础知识之前,先了解一下有关JavaScript 的起源和目的可能会非常有用,JavaScript 为Rhino 提供了很多独特的特性。

JavaScript 的历史与Web 浏览器动态表示和操作Web 页面内容的能力是相符合的。

JavaScript 的第一个版本(最初称为LiveScript)是由Netscape Communications 公司于1995 年发布的,它是Netscape Navigator 2.0 Web 浏览器的一部分。

JavaScript 打算为程序员提供一种简单而直观的方法,编写一些可以在Web 页面上下文中执行任务的简单脚本。

在随后的一年中,Microsoft 引入了JScript,它自己的用于Internet Explorer 的JavaScript 端口。

这两个版本的JavaScript 都包括一个基于对象的API,称为文档对象模型(Document Object Model)或DOM,用以访问和操作Web 页面的内容。

JavaScript 的第三个实现是一种新的脚本语言,称为EcmaScript,其目的是对自己和DOM 进行标准化。

不幸的是,Microsoft 和Netscape 都没有完全实现EcmaScript 标准,因此到今天都还存在兼容方面的问题。

随着Java 语言在20 世纪90 年代末期取得的成功,Netscape 计划发布Javagator,它是Navigator 中一个100% 的纯Java 实现。

虽然Javagator 从来没能开花结果,但是Netscape 对JavaScript 的移植(称为Rhino)已经经过时间的考验存活了下来。

Rhino 是JavaScript 1.5 脚本语言的一个100% 的纯Java 实现,不包含DOM API。

实际上,Rhino 有时仍然被当作Netscape 的基于Java 的JavaScript。

JavaScript 中的"Java"在Rhino 的第一个发行版本中,Netscape 显然想利用Java 编程语言所取得的成功。

在该公司自己的脚本语言中,很明显地从Java 语言中借用了一些基本的语法。

这使得它特别适合Java 开发人员学习和使用。

例如,考虑一下清单 1 中给出的Java 函数与Rhino 函数之间的相似性,Rhino 函数测试了给定的数字是否为素数:清单1. Rhino 函数:这个数字是素数吗?function isPrime (num){if (num <= 1) {print("Please enter a positive integer >= 2.")return false}var prime = truevar sqrRoot = Math.round(Math.sqrt(num))for (var n = 2; prime & n <= sqrRoot; ++n) {prime = (num % n != 0)}return prime}除了几处例外,该程序与Java 程序非常类似:圆括号用来分隔代码块。

for 和if 结构的语法与Java 语言的相同。

Rhino 与Java 语言采用相同的算术和条件操作符(例如,对sqrRoot变量的赋值),甚至可以支持类似的访问其他算术函数的方法。

Rhino 允许使用预先定义的布尔常量true 和false 。

虽然没有在这里显示,但您应该注意到,Rhino 的while 和do...while 循环的结构都与Java 语言的相同。

具体区别当然,Rhino 和Java 语言之间有一些显著的区别。

相关文档
最新文档