金蝶EAS - BOS工作笔记

1. 发布元数据没看到代码,可能有以下原因:1。发布方案路径(src,deploy,metadate)不对 2. eas 5.4 更新数据中心报文件找不到错误:到项目目录下的runtime 下config 下的 datasources.xml 删除 版本检查代码---第二段代码

3. 在eclipse中加入反编译插件,1。jad.exe 加入到C:\\WINDOWS\\system32

2. jadclipse_3.1.0.jar 加入到E:\\kingdeeEAS\\eas\\bos\\BOSModular\\platform\\eclipse\\plugins 4. 继承ListUI的界面,必须有个id字段

5. 加载onLoad方法出错,有可能是onLoad()方法,调用其他方法里面有错误代码 6. Invalid column name : 1. rowSet.getString(“xxx”); xxx不是有效的列名

2. 还有就是table的列名无效

7. 应用服务配置不正确:可能是:1.启动的服务器与运行的项目方案不一致

2.数据库服务没有启动 3.数据中心没有设置正确

8. BOS 中实体Entity 的ID 是通过oracle的Functions 功能实现ID自动变化,通过entity_pkmapping.properties 这个找到每个实体的对应BOSTYPE的值。 9. 使用BOS界面,弹出‘客户端配置错误,找不到第三方类’,

可能是:1.客户端代码有错误;

2.类不存在

10. 在单据里,得到各分录的记录:

1.通过界面得到:

ProposalDefinedInfo pdInfo ; //单据Info pdInfo. ProposalDefinedEntry1Collection();

//返回ProposalDefinedEntry1Collection集合

pdInfo. ProposalDefinedEntry2Collection();

//返回ProposalDefinedEntry2Collection集合

2.通过实体关系得到:

this.kdtEntry1 //得到kdtEntry1 这个表格的对象 this.kdtEntry2 //得到kdtEntry2 这个表格的对象 this.kdtEntry3 //得到kdtEntry3 这个表格的对象 11. 你想引用某个界面上所有功能: 1. 可以通过继承这个界面

2. 可以通过复制这个界面,再反编译实现类

12. 如果你得到一个实体的Info对象, 再取到实体各字段的值 1. Info.getString(“这里写字段的名称”);

2. Info.get()方法——得到各属性的值

13.发布BIM 或者是 BOS下的文件之前,最好是先校验下,如果校验不通过,那么发布肯定过

不了。

14.BIM 发布不成功,有可能是:1. 元数据缓存空间,有脏数据,清理下 2. 数据中心不对

4. 源代码有错误

3. 数据库服务器没启动

15. 当功能运行结果跟你想象中有不一致的地方,但是你的操作认为没有什么问题, 这种情况可以是服务器读取文件没有更新:

解决方法有:1. 你需要涮新下源文件src

2. 重新启动服务器

16. 得到记录集合的方式:1. 通过实体工厂(xxxEntryFactory)

2. 通过查询(xxxQuery)

以下是具体实现代码:

1. 通过实体工厂(xxxEntryFactory)

EntityViewInfo avevi = new EntityViewInfo();

FilterInfo avfilter = new FilterInfo();

