电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

套打.二开案例.套打干预数据包接口

来源:金蝶云社区作者:金蝶2024-09-2310

套打.二开案例.套打干预数据包接口

<0>简介

套打干预数据包的接口逻辑是套打二开的常见方法,本文将完整的演示接口逻辑和关键细节。


<1>初探套打干预数据包接口

通过表单插件或列表插件重写OnPrePareNotePrintData,根据系统提供的参数了解接口:

image.webp

以工序计划为例,单据头、工序序列单据体、工序列表子单据体三级关联数据套打为例

image.webp

image.webp

image.webp

数据包干预接口的各参数含义:

  • BillIds:当前数据的内码集合

  • DataSourceId:当前干预数据包所在的实体

  • DataObjects、DynamicObjectType:当前的打印数据包(数据包以字段标识命名)、当前数据包的动态实体属性

  • NotePrintTplID:套打模板标识,用作针对部分模板干预数据包判断

  • Fields:当前数据源下的字段

第一次调用看下数据包的结构,明显与单据的数据包不一样。

  1. 数据少了。套打根据需要字段按需取数,如果需要取对应的字段,那么必须要在套打模板上存在该字段(有时候需要这个字段做插件处理时但又不需要显示可以通过绑定文本控件设置不打印解决);

  2. 平铺结构。单据数据包作为一棵树,而套打数据包更像是一个点,对应数据实体标识下的点,所以这里很容易联想到通过根节点和对应子节点标识输出对应子节点的数据包(层序遍历,套打部分实现也使用了这一逻辑);

  3. 套打数据包是以字段标识命名而非字段的绑定实体属性(单据套打的取数细节主要以查询服务QureyService实现)image.webp

  4. 即使我们没有加入组织字段,但是为什么数据包中会有组织呢,修改会有什么影响?

    由于调整了单据头的套打数据包的组织内码,对应的单据头打印为无权,其他实体不受影响(引出套打各层数据包独立的概念,后续细化),因此如果二开的时候如果不是很有把握,如果需要创建新的数据包建议在构造新的数据包的时候,使用原数据包把所有字段进行复制,而后调整自己的字段,二开数据包时带组织控制的字段权限问题

    image.webp

  5. 套打的多语言字段实现,以多语言文本为例演示

    数据包中多语言字段的值为List<Kingdee.BOS.LocaleValue>

    image.webp

    当需要获取对应语言的值,那么直接在控件上设置属性(前提是数据包为多语言结构)。

    image.webp


  6. 套打数据包属于数据库直接取数得到,对应与界面显示不一致,后续还要经过全县验证、列表外观格式化、套打格式化才得到输出结果,也就是说套打数据包会被覆盖,针对部分特殊字段处理,不保证插件调整后不会被系统覆盖(历史逻辑,如基础资料下的子字段),因此如果干预后无效的,建议创建自己的动态字段解决

    创建动态字段:【套打】python插件加二开字段实现自定义功能【套打】套打打印自定义图片


<2>深入套打干预数据包接口的调用逻辑

基本上针对单一数据源的干预套打数据包逻辑在上面就讲解完成,接下来讲整个套打周期下的套打干预数据包接口运作,

还是接着上面的例子,我们加入日志记录,记录一次套打操作中调用的套打数据包逻辑。

image.webp

image.webp

在这个工序计划单中,单据头FBillHead调用了一次,单据体FEntity调用了一次,

套打.二开案例.套打干预数据包接口

<0>简介套打干预数据包的接口逻辑是套打二开的常见方法,本文将完整的演示接口逻辑和关键细节。<1>初探套打干预数据包接口通过表单插件或列...
点击下载文档文档为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

已经是第一篇
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信