一文读懂-附件下推原创
金蝶云社区-金蝉子
金蝉子
27人赞赏了该文章 5,365次浏览 未经作者许可,禁止转载编辑于2021年07月26日 09:31:16

如何实现附件面板内容从上游单据下推携带到下游单据

 

相信大家都接触过单据转换,在单据转换的过程中如何将附件面板的内容从上游带到下游呢?敲黑板,以下步骤是重点请大家拿出小本本记好!

 image.png

三步完成附件下推

1. 单据转换插件基类AbstractConvertPlugIn.afterConvert 事件在目标单据生成完毕后触发,插件可以在这个事件对生成的目标单数据进行最后的调整,在BOTP插件中重写afterConvert方法;

2. 在下推插件中获取上游单据的附件信息;

3. 通过AttachmentServiceHelper.saveTempToFileService将上游单据的附件文件上传到正式文件服务器;通过AttachmentServiceHelper.upload维护单据和附件的关系。

 

 

案例:附件面板中的附件下推

首先新建两张包含附件的简单单据,

 image.png

打开业务控制-参与单据转换

 image.png

配置单据转换规则:

 image.png

发现字段映射并没有附件的属性,所以我们单纯通过转换规则是无法携带上游附件到下游中的

我们通过插件干预,在转换后将原单据的附件查出来,赋值在转换后的单据对应的字段即可。

 

注册插件:

 image.png

插件中的内容如下图:

 image.png

Ps:下面是代码中会用到的工具类


如果仔细看上图含有代码的截图,发现有两种下推的方式:

1、下推时,自动向文件服务器上传一份附件,这样文件服务器会冗余一份附件;

2、下推时,上下游单据共用一份附件;

这两种方式会有什么不同呢?主要体现在文件是否冗余,如果没有冗余的话,删除一端数据,另一端附件取值的时候也会取不到。至于使用哪种方式,就根据具体的业务场景来定。

 

原单增加下推按钮,绑定操作代码为push

 image.png

新建单据,上传附件,保存

 image.png

点击下推:

 image.png

可以看见附件成功被携带至下游单据!

 

 

总结:

1. 附件面板的取值和赋值跟普通的单据属性不同,它和单据通过表关联进行映射

2. 附件面板表单formId为bos_attachment,使用在单据体中使用的是附件控件,两者略有不同下面会介绍。

3. 单据转换插件基类AbstractConvertPlugInafterConvert 事件在目标单据生成完毕后触发,插件可以在这个事件对生成的目标单数据进行最后的调整

4. 附件面板常用帮助类:AttachmentServiceHelper

 

案例二:附件控件下推

在案例一中我们介绍的是附件面板的附件下推,案例二中我们简单介绍一下附件控件的附件下推,如下图所示附件是在分录中的。

 image.png

我们仍然采用上面的方式,但是有两点需要注意:

1、控件常用帮助类:AttachmentFieldServiceHelper

2、数据库表为t_bd_attachment附件控件存在自己的物理表,来记录分录与t_bd_attachment的关联关系。

 


赞 27