avfilter.getFilterItems().add(new FilterItemInfo(\ avevi.setFilter(avfilter); AccountViewCollection

myavc

=

AccountViewFactory.getRemoteInstance().getAccountViewCollection(avevi); 2. 通过查询(xxxQuery)

IQueryExecutor iqec = QueryExecutorFactory

.getRemoteInstance(new MetaDataPK(

\

iqec.option().isAutoIgnoreZero = false; iqec.option().isAutoTranslateBoolean = true; iqec.option().isAutoTranslateEnum = true; EntityViewInfo vv = new EntityViewInfo(); FilterInfo ff = new FilterInfo(); ff.getFilterItems().add(new

FilterItemInfo(\ vv.setFilter(ff); iqec.setObjectView(vv);

IRowSet rowSet = iqec.executeQuery(); while (rowSet.next()) {}

FDCSQLBuilder builder = new FDCSQLBuilder();

builder.appendSql(\where fcontractid =? AND fstate = ? AND fisGuerdoned = 1\ builder.addParam(contractId); builder.addParam(\

IRowSet rowSet = builder.executeQuery(); if(rowSet.size() == 1) {

rowSet.next();

guerdonAmt = FDCHelper.toBigDecimal(rowSet.getBigDecimal(\ }

builder.clear();

3. 通过执行sql语句

17. 删除界面中的字段要注意:

1. 如果这个字段是在BIM下新建的,就要在BIM下去删除

如果这个字段是在BOS下新建的,就要在BOS下去删除

18.自定义F7实现步骤:

1. 在BOS界面,先拖入kDLabelContainer,再拖入一个F7:kDBizPromptBox

调整F7大小:boundLabelLength:100

2. 在F7控件绑定query 在F7属性里

queryInfo

com.kingdee.eas.custom.proposal.app.AsstActTypeQuery

3. 建立一个BOS界面实体与F7 的实体关系RelationShips

Association com.kingdee.eas.custom.nj.app.R_F7_AsstType_FA

1 --------0..1

4. 在BOS界面实体,加入一个连接属性:projectPlace,并选好对应关系

并在BOS界面实体对应表中加入F7实体ID,到相应表加入UI控件对应的字段, 4.1到BOS界面,对F7字段进行数据绑定

5. 在query里,增加关联的子对象,并将属性导入到query里去,然后发布 6. 将实体绑定到F7 7. 发布UI

18.1 制作自定义辅助核算项目F7

select * from T_BD_GeneralAsstActType t where t.fgroupid='iXhSqAEUEADgAWe2wKgA0gXSzQw=' select * from T_BD_GeneralAsstActTypeGroup 19. 弹出界面,并把值传到界面去

UIContext uiContext = new UIContext(this); uiContext.put(\

UIFactory.createUIFactory(UIFactoryName.MODEL).create(getEditUIName(), null, OprtState.VIEW).show();

20. 得到表格table的选中行的值:getSelectedKeyValue();

21. 如果你要在某列弹出某个单据query的信息,并把选中记录中的某个字段保存到数据库,并显示出来,出现内码问题? 1.你所指定的保存格式不存在 2.就是你指定的number,name值为空 22. 界面UI弹出自定义过滤界面:

1. protected CommonQueryDialog initCommonQueryDialog() {

if(commonQueryDialog != null) {

return commonQueryDialog; } else {

commonQueryDialog = super.initCommonQueryDialog(); commonQueryDialog.setWidth(400);

commonQueryDialog.addUserPanel(new ContractFullFilterUI(this, actionOnLoad)); return commonQueryDialog; } }

23. 得到外键属性的值:

1. 通过主实体得到得到该外键属性的id,如:entryInfo.get外键()对象(这个

对象只有id);先得到外键对象id,通过id得到外键对象

2. 得到外键对象,那么就可以得到外键实体的任何属性值

24. 初始化;界面

uiContext,

public void initUIToolBarLayout() {

super.initUIToolBarLayout();

kDBtnVoucher.setIcon(EASResource.getIcon(\ }

25. 点击‘table’时,提示‘你没有选中行’或者‘行的颜色没有变化’

可能: 1.table里没有id字段

2. tblMain.checkParsed(true);这段代码没写

26.出了有关系统‘代码底层的错误’,请检查自己的代码; 27.设置单元格Cell数字格式,对齐格式:

table.getColumn(columnName).getStyleAttributes().setNumberFormat(\0\

table.getColumn(columnName).getStyleAttributes().setHorizontalAlign(com.kingdee.bos.ctrl.kdf.util.style.Styles.HorizontalAlignment.RIGHT); 28.设置table可排序

tblMain.getSortMange().setSortAuto(true); 29.设置按钮图标:

kDWBtnRefresh.setIcon(EASResource.getIcon(\30.按钮绑定Action时,按钮变灰,把Action的使能属性变成true就行; 31.多条件查询:1.多条件合并查询:

EntityViewInfo view = new EntityViewInfo();

FilterInfo filter = new FilterInfo();

filter.getFilterItems().add(new FilterItemInfo(\ filter.getFilterItems().add(new FilterItemInfo(\ filter.getFilterItems().add(new FilterItemInfo(\

view.setFilter(filter);

EntityViewInfo view = new EntityViewInfo();

FilterInfo filter = new FilterInfo();

filter.getFilterItems().add(new contractId));

filter.getFilterItems().add(new FilterItemInfo(\ filter.getFilterItems().add(new FilterItemInfo(\ filter.getFilterItems().add(new FilterItemInfo(\ filter.setMaskString(\

view.setFilter(filter);

FilterItemInfo(\

2.多条件或查询:

32.过滤查询排序:

EntityViewInfo evi = new EntityViewInfo();

FilterInfo filterInfo = new FilterInfo(); //建立过滤条件 if(idSet!=null && idSet.size()>0) filterInfo.getFilterItems().add(new FilterItemInfo(\,idSet,CompareType.INCLUDE));

SorterItemCollection siColl = evi.getSorter();

siColl.add(new SorterItemInfo(\)); //需要排序的字段

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4