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

插件判断单据是否存在下游单据的案例总结

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

插件判断单据是否存在下游单据的案例总结

一、【业务需求】

1、单据审核后,如何判断是否存在下游单据?

2、在表单插件中,如何判断是否存在下游单据

3、在列表插件中,如何判断是否存在下游单据

4、若存在下游单据,则不能反审核、删除及作废,该如何实现?

5、如何判断是否下推过特定单据?


二、【功能分析】

实现一个单据转换通常的步骤

1、BOS配置转换路线,字段映射,二开插件,表单服务规则等

2、配置选单条件策略,通过业务单据数量字段结合反写规则,限制单据是否可以下推,是否满足部分下推

3、配置反写规则


实际二开中,业务比较简单粗暴,只做到第一步,并没有配置相关反写规则和选单条件中对数量的判断,导致同一张单据可以反复下推,出现重复单据的业务问题。由此产生二开需求:

  • “如果去判断单据是否存在下游单据”或者说“单据是否下推过”。

  • 在没有配置反写规则的情况下,除了检查下游单据的源单编号,还有什么方法能判断本单据是否有下游单据?因为如果单据有多个转换规则的话,从下游单据一个一个判断源单编号会非常麻烦。


参考官方文章:

判断单据或分录是否下推过

针对表单插件服务插件,有对应实现案例。


通过参考@JohnnyDing 老师的帖子答复:

调用 Kingdee.BOS.ServiceHelper.BusinessFlowDataServiceHelper.IsPush(ctx, args) 函数进行判断。

参数说明:ctx : 数据库上下文args.BusinessInfo : 源单元数据args.EntityKey : 源单单据体Key,单据下推,是基于单据体行的,需要明确指定那个单据体的那一行是否下推过args.ActiveRow : 源单单据体数据行

返回值:true : 源单单据体行下推过false : 源单单据体行未下推过

另外,Kingdee.BOS.ServiceHelper.BusinessFlowDataServiceHelper还有其他函数,可以获取单据下推了什么单。


1、列表插件

var selectedRows = this.ListView.SelectedRowsInfo;
DynamicObject[] reqObj = BusinessDataServiceHelper.Load(this.Context, selectedRows.GetPrimaryKeyValues(), this.ListView.BillBusinessInfo.GetDynamicObjectType());
BusinessInfo  businessInfo = this.ListView.BillBusinessInfo;
LinkEntity linkEntity = businessInfo.GetForm().LinkSet.LinkEntitys[0];
var parentEntity = businessInfo.GetEntity(linkEntity.ParentEntityKey);
                    
foreach(DynamicObject reqObjItem in reqObj)
{
     DynamicObjectCollection entryObjs = parentEntity.DynamicProperty.GetValue(reqObjItem) as DynamicObjectCollection;
     if (entryObjs != null && entryObjs.Count() > 0)
     {
          string[] selectEntryIds = selectedRows.GetEntryPrimaryKeyValues();
          foreach (var entry in entryObjs)
          {
                string entryid = Convert.ToString(entry["Id"]);
                if (selectEntryIds.Contains(entryid))
                {
                     if (Kingdee.BOS.ServiceHelper.BusinessFlowDataServiceHelper.IsPush(this.Context, new Kingdee.BOS.Core.BusinessFlow.ServiceArgs.IsPushArgs(this.ListView.BillBusinessInfo, "FEntity", entry)))
                     {
                         

插件判断单据是否存在下游单据的案例总结

一、【业务需求】1、单据审核后,如何判断是否存在下游单据?2、在表单插件中,如何判断是否存在下游单据3、在列表插件中,如何判断是否存...
点击下载文档文档为doc格式

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

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