Studio新建的UI发布只能看到抽象类的问题
在导入了新的解决方案之后,在二次开发时进行新建UI,进行发布,但是在代码视图中只能看到抽象类,没有其他的代码。
对于客户二次开发中用户自定义的单据才生成实现类,但发现BOS Studio新建的ui元数据自定义标记为
需要把ToolCommon 插件下
(E:\\kingdee\\bos\\BOSModular\\boscommon\\eclipse\\plugins\\com.kingdee.bos.toolcommon)的 toolcommon.properties 这个文件中的isDevelopVersion=true 改为: isDevelopVersion=false
如何修改UI的父类?
如何修改EditUI绑定的实体Entity?
点击UI,选择左边浏览方式“大纲”。选择Data Objects 的editData(查询对象)
设置由自己定义的一个Entity元素据。 Java源码会有这样一句话:
editData = (com.kingdee.eas.fi.fi_cs.CsAccountViewInfo)ov; 其中CsAccountViewInfo是自己定义的一个Entity。而com.kingdee.eas.fi.fi_cs则是他的路径。
如何修改ListUI绑定的查询Query?
解决:
点击UI,选择左边浏览方式“大纲”。选择Data Objects 的mainQuery(查询对象) 设置由自己定义的一个Query元素据。 Java源码会有这样一句话:
mainQueryPK = new MetaDataPK(\其中CsAccountViewQuery是自己定义的一个Query。而com.kingdee.eas.fi.fi_cs.app则是他的路径。
将一个元数据从一个文件夹直接拉到另外一个文件夹,打开文件的时候会报错误
com.kingdee.bos.engine.MDParseError 解决:
把元数据从一个文件夹移到另一个文件夹不能直接拉。需要用复制功能,并且只能够在EAS-BOS的工作透视图下。
如果在其他视图下进行操作,将无法复原。
导出sql的时候CreateTable.sql无法创建table,oracle和sqlserver定义的类型有什么不一致
原因:
导出数据表会自动生成一些脚本,但是选择oracle时,实际导出的却是sqlserver的脚本。导出有问题,oracle和sqlserver导出的都是sqlserver的脚本。 解决:
认清oracle和sqlserver定义的类型有什么不一致。
Oracle的Date等同于sqlserver的DateTime,nvarchar2等同于sqlserver的nvarchar。Varchar2等同于sqlserver的varchar。
com.kingdee.bos.metadata.MetaDataNotFoundException: Cannot found metadata BOSType[null]
原因:
没有重写ListUI的getBizInterface() 方法。
解决:一定要重新实现ListUI和EditUI的getBizInterface()方法,重新实现ListUI的getBizInterface()方法问题解决。
keyFiled没有设置,请重写getFiledName()方法。
解决:
在设置query元数据的时候没有配置好主键,一定要设置主键
无法实现字段排序
解决:在*UI.java文件上面添加方法
protected void tblMain_tableClicked(KDTMouseEvent e) throws Exception { //覆盖原方法
super.tblMain_tableClicked(e);
}
该方法会实现父类的排序功能。
备注:tblMain_tableClicked是指双击的事件。一般用在查询页面。 还有一个tblMain_tableSelectChanged是指点击时触发的事件。
日志操作写错:指标录入(分配)审核写成了指标录入(分配)修改。
原因:审核,反审核的操作最后都执行了修改的操作。所以就将日志文件改成了修改。而不是审核或者反审核。
分析:日志操作一般在.log文件上面做修改。
比如说这个问题。日志文件为指标管理属于集中支付模块,gov_biz.log在这个模块的源文件下面gov/biz/。一般添加日志在.log文件的日志项。选择某个目录,为其添加日志项,组名,别名都需要每一层每一层写清楚(这会自动默认上下级关系)。接着选定引用对象,(有两种对象:引用对象和功能对象)。功能对象还不是很了解,引用对象是一个实体。接着选定某些引用方法,意思就是这些方法触发的时候写入日志。
另外还有一个方法写入日志。直接在某个按钮操作调用写日志方法。该方法在
GovBasedataUtils是基础数据管理公用函数及接口。方法名为setOperLog,该方法有两个,具备不同的参数。选择所需要的方法调用。 备注:
针对这个bug需要注意一个空指针的问题,如果直接调用父类的actionPassAudit_actionPerforme的方法,会出现这个问题。原因是有refresh(e)方法进行刷新。所以不能调用父类的方法,自己重写。修改完日志的时候,还需要在文件菜单中同步一下日志项数据。setOperLog方法是写log进入操作对象这个字段。而不是写入操作这个字段。这点需要注意。
进入基础资料关联管理进行修改,删除的时候,日志操作出现字符串,没有正确显示操作对象
分析:首先检查日志有没有出错,没有出错的话可在java文件中进行修改。因为是删除和修改操作,所以我们可以重写父类的删除修改操作,添加一个写日志的操作。 解决:首先找到该Java文件: GovBaseDocBizRefListUI.java。 重写actionEdit_actionPerformed和 actionRemove_actionPerformed方法。 (GovBaseDocBizRefInfo) getBizInterface().getValue(new ObjectUuidPK(keyValue),getSelectorItemCols())是用来得到自己定义的对象这里是GovBaseDocBizRefInfo。而该对象的数据则用getSelectorItemCols()方法来获取。最后则是自己定义的写log的方法。
在改bug的过程中,还出现一个问题,就是写日志操作必须在修改和删除操作之前执行,否则会出现一些意外问题,比如说写日志写的不是当前选择的数据,而是选择第一条数据。还有就是出现删除操作提示记录找不到。这都是因为把写日志操作放在了修改和删除操作之后导致的。原因是如果是修改操作后返回的是第一条数据,修改完自然写的就是第一条数据的日志了。如果先删除再写日志的话肯定得不到对象,因为被先删除了,所以会出现提示。
无法启动debugserver.bat,debugserver窗口自动关闭。
解决:
到W:\\apusic\\domains\\server1路径下将server.xml文件删除即可解决。
Oracle sql语句报错:“未明确定义列”
解决:
在表关联中出现了相同的字段名字,给与一个别名就可以解决。