金蝶EASBOS工作笔记要点.docx
- 文档编号:30269287
- 上传时间:2023-08-13
- 格式:DOCX
- 页数:50
- 大小:41.63KB
金蝶EASBOS工作笔记要点.docx
《金蝶EASBOS工作笔记要点.docx》由会员分享,可在线阅读,更多相关《金蝶EASBOS工作笔记要点.docx(50页珍藏版)》请在冰豆网上搜索。
金蝶EASBOS工作笔记要点
1.发布元数据没看到代码,可能有以下原因:
1。
发布方案路径(src,deploy,metadate)不对
2.eas5.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.Invalidcolumnname:
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.通过界面得到:
ProposalDefinedInfopdInfo;//单据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.数据中心不对
3.数据库服务器没启动
4.源代码有错误
15.当功能运行结果跟你想象中有不一致的地方,但是你的操作认为没有什么问题,
这种情况可以是服务器读取文件没有更新:
解决方法有:
1.你需要涮新下源文件src
2.重新启动服务器
16.得到记录集合的方式:
1.通过实体工厂(xxxEntryFactory)
2.通过查询(xxxQuery)
以下是具体实现代码:
1.通过实体工厂(xxxEntryFactory)
EntityViewInfoavevi=newEntityViewInfo();
FilterInfoavfilter=newFilterInfo();
avfilter.getFilterItems().add(newFilterItemInfo("id",accountId));
avevi.setFilter(avfilter);
AccountViewCollectionmyavc=AccountViewFactory.getRemoteInstance().getAccountViewCollection(avevi);
2.通过查询(xxxQuery)
IQueryExecutoriqec=QueryExecutorFactory
.getRemoteInstance(newMetaDataPK(
"com.kingdee.eas.custom.proposal.app","AsstActTypeQuery"));
iqec.option().isAutoIgnoreZero=false;
iqec.option().isAutoTranslateBoolean=true;
iqec.option().isAutoTranslateEnum=true;
EntityViewInfovv=newEntityViewInfo();
FilterInfoff=newFilterInfo();
ff.getFilterItems().add(newFilterItemInfo("name",row.getCell("accoutView").getValue().toString()));
vv.setFilter(ff);
iqec.setObjectView(vv);
IRowSetrowSet=iqec.executeQuery();
while(rowSet.next()){}
3.通过执行sql语句
FDCSQLBuilderbuilder=newFDCSQLBuilder();
builder.appendSql("selectsum(famount)asamountfromT_CON_GuerdonBillwherefcontractid=?
ANDfstate=?
ANDfisGuerdoned=1");
builder.addParam(contractId);
builder.addParam("4AUDITTED");
IRowSetrowSet=builder.executeQuery();
if(rowSet.size()==1)
{
rowSet.next();
guerdonAmt=FDCHelper.toBigDecimal(rowSet.getBigDecimal("amount"));
}
builder.clear();
17.删除界面中的字段要注意:
1.如果这个字段是在BIM下新建的,就要在BIM下去删除
如果这个字段是在BOS下新建的,就要在BOS下去删除
18.自定义F7实现步骤:
1.在BOS界面,先拖入kDLabelContainer,再拖入一个F7:
kDBizPromptBox
调整F7大小:
boundLabelLength:
100
2.在F7控件绑定query在F7属性里
queryInfocom.kingdee.eas.custom.proposal.app.AsstActTypeQuery
3.建立一个BOS界面实体与F7的实体关系RelationShips
Associationcom.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*fromT_BD_GeneralAsstActTypetwheret.fgroupid='iXhSqAEUEADgAWe2wKgA0gXSzQw='
select*fromT_BD_GeneralAsstActTypeGroup
19.弹出界面,并把值传到界面去
UIContextuiContext=newUIContext(this);
uiContext.put("ID",getSelectedKeyValue());
UIFactory.createUIFactory(UIFactoryName.MODEL).create(getEditUIName(),uiContext,null,OprtState.VIEW).show();
20.得到表格table的选中行的值:
getSelectedKeyValue();
21.如果你要在某列弹出某个单据query的信息,并把选中记录中的某个字段保存到数据库,并显示出来,出现内码问题?
1.你所指定的保存格式不存在
2.就是你指定的number,name值为空
22.界面UI弹出自定义过滤界面:
1.protectedCommonQueryDialoginitCommonQueryDialog()
{
if(commonQueryDialog!
=null)
{
returncommonQueryDialog;
}else
{
commonQueryDialog=super.initCommonQueryDialog();
commonQueryDialog.setWidth(400);
commonQueryDialog.addUserPanel(newContractFullFilterUI(this,actionOnLoad));
returncommonQueryDialog;
}
}
23.得到外键属性的值:
1.通过主实体得到得到该外键属性的id,如:
entryInfo.get外键()对象(这个对象只有id);先得到外键对象id,通过id得到外键对象
2.得到外键对象,那么就可以得到外键实体的任何属性值
24.初始化;界面
publicvoidinitUIToolBarLayout()
{
super.initUIToolBarLayout();
kDBtnVoucher.setIcon(EASResource.getIcon("imgTbtn_auditing"));
}
25.点击‘table’时,提示‘你没有选中行’或者‘行的颜色没有变化’
可能:
1.table里没有id字段
2.tblMain.checkParsed(true);这段代码没写
26.出了有关系统‘代码底层的错误’,请检查自己的代码;
27.设置单元格Cell数字格式,对齐格式:
table.getColumn(columnName).getStyleAttributes().setNumberFormat("#,##0.00;-#,##0.00");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("imgTbtn_refresh"));
30.按钮绑定Action时,按钮变灰,把Action的使能属性变成true就行;
31.多条件查询:
1.多条件合并查询:
EntityViewInfoview=newEntityViewInfo();
FilterInfofilter=newFilterInfo();
filter.getFilterItems().add(newFilterItemInfo("state","4AUDITTED"));
filter.getFilterItems().add(newFilterItemInfo("state","8VISA"));
filter.getFilterItems().add(newFilterItemInfo("state","7ANNOUNCE"));
view.setFilter(filter);
2.多条件或查询:
EntityViewInfoview=newEntityViewInfo();
FilterInfofilter=newFilterInfo();
filter.getFilterItems().add(newFilterItemInfo("contractBill.id",contractId));
filter.getFilterItems().add(newFilterItemInfo("state","4AUDITTED"));
filter.getFilterItems().add(newFilterItemInfo("state","8VISA"));
filter.getFilterItems().add(newFilterItemInfo("state","7ANNOUNCE"));
filter.setMaskString("#0and(#1or#2or#3)");
view.setFilter(filter);
32.过滤查询排序:
EntityViewInfoevi=newEntityViewInfo();
FilterInfofilterInfo=newFilterInfo();//建立过滤条件
if(idSet!
=null&&idSet.size()>0)
filterInfo.getFilterItems().add(newFilterItemInfo("id",idSet,CompareType.INCLUDE));
SorterItemCollectionsiColl=evi.getSorter();
siColl.add(newSorterItemInfo("longNumber"));//需要排序的字段
SorterItemInfosiInfo=siColl.get(0);//第一个需要排序的字段
siInfo.setSortType(SortType.ASCEND);//需要排序的字段升序
evi.setFilter(filterInfo);
33.设置默认第一行被选中:
protectedvoidselectFirstRow(){
if(!
isSelectForTable()&&tblPaymentBill.getRow(0)!
=null&&tblMain.getRow(0)!
=null)
{
tblPaymentBill.getSelectManager().select(0,0);
tblMain.getSelectManager().select(0,0);
}
}
34.慎重使用---在循环里去比较数值,这种情况尽量用过滤
35.发布后,找不到代码,检查下发布路径
36.用代码生成ID:
BOSUuid.create(menuItemInfo.getBOSType())
37.BigDecimal的加,减,乘,除
加:
addPayment=addPayment.add(paymentInfo.getLocalAmt());
减:
addPayment=addPayment.subtract(paymentInfo.getLocalAmt());
乘:
addPayment=addPayment.multiply(paymentInfo.getLocalAmt());
除:
addPayment=addPayment.divide(paymentInfo.getLocalAmt(),int);
BigDecimal数据取整数:
intValue();
BigDecimal数据比较,取大数据:
max();
38.BigDecimal的初始化:
BigDecimaladdPayment=newBigDecimal(String.valueOf(0.00));
39.在子界面获取传递下来的数据
privatevoidloadContext()
{
intmode=((Integer)this.getUIContext().get("EASMode")).intValue();
AccountTableInfoaccountTableInfo=(AccountTableInfo)this.getUIContext().get("table");
CtrlUnitInfocuInfo=(CtrlUnitInfo)this.getUIContext().get("cu");
AsstAccountInfoasstAccountInfo=(AsstAccountInfo)this.getUIContext().get("auxAccount");
AuxAccountEditUIui=(AuxAccountEditUI)this.getUIContext().get("Owner");
}
40.初始化按钮属性(图标,标题,可见):
重写方法initWorkButton()
{
super.initWorkButton();
actionCashflow.setEnabled(true);
btnRemove.setEnabled(true);
setButtonDefaultStyl(btnQuery);
btnQuery.setIcon(EASResource.getIcon("imgTbtn_filter"));
setButtonDefaultStyl(btnAttachment);
btnSubmit.setIcon(EASResource.getIcon("imgTbtn_submit"));
setButtonDefaultStyl(btnSubmit);
}
41.隐藏列:
tblMain.getColumn("entries.originalAmount").getStyleAttributes().setHided(true);
42.冻结表:
tblMain.getStyleAttributes().setLocked(true);
43.tblMain.getDataRequestManager().setDataRequestMode
(1);
tblMain.getSelectManager().setSelectMode(10);、
44.对界面输入的字段进行校验:
调用方法:
verifyInput(ActionEvente){
VerifyInputUtil.verifyNull(this,txttitle,"主题");//判断是否为空
if(finAuditorMap==null||finAuditorMap.size()==0){
MsgBox.showError(this,"请选择至少一位财务审批人!
");
SysUtil.abort();
}
}
对界面分录输入的字段进行校验:
for(inti=0,size=this.kdtEntrys.getRowCount();i VerifyInputUtil.verifyKDTCellNull(this,kdtEntrys,i, "sellApplyBillEntry"); VerifyInputUtil.verifyKDTCellNull(this,kdtEntrys,i,"oldAmount"); VerifyInputUtil.verifyKDTCellNull(this,kdtEntrys,i,"currency"); VerifyInputUtil.verifyKDTCellNull(this,kdtEntrys,i,"exRate"); VerifyInputUtil.verifyKDTCellNull(this,kdtEntrys,i,"amount"); } 45.得到当前用户id userId=((UserInfo)SysContext.getSysContext().getCurrentUser()).getId().toString(); 46./**校验表格是否被选中行**/ publicvoidisSelectRow(KDTabletable) { if(table.getRowCount()==0||table.getSelectManager().size()==0) { MsgBox.showWarning(this,EASResource.getString("com.kingdee.eas.framework .FrameWorkResource.Msg_MustSelected")); SysUtil.abort(); } } 47.模块菜单图标——imgm*按钮图标——imgTbtn* 49.KDLabelkDStartupImage;设置图片 javax.swing.Iconbg=EASResource.getIcon("imgGuide_pic338"); kDStartupImage.setIcon(bg); 50.一般控件放在Panel里就可以了,向导式数据录入,可以通过控制Panel的显示达到 51.在表格的某列放置一个checkbox: iRow.getCell("choose").setValue(Boolean.FALSE); 51.窗口关闭: getUIWindow().close(); 52.获取当前活动的行的行号: intcurrRow=tblMain.getSelectManager().getActiveRowIndex(); 53.新增分绿的图标: imgTbtn_addline,删除分录的图标: imgTbtn_deleteline 54.删除行(包括多行删除): intactiveIndex[]=KDTableUtil.getSelectedRows(kDTable1); if(activeIndex
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 金蝶 EASBOS 工作 笔记 要点