找不到NC系统VO以及方法的解决方法

本文介绍在NC57系统中追踪单据的五种实用方法,包括通过模板初始化、功能注册、错误输入反馈、SQL查询及代码跟踪定位单据对应的VO和表名,适用于系统维护和开发人员。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一种:去单据模板初始化里找到vo,然后去ecplise里搜索此vo,接着ctrl+f搜索table,找到表名;

第二种:去功能注册里,找到对应节点,找到配置文件,然后在ecplise里搜索到此文件,从文件里查找类和方法;

第三种:   打开单据节点,点击新增,故意输错一个字段内容,开发环境或者通过录日志的方式查找类和方法;

第四种:通过sql查找表或VO

select * from  md_class where name like '%采购%';

select * from dap_dapsystem --单据类型管理中的目录节点(模块)
select * from md_table  where displayname like '%项目%'

第五种:这种方法在nc57中试过:

1、找到节点对应的页面ClientUI类
2、找到ClientUI类对应的包位置,找出ClientCtrl
3、在ClientCtrl中找到getBillVoName()
 public String[] getBillVoName()
    {
        return IMtBillVOConst.BILLVONAME_PUCONTRACT;
    }
4、点击BILLVONAME_PUCONTRACT,进入IMtBillVOConst;
找到BILLVONAME_PUCONTRACT对应的vo,查询想要的


 

