二开常见问题处理
金蝶云社区-冀长文
冀长文
1人赞赏了该文章 3,936次浏览 未经作者许可,禁止转载编辑于2018年10月22日 18:47:47
注意事项1. 分录不显示数据自己定义分录时,分录的首字母大写,数据虽保存成功,但是页面却不能正常显示数据。解决:手动把分录名称的首字母改为小写。2. 忽略静态化缓存影响使得页面完全重新渲染

解决: url中追加&renderModel=client参数3. 扩展页面调用标准页面方法报错在扩展页面中给信息块重新绑定了浮动方法,在该方法中调用标准页面的方法报错

解决: 在扩展页面只能调用标准页面的pulic的方法4. 附件上传报错

解决: 8.2的附件上传不支持多组件,并且id必须为webAttachment5. 表头获取值与分录获取值单据表头字段可以根据自身的类型通过对应的接口来调用该控件下的属性或方法,分录中的字段都是只能通过表格的接口来调用表格的方法.例如:获取表头中文本框的值: waf("#id").wafText("getValue");获取表格中某个文本框的值: $("#list2").wafGrid("getCell",rowid,列名);6. _self.getCurrentModel()报错

解决: 只有编辑界面才有_self.getCurrentModel(),列表界面没有7. 单据下推时报错单据下推时候报错,调试发现mainOrgName参数为null

解决: 重写对应单据Info类的getBizOrgPropetName方法,在该方法中返回当前的主业务组织

8. 保存前插事件方法中返回false不生效保存前插事件方法中发送ajax请求若响应为”success”则在ajax的success回调中返回false组织保存

解决: 在saveBefore的末尾中返回false9. 日期格式化页面上直接得到的日期是格林威治时间,在使用请求传递到后台时候一般先需要使用format方法进行格式化waf("#field_billDate").wafDatePicker("getValue").format("yyyy-MM-dd")10. Dep给分录新增字段配置页面配置字段加载不到该字段解决: dep中增加字段以后要启用,浏览器要清理缓存重新加载11. 信息块添加字段82版本差旅费报销单编辑页面费用明细分录信息块添加字段

解决: 配置页面去掉url参数中的&d=biz切换到旧版设计器中修改

12. 表格绑定自定义query无法配置字段表格绑定了自定义query但是配置字段时候没有数据,调试发现该query的queryPk为空所以该query加载不到

解决: query中定义主键13. Web登录报错

解决: 去掉本地的jdk环境并重启,否则会和EAS系统环境冲突从而登录报错14. 配置后台action预览时报错提示handler创建失败

解决: 服务器使用debugserver启动,在BOS上开发,开发以后需要把生成的event和handler导成jar包并放入到server\deploy\easweb.ear\eas_web.war\WEB-INF\lib\sp目录下15. 配置过滤条件EAS85环境设置过滤条件的时候一般不要直接写成表达式的格式,这样容易引起安全问题,可以使用waf.parseSql.getFilter("a","in",[1,2])方法传入设置的过滤条件获取格式化后的过滤条件16. 可以通过渲染前设置currentModel中的值的方式来设置默认值17. 按钮的功能与事件按钮在已经绑定了功能的情况下,再绑定click事件。click事件无效,两者只能二选一。功能的扩展性好,click事件相对直观18. wafList.js wafEdit.js中的方法可以直接在控制台通过_self调用19. 获取单据状态

解决: _self.getCurrentOperateState();20. 单据预览时候报错显示找不到元数据错误信息: com.kingdee.bos.metadata.MetaDataNotFoundException: Cannot findentity by BOSType[01C34327]. Because cannot find BOSType[01C34327] in index!解决: 重新发布业务单元21. EAS82版本差旅费报销单的费用明细分录对应的信息块添加字段控制台报错

