金蝶EAS_BOS工作笔记

更新时间:2024-07-03 05:15:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

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(\)); //需要排序的字段

SorterItemInfo siInfo= siColl.get(0); //第一个需要排序的字段 siInfo.setSortType(SortType.ASCEND); //需要排序的字段升序 evi.setFilter(filterInfo); 33.设置默认第一行被选中:

protected void selectFirstRow() {

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的初始化:

BigDecimal addPayment = new BigDecimal(String.valueOf(0.00)); 39. 在子界面获取传递下来的数据

private void loadContext() {

int mode = ((Integer)this.getUIContext().get(\

AccountTableInfo accountTableInfo = (AccountTableInfo) this.getUIContext().get(\CtrlUnitInfo cuInfo = (CtrlUnitInfo) this.getUIContext().get(\

AsstAccountInfo asstAccountInfo = (AsstAccountInfo) this.getUIContext().get(\

AuxAccountEditUI ui = (AuxAccountEditUI) this.getUIContext().get(\}

40.初始化按钮属性(图标,标题,可见): 重写方法initWorkButton() {

super.initWorkButton();

actionCashflow.setEnabled(true); btnRemove.setEnabled(true); setButtonDefaultStyl(btnQuery);

btnQuery.setIcon(EASResource.getIcon(\ setButtonDefaultStyl(btnAttachment);

btnSubmit.setIcon(EASResource.getIcon(\ setButtonDefaultStyl(btnSubmit); }

com.kingdee.eas.basedata.assistant.PaymentTypeInfo();

pt.setId(com.kingdee.bos.util.BOSUuid.read(com.kingdee.eas.scm.sd.sale.util.SaleConstancreditCondition . putCondition ( customerInfo ,info.getCompany(), pt, com . kingdee . eas . billNumeric.put(com.kingdee.eas.scm.credit.CreditCondition.BILL_NUMERIC_AMOUNT,com.king

t.PAYMENTTYPEID_CREDITSALE));

scm . credit . CreditFormulaSceneEnum . ARBILL_VALUE,billNumeric) ;

dee.eas.fi.ar.app.util.ArServerUtils.readSubmitedReceivableBillCreditAmount(__bosContext ,creditCondition)); }

creditAmount=\; usedCreditAmount=\; creditBalance= 0;

isEspeciallyAudit = false; isWarning=false; isCancel=false; overDays=0;

if ( isOverspend || isTimeout ) {

msgHeader = creditCtrlResult.getMsgHeader();

isEspeciallyAudit = creditCtrlResult.isEspeciallyAudit(); isWarning = creditCtrlResult.isWarning(); isCancel = creditCtrlResult.isCancel(); }

msgBody = creditCtrlResult.getMsgBody(); overDays=creditCtrlResult.getOverDays();

creditAmount = creditCtrlResult . getCreditAmount ().toString() ; usedCreditAmount = creditCtrlResult . getUsedCreditAmount ().toString() ; creditCondition.setBillNumeric(billNumeric); creditCondition.setBillNumber(info.getNumber()); creditCondition.setBillDate(info.getBizDate());

creditCtrlResult = com . kingdee . eas . scm . credit . CreditControlFacadeFactory . isTimeout = creditCtrlResult.isTimeout(); isOverspend = creditCtrlResult . isOverspend ( ) ;

getLocalInstance ( __bosContext ).verifyCredit ( creditCondition ) ;

creditBalance = creditCtrlResult . getCreditBalance ().toString() ;

73. 单据生成HTML文件

TransferGUItoHTML ht = new TransferGUItoHTML(this); //EditUI实例 ht.transferToHtml(editData.getId().toString());

System.out.println(ht+\74. 重写排序

mainQuery.getSorter().clear();

mainQuery.getSorter().add(new SorterItemInfo(\ SorterItemInfo sortItem = mainQuery.getSorter().get(0); sortItem.setSortType(SortType.DESCEND);

this.getMainQuery().setFilter(filter);

75. 关于隐藏分录新增、删除按钮的示例代码

54版本的需要手工编辑代码,参考如下方法,将其加入到onload()中调用。 private void hidePanelButtons(KDTable table){ //隐藏按钮 Component c = table.getParent().getParent(); if (c instanceof DetailPanel) {

DetailPanel panel = (DetailPanel) c; //获取btn Component[] components = panel.getComponents(); for(int i = 0; i < components.length; i++){ Component component = components[i]; if (component instanceof KDPanel) { KDPanel kdPanel = (KDPanel) component; if(\panel.remove(kdPanel); }

if(\

Rectangle entryRect = new Rectangle(0, 0,table.getWidth(),table.getHeight()+ 29); kdPanel.setBounds(entryRect);

kdPanel.putClientProperty(\

panel.add(kdPanel, new KDLayout.Constraints(KDLayout.Constraints.ANCHOR_TOP | KDLayout.Constraints.ANCHOR_RIGHT | KDLayout.Constraints.ANCHOR_LEFT | KDLayout.Constraints.ANCHOR_BOTTOM , entryRect)); } } } } }

76. 分录新增,删除,插入前事件,写在Onload方法里

class TableBeforeAction implements BeforeActionListener {

public void beforeAction(BeforeActionEvent arg0) {

try {

if (arg0.getType() == BeforeActionEvent.ACTION_ADD_ROW) { }

// if (kdtPrtCheck() == true) { // arg0.setCancel(true); // }

}

}

} catch (Exception e) { }

e.printStackTrace();

// 给table设置action

super.kdtPRT.setBeforeAction(new TableBeforeAction());

分录新增,删除,插入后事件,写在Onload方法里

class TableAfterAction implements BeforeActionListener {

public void beforeAction(BeforeActionEvent arg0) { }

try { }

if (arg0.getType() == BeforeActionEvent.ACTION_ADD_ROW) { }

e.printStackTrace();

// if (kdtPrtCheck() == true) { // arg0.setCancel(true); // }

} catch (Exception e) {

}// AbstractCoreBillEditUI // 给table设置action

super.kdtPRT.setBeforeAction(new TableBeforeAction());

77.设置图片

URL url = ClassUtil.getResource(

\

ImageIcon icon = new ImageIcon(url); this.kDWorkButton1.setIcon(icon); kDWorkButton1.setIgnoreRepaint(true); kDWorkButton1.setOpaque(true);

78. 如何修改EAS登录LOGO

1、修改登录界面

C:\\DB\\eas\\client\\classloader\\patch\\exetools.jar

exetools.jar\\com\\kingdee\\eas\\exetools\\pic_login_update2.png

2、修改C:\\DB\\eas\\client\\lib\\client\\eas\\eas_resource_firstload_ico.jar里面的 \\resources\\ahead\\pic\\pic_login_logo_blue.png \\resources\\ahead\\pic\\pic_login_bg_blue.png

使用了个性化设置之后

C:\\kingdee\\eas\\client\\deploy\\images

79. 获取当月第一天日期; private Date getFirstDate() {

Calendar cal = new java.util.GregorianCalendar();

}

cal.setTime(new Date(System.currentTimeMillis())); cal.set(Calendar.DAY_OF_MONTH,1);

return cal.getTime(); 80. dialect 方言如何使用

sql.append(\正确的写法 /*dialect*/比上面少了一个空格 sql.append(\

81. 现在F7没有实现表格设置。每列的宽度是是KDTable的默认宽度。

如果要实现的话,在对话框show出来之前,这样调用:

for (int i = 0; i KDTableHelper.autoFitColumnWidth(table, i); 不过如果表格内容较多,这样做比较耗性能。

82. 二次开发“销售与分销”下的“发货通知单”:在studio视图下,给PostRequisition.entity 增加

了2个方法,发布entity后在java视图下可以看到生产的

AbstractPostRequisitionControllerBean、PostRequisitionControllerBeanEx,并且包含了新增的方法。

问题:在开发环境下调试,代码执行不到 PostRequisitionControllerBeanEx 中? studio视图:在entity的基础信息页签下有扩展属性栏,其中有个扩展属性

“controllerBeanEx=com.kingdee.....ControllerBeanEx”,只有entity中有此扩展信息才能使系统执行到 ControllerBeanEx 中。上边我遇到的问题的原因就在此。

那么如何增加这样的扩展信息呢? 1、自己修改entity源xml文件。

2、切换到bim视图下,单据增加且只需增加任意一个功能(啥功能都行,哪怕叫测试都行)后保存。

83. 如何按工作流节点设置单据中哪些字段可以修改,哪些字段不可以修改

1、为单据定义一个状态变量

2、在工作流流程中改变这个状态

3、编辑界面,通过状态来决定哪些数据项可以编辑

84. 组织单元无法删除

反启用组织架构并删除部门时,提示组织单元已经被参数引用,无法删除。 查询参数中引用组织的字段信息

select * from t_sys_entityref where frefentityalias_l2 like '参数值' 在参数中删除应该该组织的参数

select * from T_BAS_ParamItem where FOrgUnitID='要删除组织的id' or FControlUnitID='要删除组织的id'

delete from T_BAS_ParamItem where FOrgUnitID='要删除组织的id' or FControlUnitID='要删除组织的id'

84. 过滤条件保存为用户级方案,但其他用户仍可看到并允许修改??

这个问题是由于给用户分配了过滤方案管理的权限,所以具有这个权限的用户可以看到其他用户的用户级方案,如果过滤方案管理的权限不分配用户就无法查看修改,取消分配即可.

85.

对用户分别进行了[批量取消分配角色]和[批量取消分配权限]操作,删除了所有的角色和权限,在某个组织中,依然有一些权限项无法删除?

可以通过脚本删除用户的组织范围和权限,删除用户的组织范围和权限:

delete from t_pm_userorgperm where fowner in (select fid from t_pm_user where fnumber ='要删除用户的账号')

delete from t_pm_orgrange where fuserid in (select fid from t_pm_user where fnumber ='要删除用户的账号')

86. 87.

反写的功能可以通过配置BOTP来实现的,在配置BOTP的时候有一个反写的页签,直接在反写的页签里去指定去反写那个字段即可! 如何由一个属性的值去设置另外一个相关属性的值!

在bim视图下,字段的“属性”视窗里面,有“更新事件”,可以新建更新事件,由一个字段值去设置另外一个相关的值

88. 如何将自己定义的UI绑定到相对应的业务单元上?

在bim业务建模环境,右键业务单据,然后在弹出的功能菜单中选择“配置业务单元”,则可以绑定对应的UI,另外,也可以用文本编辑器打开对应的元数据文件XXX.bizunit,手工修改其中的editUIPK,或者listUIPK

89. EAS 中我添加了以个分录做排序?

在你的实现类中onload中加入如下代码

KDTSortManager sortManager = new KDTSortManager(table); sortManager.setSortAuto(true); sortManager.setClickCount(1);

for (int i = 0; i tablegetColumn(i).setSortable(true); }

90. EAS5.4服务器如何设置电脑内存大小

eas服务器推荐默认的配置内存大小是1024M。512M可能会运行非常慢。 如果只是测试,建议直接使用BIM工具,可以启动一个测试服务器。 更改的路径是:

eas\\Server\\server\\profiles\\server1\\bin\\set-server-env.bat SET JVM_INITIAL_HEAP_SIZE=256m SET JVM_MAX_HEAP_SIZE=1024m SET JVM_PERM_SIZE=128m SET JVM_MAX_PERM_SIZE=368m SET JVM_VERBOSE_GC=true SET JVM_CUSTOM_PARAMS=

91. 如在单位的机器上修改标准单据或新建自定义单据.希望部署到客户服务器上,应该拷贝

哪些文件?文件的路径是什么? 1. 通过“制作补丁”功能来实现

在BIM中通过“制作补丁”功能,可以将选中的元数据发布并打成管理控制台可以识别的补丁包。然后通过管理控制台将该补丁应用到服务器当中。 2.通过部署功能来实现

在BIM中将修改的单据进行发布,然后通过“部署”功能将所做的修改应用到本地或者远程服务器当中。 3.通过直接拷贝来实现

在BIM或者STUDIO中对目标单据进行发布,生成子系统树,然后切换到JAVA视图,

将相应的CLASS文件及资源(.properties)打成JAR包并拷贝到服务器的/server/lib/sp,/server/lib/目录当中。将修改后的元数据手工打包并拷贝到服务器的/server/metas(/sp)目录。同时将解决方案目录下的subsystem.xml(subsystem_bos.xml)与服务器上的同名文件进行合并

2. 建议将客户机的解决方案导入到单位机器上面,然后在该解决方案上面直接开发,然后

找本地eas环境部署生成sp-bim-meta.jar包

92. “帐套和解决方案版本不匹配”如何解决?

帐套和解决方案版本不匹配是因为当前解决方案的版本与数据中心的版本不一致导致的。

解决方案的版本保存在解决方案的\文件当中,如<version>6.2.0</version>表示主版本为6,小版本为2

数据中心的版本保存在表T_SYS_DATACENTER当中。可通过以下语句查得两个版本号:SELECT TOP 1 FMajor , FMinor FROM T_SYS_DATACENTER。

所以你可以通过“解决方案设置”功能来修改版本号,以与数据库中的版本号匹配。

93. 关闭窗口 this.uiWindow.close(); getUIWindow().close(); 94. new ObjectUuidPK(BOSUuid.read(id)) 生成BOSUuid 95. 模糊查询:

filter8.getFilterItems().add(new

FilterItemInfo(\

96. 列表界面打开前过滤

protected FilterInfo getDefaultFilterForQuery() {

}

String bcxyid = this.getUIContext().get(\FilterInfo filter = super.getDefaultFilterForQuery();

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

97. 将query转化成sql语句 protected void execQuery() {

}

IQueryExecutor exec = getQueryExecutor(mainQueryPK, mainQuery); try { }

catch (BOSException e) { }

super.execQuery();

e.printStackTrace();

System.out.println(\

98. BOS lincense 问题:

找到BOS工具的安装目录,将此目录

BOSModular\\bim\\eclipse\\plugins\\com.kingdee.bos.bim_5.4.0\\configTemplet\\licenses 下的license文件拷贝覆盖到BIM当前工作空间解决方案的runtime\\server\\profiles\\server1\\config\\license. 请注意查看licensefile.xml文件指定的license路径,直接覆盖即可。 99. 给Query传过滤条件

EntityViewInfo evi = new EntityViewInfo();

FilterInfo filterInfo = new FilterInfo(); //建立过滤条件 filterInfo.getFilterItems().add(

new FilterItemInfo(\ CompareType.EQUALS)); filterInfo.getFilterItems().add(

new FilterItemInfo(\ CompareType.EQUALS)); filterInfo.setMaskString(\ evi.setFilter(filterInfo);

if (mainQuery == null) {

mainQuery = new EntityViewInfo(); }

mainQuery.setFilter(filterInfo); //添加过滤条件 this.execQuery(); 100.界面之间传递参数

1. 收集父界面要传递给子界面的参数集

HashMap map = new HashMap();

map.put(\必须。被启动UI的父UI对象 map.put(\

map.put(\ map.put(\

map.put(\ IUIFactory uiFactory = null; uiFactory ); //以模态对话框方式启动 IUIWindow uiWindow = uiFactory

create(\被启动对象的类名称 */map); uiWindow.show();

2. 在子界面获取传递下来的数据 private void loadContext() {

int mode = ((Integer)this.getUIContext().get(\ AccountTableInfo

accountTableInfo

=

(AccountTableInfo)

this.getUIContext().get(\

CtrlUnitInfo cuInfo = (CtrlUnitInfo) this.getUIContext().get(\ AsstAccountInfo

asstAccountInfo

=

(AsstAccountInfo)

this.getUIContext().get(\

AuxAccountEditUI ui = (AuxAccountEditUI) this.getUIContext().get(\ }

101. 特别控件的初始化

=

UIFactory.createUIFactory\

1.使用枚举给ComboBox控件赋值 public void setReceiveType() {

this.kDComboBox2.removeAllItems(); List list = new List();

Iterator it = ReceiveType.iterator(); while (it.hasNext()) {

list.add(ReceiveType.getEnum(it.toString()).toString()); } } 方法一:

check.setSelectedIndex(1); //check 为下拉控件;

//setSelectedIndex(1) 是将下拉框选中第一个值

方法二:

check.setSelectedItem(ContractStateEnum.interim); //check 为下拉控件; // setSelectedItem(ContractStateEnum.interim) 是将下拉框选中值为interim枚举对象

2.使用值对象集合给ComboBox控件赋值 // 获取结算方式列表 IAsstActTypeDefault

AsstActTypeDefaultFactory.getRemoteInstance();

AsstActTypeDefaultCollectioni asstActTypeColl = iAsstActType

.getAsstActTypeDefaultCollection(\ AsstActTypeDefaultInfo defaultVal = null; int count = asstActTypeColl.size(); Object[] typeValue = new Object[count]; for (int i = 0; i < count; i++) {

AsstActTypeDefaultInfo asstActTypeColl.get(i);

if (value.isIsDefaultAccountPayable()) {

defaultVal = value; }

ObjectUuidPK pk = new

ObjectUuidPK(BOSUuid.read(value.getAsstActType().getString(\ AsstActTypeInfo asstInfo =

AsstActTypeFactory.getRemoteInstance().getAsstActTypeInfo(pk);

//cbi[i] = new ComBoxInfo(asstInfo, asstInfo.getName(), true); String typeName = asstInfo.getName(); String typeId = asstInfo.getId().toString();

String typeQueryName = asstInfo.getDefaultQueryName();

value

=

(AsstActTypeDefaultInfo)

iAsstActType

=

String typeTableName = asstInfo.getRealtionDataObject(); int csType = 0; //asstActTypeInfo.getCsType().getValue();

asstActType = new AsstActTypeUtils(typeName, typeId, typeTableName, typeQueryName, csType);

typeValue[i] = (Object) asstActType; }

///String strQueryName = \ this.kDComAccountCussentType.removeAllItems(); this.kDComAccountCussentType.addItems(typeValue); this.kDComAccountCussentType.setSelectedIndex(0); 102. /***关闭窗口*/

public boolean destroyWindow() { super.destoryWindow(); //做自己的一下销毁动作 } }

103. //如设置滚动条隐藏

this.getMainTable().setScrollStateVertical(KDTStyleConstants.SCROLL_STATE_HIDE);

104. 设置单元格的计算公式:

IRow row = null;

row = table.getRow(4);

row.getCell(5).setExpressions(\ row.getCell(6).setExpressions(\

104. listUI界面打开前进行过滤 在onLoad()调用 public void initFilter() {

String bcxyid = null;

if(EASRequest.attribute.get(\cxyid\

bcxyid = (String)EASRequest.attribute.get(\

EntityViewInfo evi = new EntityViewInfo();

FilterInfo filterInfo = new FilterInfo(); //建立过滤条件 filterInfo.getFilterItems().add(

new FilterItemInfo(\ CompareType.LIKE)); evi.setFilter(filterInfo);

if (mainQuery == null)

mainQuery = new EntityViewInfo(); mainQuery.setFilter(filterInfo); //添加过滤条件 this.execQuery(); }

105. 分录表格设置成单据F7,取值query中的值,解决长字符问题

KDTextField prmtBox = new KDTextField();

prmtBox.setEditable(true);

kdtE2.getColumn(\

String rowValue=null; String lwfbhtid=\

if(kdtE2.getRow(indexRow).getCell(\ { rowValue

kdtE2.getRow(indexRow).getCell(\ if(rowValue.length()>=33) { lwfbhtid=rowValue.substring(5,33);

kdtE2.getRow(indexRow).getCell(\

} }

106. 删除editdata 数据中分录行

SampleAuditEntryCollection saeColl = editData.getEntrys();

int size = saeColl.size(); for(int i = 0; i < size; i++) { saeColl.removeObject(0);

}

107. 关于组织f7集成问题

大家可通过以下方式进行集成 可不使用query方式集成组织f7 KDBizPromptBox promptDynQuery = new KDBizPromptBox(); promptDynQuery.setSelector(new AdminF7());

import com.kingdee.eas.basedata.org.client.f7.AdminF7; import com.kingdee.eas.basedata.org.client.f7.CompanyF7; import com.kingdee.eas.basedata.org.client.f7.CostCenterF7; import com.kingdee.eas.basedata.org.client.f7.CtrlF7; import com.kingdee.eas.basedata.org.client.f7.HROF7;

import com.kingdee.eas.basedata.org.client.f7.ProfitCenterF7;

=

import com.kingdee.eas.basedata.org.client.f7.PurchaseF7; import com.kingdee.eas.basedata.org.client.f7.QualityF7; import com.kingdee.eas.basedata.org.client.f7.SaleF7; import com.kingdee.eas.basedata.org.client.f7.StorageF7; import com.kingdee.eas.basedata.org.client.f7.TransportF7; 108. 列冻结

protected void freezeBillTableColumn() {

super.freezeBillTableColumn();

KDTable billListTable = getBillListTable();

int amount_col_index = billListTable.getColumn(\ KDTViewManager viewManager = billListTable.getViewManager(); viewManager.setFreezeView(-1, amount_col_index + 1); }

109.* 忽略cu隔离 protected boolean isIgnoreCUFilter() { return true; } 110. ftp://202.105.139.162 用户名:llj 密码:llj 111. /**获取附件数目*/ public static int getAttachmentCount(String boId) throws BOSException { FilterInfo filter = new FilterInfo(); EntityViewInfo viewInfo = new EntityViewInfo(); filter.getFilterItems().add(new FilterItemInfo(\ viewInfo.setFilter(filter); BoAttchAssoCollection coll = BoAttchAssoFactory.getRemoteInstance() .getBoAttchAssoCollection(viewInfo); return coll.size(); }

112. 填充分录

editData.put(\113. 获取资源信息

EASResource.getString( \114. 获取系统编码规则 (user 身份登陆去配置)

ICodingRuleManager iCodingRuleManager = CodingRuleManagerFactory .getLocalInstance(ctx);

if (iCodingRuleManager.isExist(editData, companyID)){

String autoNumber = iCodingRuleManager.getNumber(editData, companyID); // 系统编码 }

115. 建立query 关联其他实体需注意与实体的关联方式(内联,外联),可能出现lisit界面无法展现数据。 116. // 屏蔽分录右键 this.setQueryPreference(false);

117. 确认提示框:

MsgBox.showConfirm2(this, EASResource.getString(\确认删除吗?\)));

118.成本中心树形结构基础资料:

public static void initCostCenterF7(CoreUIObject coreui, KDBizPromptBox prmtOrgUnit, boolean hasCUFilter) { prmtOrgUnit .setQueryInfo(\ prmtOrgUnit.setEditFormat(\ prmtOrgUnit.setCommitFormat(\ prmtOrgUnit.setDisplayFormat(\ CostCenterF7 boxCostCenter = new CostCenterF7(coreui); prmtOrgUnit.setSelector(boxCostCenter); }

119. 树形结构加一个新表格步骤:

1. 元数据层,在UI界面的大纲视图下 2. 将一个kdtable控件拖入到tblMain表下

3. 将UI界面的缩小,再将tblMain拖出到最外层容器 4. 然后将kdtable拖入到树形容器中 ok啦! 120. 修改登录界面图标

F:\\Kingdee_Server\\eas\\server\\deploy\\fileserver.ear\\easWebClient\\lib\\client\\eas eas_resource_firstload_ico.jar

F:\\Kingdee_Server\\eas\\server\\deploy\\fileserver.ear\\easWebClient\\classloader\\patch exetools.jar

121. kDSpinner4 数字微调控件

SpinnerNumberModel startmonthLevelModel = new SpinnerNumberModel(3,3,8,1);

kDSpLevel.setModel(startmonthLevelModel); kDSpLevel.setValue(new Integer(3));

122. 客户端执行sql返回rowSet

IRowSet rs =

SQLExecutorFactory.getRemoteInstance(sql.toString()).executeSQL(); String ids[] = new String[rs.size()]; int i = 0;

while(rs.next())

ids[i++] = rs.getString(\); return ids;

123.列值显示对齐(靠左,靠右)

table.getColumn(j).getStyleAttributes().setHorizontalAlign(com.kingdee.bos.ctrl.kdf.util.style.Styles.HorizontalAlignment.RIGHT); 123. 获取当前单据状态

this.getOprtState().equalsIgnoreCase(OprtState.ADDNEW) 124. 创建id

BOSUuid bosId = BOSUuid.create(projectInfo.getBOSType()); // projectInfo实体对象

125. 获取编码规则

ICodingRuleManager iCodingRuleManager = CodingRuleManagerFactory

.getLocalInstance(ctx);

if (iCodingRuleManager.isExist(editData, companyID)) {

String autoNumber = iCodingRuleManager.getNumber(editData,

companyID);// 系统编码

}

126.

怎么样继承扩展标准产品的服务器端方法

对于二次开发,经常根据需要会对于标准产品的实现进行一些扩充,增加一些比如提交的逻辑处理,或者说在提中额外增加一些处理,这个时候就可以通过下面的方式进行扩展处理:

1、如果对于标准产品,没有新增加的方法,而又想扩展标准逻辑的功能,可以在相应的标准产品的Entity或者

中增加扩展属性 controllerBeanEx,然后这个扩展属性的值写为 用户继承标准 ControllerBean 的一个类名称可以是这样: 1)对于Entity:

用文本编辑器(最好是 XmlSpy)打开对应的entity文件,如 SaleOrder.entity,在多语言节点(“”)

具体的名称由实际的entiy名称确定. 2)对于Facade:

方法同entity的一样,打开的是Facade文件 127.查看审批意见query

com.kingdee.eas.base.multiapprove.app.MultiApproveQuery

128. 60开始,分录的删除新增等按钮已经直接暴露出来,可以直接引用,按需设置。 kdtEntrys_detailPanel.getRemoveLinesButton().setEnabled(false);

129. 配置编码规则的时候,把“不允许断号”选上后。在后台调用代码iCodingRuleManager.isUseIntermitNumber(objectBaseInfo, orgUnitID);返回是true。如果把“不允许断号”的勾去掉后,返回的是false。按字面理解,这个方法应当返回的是:规则是否使用断号。里面对这个方法的说明是检测指定编码规则,是否启用了断号支持功能”。

二次开发的原代码:

ICodingRuleManager iCodingRuleManager =

CodingRuleManagerFactory.getLocalInstance(ctx);

String orgUnitID = ContextUtil.getCurrentOrgUnit(ctx).getId().toString(); if (iCodingRuleManager.isExist(objectBaseInfo, orgUnitID)) {

if (!iCodingRuleManager.isAddView(objectBaseInfo, orgUnitID)); //是否新增显示 {

if(iCodingRuleManager.isUseIntermitNumber(objectBaseInfo, orgUnitID)); //是否允许断号

objectBaseInfo.setString(iCodingRuleManager.getNonbreakNumber(objectBaseInfo,orgUnitID)); else

objectBaseInfo.setString(iCodingRuleManager.getNumber(objectBaseInfo,orgUnitID));} }

iCodingRuleManager.getRuleStatus获取编码状态进行业务逻辑控制

130. EASBOS 单据在 审核后,如果已审核成功,则让系统调用一段SQL

增加一个脚本节点放在审核节点后并增加相应的连接弧 ,审核节点要输入到流程变量中 java.lang.StringBuffer sql = new StringBuffer(\ java.sql.Connection con =

com.kingdee.bos.framework.ejb.EJBFactory.getConnection(__bosContext); java.sql.Statement batchStatement = con.createStatement(); batchStatement.execute(sql.toString());

com.kingdee.util.db.SQLUtils.cleanup(batchStatement, con); com.kingdee.util.db.SQLUtils.cleanup(con); 131. 设置金额格式化

txtamount.setGroupingUsed(true);

txtamount.setHorizontalAlignment(4); txtamount.setRemoveingZeroInDispaly(false);

132. 行合计

protected boolean isFootVisible() {

return true; }

protected IRow appendFootRow() {

if(!isFootVisible()) return null; try {

List fieldSumList = new ArrayList(); fieldSumList.add(\); fieldSumList.add(\); fieldSumList.add(\); fieldSumList.add(\); fieldSumList.add(\);

for(int i = 1; i < dymicCols + 1; i++) fieldSumList.add(\ + i); if(fieldSumList.size() > 0) {

IRow footRow = null;

KDTFootManager footRowManager = tblMain.getFootManager(); if(footRowManager == null) {

String total =

EASResource.getString(\g_Total\);

footRowManager = new KDTFootManager(tblMain); footRowManager.addFootView();

tblMain.setFootManager(footRowManager); footRow = footRowManager.addFootRow(0);

footRow.getStyleAttributes().setHorizontalAlign(com.kingdee.bos.ctrl.kdf.util.style.Styles.HorizontalAlignment.getAlignment(\));

tblMain.getIndexColumn().setWidthAdjustMode((short)1); tblMain.getIndexColumn().setWidth(30); footRowManager.addIndexText(0, total); } else {

footRow = footRowManager.getFootRow(0); }

int columnCount = tblMain.getColumnCount(); for(int c = 0; c < columnCount; c++) {

String fieldName = tblMain.getColumn(c).getKey(); for(int i = 0; i < fieldSumList.size(); i++) {

String colName = (String)fieldSumList.get(i); if(colName.equalsIgnoreCase(fieldName)) {

ICell cell = footRow.getCell(c);

cell.getStyleAttributes().setNumberFormat(\);

cell.getStyleAttributes().setHorizontalAlign(com.kingdee.bos.ctrl.kdf.util.style.Styles.HorizontalAlignment.getAlignment(\));

cell.getStyleAttributes().setFontColor(java.awt.Color.BLACK); cell.setValue(amountMap.get(colName)); } }

}

footRow.getStyleAttributes().setBackground(new java.awt.Color(246, 246, 191));

return footRow; } }

catch(Exception E) {

E.printStackTrace(); }

return null; }

133.分录行数据绑定(代码)

PlanEntryInfo entry = new PlanEntryInfo(); entry.setProjectId(projectId); entry.setExpenseTypeId(typeId); addRow.setUserObject(entry);

134.table 行树状结构

CellTreeNode treeNode = new CellTreeNode(); treeNode.addClickListener(payNodeClick); treeNode.setValue(\); treeNode.setTreeLevel(0); treeNode.setCollapse(true); treeNode.setHasChildren(true);

row.getCell(\).setValue(treeNode);

row.getCell(\).getStyleAttributes().setLocked(false); 135. 树型节点过滤

public void initTree() throws Exception{ super.initTree();

com.kingdee.eas.custom.process.client.ProjectTreeBuilder projectTreeBuilder = new

com.kingdee.eas.custom.process.client.ProjectTreeBuilder(); projectTreeBuilder.buildTree(this, treeMain, actionOnLoad); // mainQuery = new EntityViewInfo();

// FilterInfo filterInfo = new FilterInfo(); //建立过滤条件

// filterInfo.getFilterItems().add(new FilterItemInfo(\Integer(4),CompareType.LESS_EQUALS));

// treeBuilder = TreeBuilderFactory.createTreeBuilder(new DefaultLNTreeNodeCtrl(ProjectManagerFactory.getRemoteInstance()) // , getTreeInitialLevel(), getTreeExpandLevel(), filterInfo); // treeBuilder.buildTree(treeMain); // TreeModel treeModel = new

KingdeeTreeModel((DefaultKingdeeTreeNode)treeMain.getModel().getRoot());

// treeMain.setModel(treeModel); // getRootNode() ; }

136. /*** 继承CoreBillEditUI方法 * 去除排序的方法*/

protected void initListener() {

}

if (getDetailTable() != null) { }

getDetailTable().addKDTSelectListener(new

public void tableSelectChanged(KDTSelectEvent e) { }

try { }

tblDetail_tableSelectChanged(e); handUIException(exc); } catch (Exception exc) {

KDTSelectListener() {

});

137. 获取列名(比如:name)

String key = kdtEntrys.getColumnKey(e.getColIndex()); //e. getColIndex();当前点击的列号(第几列)

138. //去除分录索引列中的值

kdtEntrys.getIndexColumn().setTextVisible(false);

139.关闭校验

protected boolean checkBeforeWindowClosing() {

}

return false;

140.修改页签名称

paneBIZLayerControl27.add(pageThree,\技术改造项目\ paneBIZLayerControl27.remove(this.pageTwo); changePage(pageThree); 141. 获取表格行中布尔值 boolean selected =

((Boolean)kDTable1.getRow(i).getCell(ISSELECT_CELL).getValue()).booleanValue();

142. // 检查单据是否在工作流中 FDCClientUtils.checkBillInWorkflow(this, id); 143. //String 转 Date

Calendar time=Calendar.getInstance();

if(month!=null&&!\.equals(month)&&year!=null&&!\.equals(year)){ time.clear();

time.set(Calendar.YEAR,Integer.parseInt(year));

time.set(Calendar.MONTH,Integer.parseInt(month)-1);//注意,Calendar

对象默认一月为0

day=time.getActualMaximum(Calendar.DAY_OF_MONTH);//本月份的天数 time.set(Calendar.DAY_OF_MONTH,day); }

144.获取所选行号

int selectRows[] = KDTableUtil.getSelectedRows(tblMain); 145.弹出财务组织

bpbCompany.setSelector(companyf7);

bpbCompany.setFilterInfoProducer(FilterInfoProducerFactory.getOrgUnitFilterInfoProducer(companyf7));

if(getDefaultMainBizOrg() instanceof CompanyOrgUnitInfo) company = (CompanyOrgUnitInfo)getDefaultMainBizOrg(); private CompanyF7 generateCompanyF7() {

CompanyF7 companyF7 = new CompanyF7(); companyF7.setShowAssistantOrg(true); companyF7.setIsCUFilter(false); companyF7.setIsShowSub(true); companyF7.setShowVirtual(true);

companyF7.setPermissionItem(\); return companyF7; }

146.客户端执行sql

ISQLExecutor sqlExe =

SQLExecutorFactory.getRemoteInstance(sb.toString()); IRowSet rs = sqlExe.executeSQL(); if(rs.size() > 0)

for(; rs.next(); rs.updateBigDecimal(\, creditAmount)) { rs.updateBigDecimal(\, debitAmount); }

147.query显示前字段值更新

protected void getRowSetBeforeFillTable(IRowSet rowSet) {

super.getRowSetBeforeFillTable(rowSet); try {

rowSet.beforeFirst(); while(rowSet.next()){

String id = rowSet.getString(\); ContractMakeInfo cmInfo =

.getContractMakeInfo(new ObjectUuidPK(id));

ContractMakeFactory.getRemoteInstance()

if(cmInfo.getContactState()!=null){ //check

rowSet.updateObject(\,

ContractStateEnum.getEnum(cmInfo.getContactState().getValue())); }

148.日期区间条件查询

Date date = (Date)this.date.getValue(); //执行开始日期 Date toDate = (Date)this.toDate.getValue(); //执行结束日期 if (date != null) {

calendar = Calendar.getInstance(); calendar.setTime(date);

calendar.add(Calendar.DATE, 1);

calendar.set(calendar.get(Calendar.YEAR), calendar

.get(Calendar.MONTH),

}

if(cmInfo.getCheck()!=null){ //check } }

}

e.printStackTrace(); e.printStackTrace(); e.printStackTrace(); } catch (SQLException e) { } catch (EASBizException e) { } catch (BOSException e) {

rowSet.updateObject(\,

PerformStateEnum.getEnum(cmInfo.getCheck().getValue()));

calendar.get(Calendar.DATE),23, 59, 59);

filterInfo.getFilterItems().add(

new

FilterItemInfo(\,calendar.getTime(),CompareType.GREATER_EQUALS));

}

if (toDate != null) {

calendar = Calendar.getInstance(); calendar.setTime(toDate); calendar.add(Calendar.DATE, 1);

calendar.set(calendar.get(Calendar.YEAR), calendar

.get(Calendar.MONTH), calendar.get(Calendar.DATE),23,

59, 59);

filterInfo.getFilterItems().add(

new

FilterItemInfo(\,calendar.getTime(),CompareType.LESS_EQUALS));

}

149:编码规则:业务集成 ”新增显示且不允许断号” 需要设置实体扩展属性CRAddNoBreak

为true

ICodingRuleManager iCodingRuleManager = CodingRuleManagerFactory.getRemoteInstance();

if (iCodingRuleManager.isExist(projectInfo, companyID)) {

if(iCodingRuleManager.isUseIntermitNumber(projectInfo, companyID)){//不允许断号

autoNumber = iCodingRuleManager.readNumber(projectInfo,companyID);// 系统编码 }else{

RuleStatus rs = iCodingRuleManager.getRuleStatus(projectInfo, companyID);

autoNumber = iCodingRuleManager.getNumber(projectInfo,companyID);// 系统编码

150:分录表格编辑结束事件

protected void kdtEntrys_editStopped(KDTEditEvent e) throws Exception { super.kdtEntrys_editStopped(e);

String cloumnName = kdtEntrys.getColumn(e.getColIndex()).getKey(); if(\.equals(cloumnName)){//编辑的列名 int rowIndex = e.getRowIndex();//编辑的行号 if(e.getValue() == null) return; } }

151:多个filter联合过滤

filter.mergeFilter(encryptFilter, \

本文来源:https://www.bwwdw.com/article/2es.html

Top