用友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 = " isnull(dr,0)=0"; 7. 8. result = (PsndocVO[]) business 9. .queryByCondition(PsndocVO.class, sql); 10. deptdocvos =...