解决: 去掉参数中的&d=biz切换到旧版本设计器下添加字段22. 修改单据时编辑页面分录数据显示不正确解决: 如果要给编辑页面分录表格赋初始值的时候最好能判断一下页面状态,否则会导致在查看界面点击内置修改按钮的时候跳转至编辑界面数据表格数据丢失,其实在model中已经查出来了但是又在赋初始值时冲掉了23. 列表页面显示表格单据编号列设置行融合不起作用,调试发现isRowSpan,rowSpans,colModel[i].[/i]rowspan参数均正常但editable属性为false导致该列未被当作行融合列解决方法: 配置界面删除该字段重新添加24. _self.getCurrentModel()modelwebEditOnloadHandleronload方法获取的25. 表格后台获取数据调试无论是列表页面的显示表格还是f7的显示表格在加载数据的时候都会执行到DataGridController.java的getGridDataEntity方法,在该方法中进行sql语句的拼接以及数据的查询,对该方法中的queryExecutor局部变量调用getSQL()方法可以看到具体执行的sql语句,从而可以判断数据表格的加载是否有问题.26. f7点击确定执行的方法: jquery.ui.f7.common.js_appendButtonPnl方法的confirm方法[i]

[/i]
给f7设置过滤条件的时候所调用的接口类型必须和自身的类型一致27. f7查看接口类型解决: _self.searchComponent("id")查看properties的subWidgetName属性[i]

[/i]

28. f7的弹框中默认按照姓名和编码检索可以通过defaultSearchItem属性修改:

[i]

[/i]

[i]

[/i]

29. 表格填完值以后使用getCell获取不到值[i]

[/i]
编辑表格中某个字段值填完以后若焦点未移出则使用表格的getCell方法获取不到所填写的值,可以在调用getCell方法之前先调用editstop方法30. 设置行融合只有在表格创建(grid.waf.js的createGridDOM方法)之前修改行融合的参数才能使得行融合生效isRowSpan=true rowSpans=”number,name,…” colModel. rowspan = true 说明: 第一步表示该表格有行融合,第二步设置了那些列需要行融合,第三步表示本列需要行融合

[i][i]

[/i][/i]

常见操作1. 设置附件管理的文件后面的删除不可用:waf("#webAttachment").webAttachment("deleteFileDisable",true)2. 设置分录中某个字段为必输:var colConfig = waf("#editGrid").wafGrid("getColumnConfig","material")colConfig.editoptions.validateJson.rules="required:true"waf("#editGrid").wafGrid("setColumnConfig","material",colConfig)3. EAS82差旅费报销单 费用明细分录,要去掉修改的图标和功能:[i][i]

[/i][/i]
为该页面绑定一个页面打开的后插事件,在该事件中使用代码$("#rowOverLayer_"+表格id).find(".actions.edit").unbind("click.editGrid").remove();4. 如果需要对分录的某个单元格设置为禁用(不可编辑)可以调用分录表格的锁定和解锁方法来实现5. 使用代码进行表格数据导出至excel

方法参数: exportToExcel(isAll,datas,title,expColumns,options)参数说明: isAll: 是否全部导出datas: 导出数据,数组(因为是从表格选择,所以一般为undefined)title:标题exportColumns:导出的列名options:参数(一般可以不传)6. 表头f7字段提交时候设置必输:waf("#field_payCondition").wafValidator("option","rules","required:true");waf("#field_payCondition").wafValidator("option","errMsg","required:'付款条件不能为空。'");7. 自定义格式化可以通过格式化类将特定的数据格式化成想要的格式,例如附件管理中将附件的名字格式化成超链接(做法: 自定义格式化类中return 一个a标签)8. 82升级85以后列表页面无法配置编辑与查看页面[i]版本升级后85环境的列表配置页面中编辑页面与查看页面下拉列表没有供选择的数据,82环境有

[/i]
[i][i]

[/i][/i]
原因: isNew属性表示是否是新建页面,因该单据并不是在85环境中直接新建则该属性为false所以响应中的该条数据并不能被拼接至下拉列表 解决: 打开编辑与查看页面的配置界面,保存 9. EAS82差旅费报销单的信息块中的f7设置过滤条件[i][i]

[/i][/i]
解决: ① 去掉导航栏url中&d=biz参数切换至旧版设计器 ②选中该f7配置获得焦点事件 ③设置过滤条件: waf("#entries_project_1").wafPromptStandard("option","filteritem","number='0119'");