如何实现在单据界面打开操作生成的其他单据原创
金蝶云社区-wbshcy
wbshcy
4人赞赏了该文章 1,008次浏览 未经作者许可,禁止转载编辑于2022年10月31日 22:52:57

关键字:操作、界面、参数传递

一、需求

在一个单据(A单据,比如办公用品登记单)的界面点击某个操作时会在操作插件生成另一个单据(B单,比如入库日志单),希望生成B单后可以直接在A单据打开B单的查看界面。


二、思路与方案

操作插件是无法打开界面的,需要将生成的B单据的单据id传递给A单据的界面插件,在界面插件去打开B单。操作的参数OperateOption有接口可以传递参数。

三、实现过程

1.在操作插件生成入库日志单,并将id传给操作的参数OperateOption;

      @Override
	public void afterExecuteOperationTransaction(AfterOperationArgs e) {
		// TODO Auto-generated method stub
		super.afterExecuteOperationTransaction(e);
		DynamicObject offsupregisterbill = e.getDataEntities()[0]; //当前操作的单据数据包
		DynamicObject purinlog = BusinessDataServiceHelper.newDynamicObject("kded_purinlog");
		purinlog.set("billno","100000");
		purinlog.set("kded_log",offsupregisterbill.get("billno"));
		purinlog.set("createtime", new Date());
		purinlog.set("creator", RequestContext.get().getCurrUserId());
		OperationResult operationResult = SaveServiceHelper.saveOperate("kded_purinlog", new DynamicObject[]{purinlog}, OperateOption.create());
		if(operationResult.getSuccessPkIds()!=null){
			//只能在前台打开一个单据的界面,将该单据id给操作参数OperateOption
			this.getOption().setVariableValue("pk",operationResult.getSuccessPkIds().get(0).toString());

		}


	}

2.在操作执行后触发的afterDoOperation方法去取操作参数里的单据id来打开界面。

  @Override
    public void afterDoOperation(AfterDoOperationEventArgs afterDoOperationEventArgs) {
        super.afterDoOperation(afterDoOperationEventArgs);
        //取表单操作,表单操作里有OperateOption
        FormOperate formoperate = (FormOperate) afterDoOperationEventArgs.getSource();
        if("purin".equals(formoperate.getOperateKey())&&!afterDoOperationEventArgs.getOperationResult().getSuccessPkIds().isEmpty()) {
            String billPk = formoperate.getOption().getVariableValue("pk");
            if(billPk!=null){
                //取出来的单据id不为空则打开该单据
                BillShowParameter billShowParameter = new BillShowParameter();
                billShowParameter.setFormId("kded_purinlog");
                billShowParameter.setPkId(Long.valueOf(billPk));
                billShowParameter.getOpenStyle().setShowType(ShowType.Modal);
                this.getView().showForm(billShowParameter);


            }
        }
    }

四、效果图

点击入库操作可以打开操作插件生成的入库日志单

image.png

五、开发环境版本

V5.0.0.2

、参考资料

【开发平台】指导手册

学习成长中心



赞 4