用友NC二次开发一些经验以及处理的问题

2020-04-14 01:06

用友NC二次开发一些经验以及处理的问题

SQL数据结构UI

1. 参照开发

系统参照的用法

UIRefPane ref = new UIRefPane();

Ref.setRefNodeName(nc.vo.bd.ref.RefNodeNameConst.DEPTDOC);

nc.ui.bd.ref.IBusiType这个类里定义了参照对应的具体类 自定义参照

自己定义的参照类一般都继承自nc.ui.bd.ref.AbstractRefModel这个抽象类 下面列举一些常用的方法:

public String[] getFieldCode() // 返回参照字段对应的表字段编码 public String[] getFieldName() //返回参照字段对应的显示名称 public String getPkFieldCode() //返回主键字段编码 public String getRefTitle() //返回参照名称

public String getTableName() //返回查询的表名称,可以是表连接语句 public String[] getHiddenFieldCode() //返回参照的隐藏字段 public int getDefaultFieldCount() //返回参照的默认字段数量 public String getWherePart() //返回查询条件

如果需要实现一些特殊的参照,比如树结构的参照,则应该继承AbstractRefTreeModel类

2. ClientUI类常用方法

protected ManageEventHandler createEventHandler() //返回UI的事件处理类

protected AbstractManageController createController() //返回UI画面的控制类

protected BusinessDelegator createBusinessDelegator() //返回UI的业务处理类

protected void

initSelfData() //初始化UI界面,比如设置精度

protected void initEventListener() //初始化单据监听,比如:BillCardBeforeEditListener

public abstract void setDefaultData() throws Exception //设置界面默认数据

3. 多表的树结构(比如说,显示部门下的人员)

NC的树结构一般都是单表,那么parentid在数据表里也是对应的主键值。那么多表的时候只需在返回数据vo的时候, 手动把父节点的数据添加进去就可以了。

比如说:部门和人员的树结构

在自己定义的TreeData中的getTreeVO方法中:

Java代码

1. public SuperVO[] getTreeVO() { 2. PsndocVO[] result = null;

3. DeptdocVO[] deptdocvos = null; 4. try {

5. BusinessDelegator business = new BusinessDelegator();

6. String sql = \7.

8. result = (PsndocVO[]) business

9. .queryByCondition(PsndocVO.class, sql); 10. deptdocvos = (DeptdocVO[]) business

11. .queryByCondition(DeptdocVO.class, null);

12.

13. } catch (Exception e) { 14. e.printStackTrace(); 15. }

16. PsndocVO[] results = new PsndocVO[result.length + deptdocvos.length ];

17. for (int i = 0; i < deptdocvos.length; i++) { 18. PsndocVO vo = new PsndocVO();

19. vo.setPk_psndoc(deptdocvos[i].getPk_deptdoc()); 20. vo.setPsncode(\

21. vo.setPsnname(deptdocvos[i].getDeptname()); 22. results[i] = vo; 23. }

24. for (int i = 0; i < result.length; i++) {

25. results[deptdocvos.length + i] = result[i]; 26. }

27. return results; 28. }

完整的TreeData代码:

Java代码

1. public class TreeData implements IVOTreeDataByID { 2.

3. public String getIDFieldName() { 4. return \5. }

6. public String getParentIDFieldName() { 7.

8. return \9. }

10.

11. public String getShowFieldName() { 12.

13. return \14. } 15.

16. public SuperVO[] getTreeVO() { 17. PsndocVO[] result = null;

18. DeptdocVO[] deptdocvos = null; 19. try {

20. BusinessDelegator business = new BusinessDelegator();

21. String sql = \22.

23. result = (PsndocVO[]) business

24. .queryByCondition(PsndocVO.class, sql); 25. deptdocvos = (DeptdocVO[]) business

26. .queryByCondition(DeptdocVO.class, null);

27.

28. } catch (Exception e) { 29. e.printStackTrace(); 30. }

31. PsndocVO[] results = new PsndocVO[result.length + deptdocvos.length ];

32. for (int i = 0; i < deptdocvos.length; i++) { 33. PsndocVO vo = new PsndocVO();

34. vo.setPk_psndoc(deptdocvos[i].getPk_deptdoc()); 35. vo.setPsncode(\

36. vo.setPsnname(deptdocvos[i].getDeptname()); 37. results[i] = vo; 38. }

39. for (int i = 0; i < result.length; i++) {

40. results[deptdocvos.length + i] = result[i]; 41. }

42. return results; 43. } 44. 45.}

如果涉及到表增加,则只需按照添加部门那样增加一个for循环即可。同时把第一个循环中的parentid改为新增的表id。 在这里parentid指的是pk_deptdoc

4. 从后台去掉自定义项引用

NC提供自定义项的引用,也就是备用字段的使用,但是引用完了以后不能修改,如果不想使用了又不能删除。只能从后 台解除引用。 bd_defdef 自定义项定义表,先从这个表中找到定义的自定义项记录pk_defdef

select pk_defdef from bd_defdef where defname=''; 这里的名字即单据上显示的名称

然后从bd_defquote引用表中去掉pk_defdef内容而pk_defused表示表中字段

select bd_defquote.rowid,bd_defquote.* from bd_defquote where pk_defdef='';

注意在解除引用后,需要将被引用字段值置空,因为重新引用自定义项时,如果字段值不为空将引用失败,原因是自定义 项引用时默认会检查字段值是否为空。

5. 显示自定义项

Java代码

1. private void dealDefShow(){

2. String [] strDefObjs=new String[] {\单据头\

3. String [] strPrefix=new String[] {\4. try {

5. new ManageDefShowUtil(this.getBillCardPanel(), this.getBillListPanel()).showDefWhenRef(strDefObjs,strPrefix, true);

6. } catch (Exception e) {

7. Logger.error(e.getMessage(), e); 8. } 9. }


用友NC二次开发一些经验以及处理的问题.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:英语翻译技巧第二节 词的翻译

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: