`
jackzlz
  • 浏览: 141278 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

阅读更多



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方法中:

 

public SuperVO[] getTreeVO() {
		PsndocVO[] result = null;
		DeptdocVO[] deptdocvos = null;
		try {
			BusinessDelegator business = new BusinessDelegator();
			String sql = " isnull(dr,0)=0";

			result = (PsndocVO[]) business
					.queryByCondition(PsndocVO.class, sql);
			deptdocvos = (DeptdocVO[]) business
						.queryByCondition(DeptdocVO.class, null);
			
		} catch (Exception e) {
			e.printStackTrace();
		}
		PsndocVO[] results = new PsndocVO[result.length + deptdocvos.length ];
		for (int i = 0; i < deptdocvos.length; i++) {
			PsndocVO vo = new PsndocVO();
			vo.setPk_psndoc(deptdocvos[i].getPk_deptdoc());
			vo.setPsncode("");
			vo.setPsnname(deptdocvos[i].getDeptname());
			results[i] = vo;
		}
		for (int i = 0; i < result.length;  i++) {
			results[deptdocvos.length + i] = result[i];
		}
		return results;
	}

 

 完整的TreeData代码:

 

public class TreeData implements IVOTreeDataByID {

	public String getIDFieldName() {
		return "pk_psndoc";
	}
	public String getParentIDFieldName() {

		return "pk_deptdoc";
	}

	public String getShowFieldName() {

		return "psncode,psnname";
	}

	public SuperVO[] getTreeVO() {
		PsndocVO[] result = null;
		DeptdocVO[] deptdocvos = null;
		try {
			BusinessDelegator business = new BusinessDelegator();
			String sql = " isnull(dr,0)=0";

			result = (PsndocVO[]) business
					.queryByCondition(PsndocVO.class, sql);
			deptdocvos = (DeptdocVO[]) business
						.queryByCondition(DeptdocVO.class, null);
			
		} catch (Exception e) {
			e.printStackTrace();
		}
		PsndocVO[] results = new PsndocVO[result.length + deptdocvos.length ];
		for (int i = 0; i < deptdocvos.length; i++) {
			PsndocVO vo = new PsndocVO();
			vo.setPk_psndoc(deptdocvos[i].getPk_deptdoc());
			vo.setPsncode("");
			vo.setPsnname(deptdocvos[i].getDeptname());
			results[i] = vo;
		}
		for (int i = 0; i < result.length;  i++) {
			results[deptdocvos.length + i] = result[i];
		}
		return results;
	}

}

 

   如果涉及到表增加,则只需按照添加部门那样增加一个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. 显示自定义项

 

 

private void dealDefShow(){
		String [] strDefObjs=new String[] {"ARAP单据头"};
	    String [] strPrefix=new String[] {"zyx"};
	    try {
			new ManageDefShowUtil(this.getBillCardPanel(), this.getBillListPanel()).showDefWhenRef(strDefObjs,strPrefix, true);
		} catch (Exception e) {
			Logger.error(e.getMessage(), e);
		}
	}
 

 

 

6.  后台获得登录日期

 

String date = InvocationInfoProxy.getInstance().getDate();
UFDate loginDate = new UFDate(Long.parseLong(date));
 

 

7. NC主画面的头部信息位置。

 

   1. 注销、快速切换、日志、帮助按钮的代码在 nc.ui.sm.desktop.SysFuncBtnPanel

 

   2. 未读消息、代办事务、预警消息的代码在 nc.ui.sm.desktop.MsgCenterInfoPnl

 

   3. 公司+用户+日期的代码在 nc.ui.sm.desktop.DesktopTopBar

 

   4. 快捷码的代码在 nc.ui.sm.desktop.QuickCodePanel

 

   5. 配置文件在nchome\modules\uap\META-INF\clientplugins\uap.plugin

 

 

8. 参照相关的类

 

    参照事件类:nc.ui.bd.ref.RefModelHandlerForClient

    主要方法:getRefTableVO(String pk_corp)

 

    参照显示的列标题:nc.vo.bd.ref.RefcolumnVO

    获得名称方法:getFieldshowname()

 

   系统参照查询:nc.bs.bd.ref.ReftableImpl

   方法:findByNode(String refNodeName, String pk_corp)

 

 

9. 查询模板设置默认值的系统变量。

 

#Sys_Account#,

#Sys_Year#,
#Sys_Month#,
#Sys_Date#,
#Sys_Operator#,
#Sys_department#,
#Sys_CurrCorp#

 

 

 

 

 

 

分享到:
评论

相关推荐

    用友NC二次开发指导手册

    ### 用友NC二次开发指导手册知识点概览 #### 一、建立NC环境 - **内容概述**:这部分内容介绍了如何构建一个适用于用友NC软件的开发环境,包括数据库搭建、NC安装配置以及Eclipse集成开发环境的设置等。 - **详细...

    用友内部NC二次开发培训文档

    本章节详细介绍如何搭建适合用友NC二次开发的开发环境,包括必备的开发工具、配置方法等。 ##### 2.2 实例讲解 - **2.2.1 加入NC开发所需的MDE插件** - **知识点**:MDE插件是用友NC开发的重要工具之一,主要用于...

    用友二次开发工具

    《用友二次开发工具在分销与零售系统的应用详解》 用友二次开发工具,作为一款专为用友软件量身定制的开发辅助平台,极大地简化了企业信息化建设过程中的复杂编程工作,使得非专业程序员也能高效地进行系统扩展与...

    NC6二次开发学习视频

    内包含百度云下载网址,用友NC63 NC6.3 NC65 NC6.5 UAP二次开发通用

    用友NC开发API字典

    《用友NC开发API字典》是一份专为开发者准备的重要参考资料,主要涵盖了在使用用友NC(U8+)系统进行二次开发时所涉及的各种应用程序接口(API)。API是软件之间的桥梁,允许不同的系统之间交换数据和执行操作,极大...

    用友NC6.3参照开发关键技术

    用友NC6.3参照开发关键技术是基于用友UAP平台的二次开发技术,旨在帮助开发者快速掌握NC6.3的开发技术。以下是该技术的关键点解释: 1. 前言 NC6.3参照开发关键技术是基于用友UAP平台的二次开发技术,旨在帮助...

    NC二次开发速查手册

    NC二次开发速查手册 只是做了简单的描述 对新手可能有帮助 老手就忽略吧

    nc二次开发文档 非常详细

    表单默认执行方法以及常用的操作 3 四.在报表中显示合计行 4 五.在UI类中设置小数位数 5 六.将表体数据清空 5 七.设置字段是否可编辑的状态 5 八.在UI类中编写方法打印查询条件 6 九.弹出提示框 6 十.在报表...

    用友NC5X 二次开发 eclipse 插件

    用友NC5X 二次开发 eclipse 插件 这个东西网上很少有下载的!!特地方便各位朋友~~

    NC二次开发的培训课程

    【NC二次开发】是指在用友NC(Nova Cloud)系统的基础上进行定制化开发,以满足企业特定业务需求的过程。NC系统是由用友软件股份有限公司研发的一款大型企业管理软件,广泛应用于财务管理、供应链管理、生产制造等多个...

    用友NC65-uapstudio webservice开发配置说明文档

    用友NC65-uapstudio webservice开发配置说明文档 用友NC65-erp开发工具uapstudio进行开发webservice时,需要对开发工具进行必要的设置。以下是uapstudio中的webservice开发配置说明: 一、UAPStudio中的webservice...

    C# 用友二次开发 库存台账,用友ERP库存台账开发, 用友ERP二次开发

    为了方便不用打开ERP直接看 库存台账,这个是用C#来写的!我们已经能做到只要查询数据的客户端,都不能用ERP,而用自己开发的工具。目的是减少客户端使用ERP。 我们一般不用什么用友的API,直接跟数据库就OK了!

    NC二次开发个人总结

    ### NC二次开发个人总结 #### 一、NC5.7的安装及配置 **1.1 安装过程** - **解压安装包**: 首先需要解压缩NC5.7的安装包,解压成功后可以看到安装所需的文件夹。 - **执行安装**: 按照解压后的文件夹内的指示顺序...

    NC二次开发指南

    ### NC二次开发指南知识点梳理 #### 一、NC二次开发概览 - **目标与背景**:本指南旨在为读者提供全面深入的NC系统二次开发指导,帮助读者从零开始逐步掌握NC系统的定制与扩展能力。 - **适用人群**:面向初学者至...

    用友二次开发资料,速查手册

    用友U8与Nc二次开发的常见问题,可用于做用友二次开发的速查资料

    用友 NC6.5 数据字典

    《用友NC6.5数据字典》是针对企业信息化管理软件用友NC V6.5版本的一个核心参考资料,主要用于支持NC系统的二次开发工作。数据字典在软件开发中扮演着至关重要的角色,它详细记录了系统中的数据实体、属性以及它们...

    用友NCC NC bip二开idea开发插件

    【用友NCC NC bip二开idea开发插件】是一个专为IntelliJ IDEA设计的扩展工具,旨在提升开发者在进行用友NCC(New Cloud Computing)和NC(New Company)项目二次开发时的效率。这个插件集成了许多实用功能,能够帮助...

    用友NC移动审批,H5移动APP介绍,适用NC6.5,NC5.7,可集成企业微信,阿里钉钉

    ### 用友NC移动审批H5移动APP知识点详解 #### 一、产品概述 用友NC移动审批是一款专为用友NC系统设计的移动应用程序,它支持NC6.5和NC5.7等多个版本,旨在帮助企业实现高效便捷的移动办公体验。通过这款应用,用户...

Global site tag (gtag.js) - Google Analytics