<think>根据用户问题,用户希望在NC65系统中实现自定义按钮,重写保存方法,并获取单据主键。下面将分步骤说明如何实现这一需求。###步骤1:创建自定义按钮在NC65中,可以通过前端配置或元数据扩展方式添加自定义按钮。通常,在单据卡片界面添加按钮需要修改前端配置文件(如`*.jsp`或`*.js`文件)或通过二次开发平台配置。###步骤2:重写保存方法在自定义按钮的事件中,需要重写保存逻辑。NC65中通常通过继承或重写`nc.ui.pubapp.uif2app.actions.SaveAction`来实现自定义保存操作。####示例代码框架:```javaimportnc.ui.pubapp.uif2app.actions.SaveAction;importnc.vo.pub.BusinessException;importnc.vo.pubapp.pattern.exception.ExceptionUtils;publicclassCustomSaveActionextendsSaveAction{@OverrideprotectedvoiddoAction()throwsException{try{//调用父的保存方法(可选,根据需求决定是否调用)super.doAction();//获取当前单据的主键Objectpk=getModel().getPrimaryKey();//这里可以添加自定义逻辑,例如根据主键进行后续处理System.out.println("单据主键:"+pk);}catch(BusinessExceptione){//将异常信息显示到前台ExceptionUtils.wrappBusinessException(e.getMessage());}}}```###步骤3:获取单据主键在保存过程中,单据主键通常在保存后由系统生成。在上述代码中,通过`getModel().getPrimaryKey()`获取当前单据的主键。注意,如果单据尚未保存(即主键还未生成),则需要在保存操作后获取。###步骤4:将自定义Action关联到按钮在UI初始化时,将自定义的`CustomSaveAction`关联到按钮上。通常在`nc.ui.pubapp.uif2app.AppEventHandler`的`initUI`方法中配置。####示例:```java//在AppEventHandler的initUI方法中CustomSaveActionsaveAction=newCustomSaveAction();saveAction.setModel(model);//设置模型button.addActionListener(saveAction);//将自定义保存动作关联到按钮```###注意事项1.**异常处理**:在重写保存方法时,务必捕获`BusinessException`并使用`ExceptionUtils.wrappBusinessException(e.getMessage())`将异常信息显示到前台[^1]。2.**主键获取时机**:单据主键在保存后生成,因此必须在保存操作之后获取。3.**单据模型**:确保`getModel()`方法返回的是当前单据的数据模型,通常继承自`nc.ui.pubapp.uif2app.model.BillManageModel`。###完整示例以下是一个更完整的示例,展示如何在自定义按钮中调用保存并获取主键:```javaimportnc.ui.pubapp.uif2app.actions.SaveAction;importnc.vo.pub.BusinessException;importnc.vo.pubapp.pattern.exception.ExceptionUtils;publicclassCustomSaveActionextendsSaveAction{@OverrideprotectedvoiddoAction()throwsException{try{//执行保存(会生成主键)super.doAction();//获取当前单据的主键Stringpk=(String)getModel().getPrimaryKey();System.out.println("保存成功,单据主键为:"+pk);//这里可以添加后续业务逻辑,例如根据主键更新其他单据}catch(BusinessExceptione){ExceptionUtils.wrappBusinessException(e.getMessage());}}}```###配置说明-将上述自定义Action配置到按钮的事件监听中。-在NC65的二次开发环境中,通常需要将编译后的文件部署到相应的模块中。###相关问题1.如何在NC65中配置自定义按钮的前端界面?2.重写保存方法时如何获取单据体数据?3.NC65中如何实现保存后的自动刷新或跳转?[^1]:NC65常见工具方法nc65重写标准方法不能往上抛异常,需要在方法使用try。这种就有可能前台不提示具体信息,使用该就可以将具体信息在前台显示。[^2]:NC65联查单据(单据追溯)客开单据配置详细教程。[^3]:如何将NC65列表型参照中的组织主键显示成组织名称。</think>### 如何在NC65中自定义按钮并重写保存方法获取单据主键 在NC65系统中实现自定义按钮并重写保存方法获取单据主键,主要分为以下步骤: #### 1. **创建自定义按钮** 在单据卡片界面配置自定义按钮(如"特殊保存"按钮),通过元数据扩展或前端配置文件实现。 #### 2. **重写保存逻辑** 继承标准保存并重写保存方法,关键步骤包括: ```java // 1. 继承标准SaveAction public class CustomSaveAction extends nc.ui.pubapp.uif2app.actions.SaveAction { @Override protected void doAction() throws Exception { try { // 2. 获取当前单据数据 Object[] bills = getModel().getAllData(); // 3. 调用业务逻辑保存 Object newPk = saveBillLogic(bills[0]); // 4. 获取并处理主键 System.out.println("生成的主键: " + newPk); // 5. 刷新界面 getModel().clear(); getModel().insertVO(newPk); } catch (BusinessException e) { // 6. 异常处理(前台显示) ExceptionUtils.wrappBusinessException(e.getMessage()); // [^1] } } // 自定义保存逻辑 private Object saveBillLogic(Object billVO) throws BusinessException { // 7. 调用服务保存单据 IApproveService service = NCLocator.getInstance().lookup(IApproveService.class); Object[] savedBills = service.save(new Object[]{billVO}); // 8. 返回保存后的主键 return savedBills[0]; } } ``` #### 3. **关联按钮与自定义动作** 在UI初始化时绑定按钮: ```java // 在AppEventHandler的initUI方法中 CustomSaveAction customSave = new CustomSaveAction(); customSave.setModel(model); // 绑定数据模型 button.addActionListener(customSave); // 关联按钮事件 ``` #### 关键点说明: 1. **主键获取**:单据保存后,服务层会返回包含主键的持久化对象数组(`savedBills[0]`) 2. **异常处理**:必须使用`ExceptionUtils.wrappBusinessException()`确保前台显示错误信息[^1] 3. **单据刷新**:通过`getModel().insertVO(newPk)`刷新界面显示新单据 4. **服务调用**:使用`NCLocator.getInstance().lookup()`获取标准服务接口 #### 配置注意事项: - 在`module.xml`中注册自定义Action - 如需修改保存前的校验逻辑,可重写`beforeSave()`方法 - 多组织环境下需处理`pk_org`等字段的自动填充 ### 相关问题 1. 如何获取NC65单据保存前的原始数据? 2. 重写保存方法时如何处理单据体数据? 3. NC65中如何实现保存后的自动审批? 4. 自定义按钮如何控制不同状态下的显隐? 5. 如何获取关联单据的主键进行联查操作?[^2] [^1]: NC65重写标准方法不能往上抛异常,需要使用try-catch和ExceptionUtils.wrappBusinessException()确保前台显示错误信息 [^2]: NC65联查单据需继承nc.impl.pubapp.linkquery.MultiSrcBillFinder进行配置 [^3]: 主键转名称需通过getFormulas()方法配置参照转换规则
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值