业务流程问题(持续更新)原创
金蝶云社区-eris
eris
18人赞赏了该文章 8852次浏览 未经作者许可,禁止转载编辑于2023年11月16日 14:42:38

一、业务流程

1、业务流程--业务流使用指南 

2、业务流程--相关表元数据和操作   

3、业务流程--字段携带和反写逻辑  

4、业务流程--反审核时删除下游单据 

5、直播—业务流程            

6、批量生成界面使用批量保存使用说明  

7、清理业务流程脏数据sql  

8、自定义执行计划归档业务流程数据  

9、业务流程归档    

10、业务流程节点横向输出新方式调用  

11、平台处理尾差简单介绍   

12、解压反写快照和业务流程实例压缩文件

13、在操作插件模拟页面操作实现字段值更新服务     

14、控制多类别基础资料列表下拉选项

15、判断单据下推而来                    

二、反写

1、反写资料--产品手册--反写规则    

2、反写--反写日志            

3、反写--反写特殊字段             

4、反写--反写分配逻辑  

5、反写--反写超额分析               

6、反写--反写数据检查  

7、反写--如何控制单据头字段只反写一次 

8、反写--实现反写文本字段累加累减的效果               

9、反写错误分析--出库单反写销售订单错乱分析 

10、反写--使用操作插件把附件回写到上游单据          

11、反写错误分析--采购入库单反写采购订单剩余入库数量为负分析

12、反写--反写上游子单据体     

13、[单据反写]---如何修复反写快照中的表名

14、【反写】--允许一次超额

15、【反写】--如何把反写规则保存操作改成审核下运行

三、单据转换

1、单据转换和插件概述

2、单据转换--自定义下推   

3、单据转换按分录下推

4、单据转换携带第二个单据体

5、单据转换根据基础资料属性进行分组

6、单据转换自定义行拆分阀值  

7、单据转换一行拆成多行 

8、转换规则修改携带值     

9、单据转换警告提示    

10、单据转换插件提示消息    

11、单据转换携带图片字段     

12、单据转换自定义排序

13、转换规则--控制选单页面只能按整单下推       

14、单据转换插件实现自定义字符连接   

15、单据转换实现多单据体到目标单的携带和关联  

16、批号没有携带原因     

17、一张单拆分为多张单

18、工序计划下推工序汇报提示:下推不成功  

19、下推分录丢失提示   

20、基础资料无法携带分析 

21、通过服务设置禁用的基础资料不被携带    

22、实现上游子单据体到下游单据体的转换     

23、自定义下推实现按条件过滤和分组  

24、执行计划调用下推报没有下游单据新增权限  

25、第三方下推

26、生产订单第三方下推

27、单据转换.字段映射关系.公式.根据源数据集合生成结果(文本)

四、联查和其他

1、联查--第三方下查

2、联查不到数据情况 

3、业务流程路线图断了分析 

4、通过接口得到关联数据

5、sql脚本创建关联关系

五、选单页面

1、设置目标组织为空              

2、操作插件创建关联数据包

3、调整选单页面选单顺序   

六、插件

1、单据转换相关的插件事件

2、各种插件注册

3、反写插件

七、问题

1. 报“控制字段缺少携带配置”错误 这里的控制字段是指下游单据中的单据关联配置属性中设置的控制字段,缺少携带配置是指此单据转换规则中没有配置控制字段源映射值。要绕过此检查用户可以通过配置自定义公式,如果控制字段是整形则则设置为0.

【问题1】控制字段没有携带值的影响

1)全流程跟踪,上下查不受影响

2)如果存在反写,并且存在合并下推的情况,则需要按携带值来分配

3)如果没有控制字段所在的实体数据是会有影响,单据虽然能正常转换但上下查和全流程跟踪查询不到数据。

【问题2】多单据实体支持问题

    不支持多单据实体转换携带,只支持一个单据体,和其子单据体携带

【问题3】仅携带不记录关联关系

  1).目标单据不配置单据关联配置; 

 .2)目标单据配置了单据关联配置在单据转换的时候启用仅携带。

【问题4】销售订单关联复制行不走AfterCopyRow事件?

   销售出库单上的复制关联行是业务封装的操作(Kingdee.K3.SCM.Business.DynamicForm.Operation.AssociatedCopyEntryRow,Kingdee.K3.SCM.Business.DynamicForm),没有走平台的AfterCopyRow。

可以使用其他的事件,AfterDoOperation或AfterBarItemClick等。

【问题5】反写时报存在多个源单实体错误?

修改了表定义表名,导致流程节点表和反写快照表对应不上

【问题6】反写规则超额公式,关闭公式正确写法,比如组织?

   fOrg.Id = 1000 and fOrg= fOrg

【问题7】 反写规则条件表达式通过Sysparam取参数,比如取库存管理系统参数,相同单据组织有的运行有的不运行?

   Sysparam取参数值是根据当前登录组织取数,跟单据主业务组织没有关系。

【问题8】反写规则配置的条件为库存管理系统参数审核时,但在保存时就执行了?

1)存在多组织,不同组织更新库存时机不同  

2)Sysparam取参数没有传入单据组织字段,导致按当前登录组织取到参数数据。

【问题9】销售订单下推发货通知单仓库没有携带到出货仓库?

   1) 是否存在组织隔离   2)不存在组织隔离,是物料仓库没有赋值上,则检查权限角色。

【问题10】下推时报某个字段不存在?

配置了字段映射,但此字段没有设置字段名。

【问题11】多次反写,反写重复,反写翻倍,反写快照数据丢失?

1)一般是反写快照丢失,反写快照丢失的原因包括,以前版本包括审核后再暂存;

2)审核和保存并发,把审核的反写快照覆盖了。

3)移动端审批没有网控,PC端撤销反审核,并发导致审核的数据丢失

4)暂存的单据并发保存反写,后面的保存得到的单据状态是暂存,以为还是第一次新增,导致所有的行又反写了一次。

5)每次选单都把保存的单据状态改成暂存状态,导致保存时又反写了一次

6)反写规则被禁用,再次操作导致反写的数据被扣减。

【问题12】业务流程节点数据丢失?

1)是否作废过

2)关联表的数据,反写快照的数据是否存在?如果存在,可能是备份还原覆盖导致

3)先检查LK表数据是否存在,如果不存在,再确认什么情况下会删除LK表数据,比如删除了分录重新做了分录数据,

比如生产入库单的序列号被删除了导致和工序汇报的关联数据丢失等等。

【问题13】业务流程节点数据如何产生?

1)关联表中的数据和反写快照的数据进行比较,如果没有快照就新增,没有关联表数据就删除,都有就修改。

【问题14】转换规则表达式?

自定义函数:datetime, contains, null, true, false,find;

python内置函数

【问题15】批号没有携带原因?

  • 确保上下游批号的录入模式相同

  • 确保批号关联的使用组织上下游的值相同

  • 最关键点,确保保存操作在服务上配置了“保存并更新批号主档服务”

【问题16】单据下推报没有下游单据新增权限

  1. 权限判断依据,取到的所有权限组织不包含主业务组织,1)真是没有权限  2)主业务组织没有值,一般是携带来源做了组织隔离导致没有值。

  2. 用户通过把基础资料的组织携带到下游主业务组织,不管基础资料或其组织有没有值,在下推操作选单页面都会显示需要设置目标组织的,  但在选单操作则不需要设置目标组织,没有设置则会取当前登录组织。      在转换过程中,会先把设置的目标组织赋值给主业务组织,然后再按字段映射给主业务组织赋值,  赋完值再对主业务组织的值进行权限验证。

  3. 对下游单据的主业务组织进行权限验证,携带组织,登录组织,字段映射赋值(可能没有组织值)

【问题17】修改表定义表名,需要考虑?

1)关联节点数据

2)反写快照数据

3)LK表数据

【问题18】转换规则问题一般处理过程?

1)检查转换规则是否存在扩展,包括各种策略的配置,重点检查新加的映射字段和二开插件

2)检查非扩展下的插件,和服务策略下的各种服务

3)

【问题19】配置创建日期大于10天后的单据才允许下推?

1)下推操作不支持在操作中配置的效验服务,因为根本就不会运行

2)在单据转换-》选单条件策略--》附加条件直接加上sql脚本

3)sqlserver脚本:DATEDIFF(day, FCREATEDATE,GetDate())>10

4)oracle脚本: to_date(to_char(sysdate,'yyyy-mm-dd'),'yyyy-mm-dd')
-to_date(to_CHAR(FCREATEDATE,'yyyy-mm-dd') ,'yyyy-mm-dd') >10

【问题20】反写引擎保存时报子查询返回的值不止一个。当子查询跟随在 =、!=、<、<=、>、>=之后,或子查询用作表达式时,这种情况是不允许的?

1)被反写的上游单据存在触发器导致的

【问题21】、字段({0})的实体({1}),非关联主实体,不允许携带,请修改转换规则!

1)下游单据的多个子单据体存在携带来源

【问题22】、二开的单据上下查,显示了上下查页面,但报没有关联业务数据,上下查显示问题?

1)原因:二开的单据已下推过数据, 后面又改了formId,导致t_bf_tabledefine中存在两份不一样的formId对应相同的表名,在上下查时会根据表名去t_bf_tabledefine中取formId,如果取到的是不存在的就会报关联数据不存在。

2)没有对应的转换规则,或所有的转换规则被隐藏、删除或禁用。

3)业务流程阻断,FIsBreak等于1。

【问题23】 下推启动条件只可以用来在下推操作转换规则的选择。

【问题24】 单据保存后有关联关系,审核后就没有关联关系?

1)检查发现保存后LK表中的FentryId变了,是一样用户把FentryId设置成自增长的主键导致的

【问题25】. 单据转换携带来的数据没有数据,但绕过了必录性验证?

1)携带了一个不存在的基础资料,比如给基础资料通过自定义公式直接赋值了一个不存在的内码

【问题26】、全流程跟踪卡死,数据不多?

1)以前版本存在死循环的情况,建议不勾选跨实体查询

【问题27】、所有的单据转换报错,报无法进行转换?

原因:仓位和辅助属性元数据改动过,导致所有单据转换只要涉及到仓位和辅助属性的携带的就会报错误。

解决方案:重启iis即可

【问题28】、单据作废后还存在关联关系和反写?

1)作废之后又进行了保存,应该再保存操作上增加验证,作废的单据不能够保存

【问题29】、转换规则时,选单条件策略中,字段结算方式的列表值显示不全,实际该字段的列表值不止这几个?

1)结算方式为共享型基础资料,但它继承的却是受组织控制的基础资料模板,导致被当成分配型的基础资料,从而只会显示根节点跟当前节点相同的数据。frmRptBaseDefault.cs,有MasterId的基础资料只显示id=masterid的值。

【问题30】、上查,打开了联查页面,但提示数据不存在?

1. 上游单据被删除,可能直接从物理表中删除,可能通过api修改接口无意删除了

【问题31】、全流程跟踪查询到了其他数据和其他非关联单据?

1)以前的全流程跟踪跨实体查询的一个bug,在做跨实体查询时会查询本实体,而查询出来的本实体流程数据由于不包含已经得到的流程实例,导致覆盖。销售订单有10行数据,其中有两行数据产生了单据编号为XASCDD2108171319的生产订单,其他行产生了其他的单据数据,在生产订单做全流程跟踪,首先取到此生产订单的流程实例数据,然后根据此流程实例数据去做跨实体查询,由于没有排除本实体做跨实体查询,导致查询到了销售订单其他8行数据,并且把前面的2行数据覆盖了。此问题已经在2021年1月14号补丁中修复了。

2)做跨实体查询,跨实体中存在相同单据的其他数据。

【问题32】、批量下推排序问题?

1) 列表批量下推排序优先级:

排序策略〉列表顺序(小于1000行)〉单据主键排序 〉再按分录序号排序,没有序号则按分录主键排序

2)整单下推排序优先级:

排序策略>单据主键排序 〉再按分录序号排序,没有序号则按分录主键排序

3)转换插件干预排序参考;https://vip.kingdee.com/article/78042329126354176

【问题33】自定义了业务流程,业务流程查询时,显示付款申请单未走,查询时付款申请单业务流程字段无数据

1)原因:应付单到付款申请单是通过付款计划携带到付款申请单的,而付款计划没有业务流程,故到付款申请单就没有

【问题34】、所有的删除,保存,审核不了?

1)所有的上游反写规则,有某个表达式设计错误,比如写成 = true,最大分配值写成字符类型等等

【问题35】、批量下推报寻找实体上xxx对应的属性描述符是不,实体不存在此属性?

1)基础资料和基础资料属性不在相同的实体

【问题36】、业务流程字段

1)要配置在关联实体中

2)业务流程图中最后一个节点对应的单据是不会保存业务流程图的

【问题37】分录删除了很存在关联关系和反写数据?

1)存在覆盖操作,比如在删除分录后保存,保存未完成之前进行了其他操作。

【问题38】什么情况下转换规则可以修改?

分解:1.开发商Id为Kingdee

2.转换规则中安装包Id(FPackageId)等于开始商标识

3.转换规则中安装包Id(FPackageId为空

4.转换规则中安装包Id没有安装记录

【问题39】什么情况下转换规则可以保存成功?

分解:1. 安装包Id(FPackageId)等于开始商标识

2. 转换规则中安装包Id(FPackageId为空

【问题40】二开转换规则保存成功,再次打开数据却没有?

分解:转换规则中安装包Id(FPackageId)跟当前开发商标识不一样,并且没有安装包记录

【问题41】委外领料单勾选了【支持批量查询】,手工下推的领料单的仓位和辅助属性字段值为null值导致成本报表报错。

分解:默认情况下,保存操作都是批量处理,批量处理会根据列的类型赋默认值;

基础资料对应的列是整形,默认值是0;但如果单据中加了xmlfield类型的字段,就是非批量处理,非批量处理不会处理没有值的列,如果表中的列设计允许为null, 则就是null了。

【问题42】组织隔离携带?

1) 单据转换,基础资料默认根据使用组织进行隔离携带,如果使用组织没有来源或没有使用组织,则根据主业务组织进行隔离携带。

2)隔离携带的前提条件:包括基础资料的类型是分配型和私有型并且不支持分发,以及下游单据存在主业务组织。

3)没有按照使用组织进行隔离携带,主要原因:

3.1)下游单据没有主业务组织

3.2)基础资料映射携带到下游单据多个字段,导致只取了第一个隔离值

【问题43】下游单据关联主实体为单据头,实现上游单据体和下游单据头关联?

def OnInitVariable(e):

e.Rule.Policies[2].TargetEntryKey=""

【问题44】多语言没有携带?

1)参数设置--》流程中心--》业务流程--》勾选允许多语言携带

2) 当前登录语言没有值,其他语言有值,这在2021年6月份补丁之前也不支持携带
【问题45】没有反写?

1)二开调用的保存操作不正确,不走反写的保存接口

2)如果是跨级没有反写,没有走反写,检查一下是否为跨实体的跨级,跨实体的跨级是不支持反写的

3)反写的上游字段在单据体中,关联关系却是单据头

【问题46】IsDraw    IsDraw()    IsDraw()=1   这样的写法都可以?

是否关联生成的表达式依赖于相关的数据包环境;合法性效验,它在验证的时候传入的是效验字段所在的实体数据包,如果不是关联主实体,那么传入就是其他数据包,其他数据包没有关联数据包自然就会报错了; 实体服务规则,它不依赖于具体的字段,应该是直接解析了关联主实体的数据包给表达式。

【问题47】保存单据报违反了主键约束,插入重复键?

1)保存关联的流程实例存在多份,在历史表或归档表或当前表都有

【问题48】字段映射空值携带不下去?

1)单据转换先按默认值创建数据包,而字段映射来源值为null不会处理,所以就成了默认值。

2)可以先使用自定义公式把默认值转换为一个特殊值,再在单据转换服务策略中增加服务把特殊值改成null

【问题49】选单页面显示的名称不是扩展名称?

选单页面单据名称来源V_META_OBJECTTYPE_L ,优先来源T_META_OBJECTTYPENAMEEX_L ,再使用T_META_OBJECTTYPE_L 

【问题50】反写常见问题?

1)单据实际状态不符(比如说保存的单据运行时却是暂存,导致多次反写)

2)并发反写,导致反写被覆盖

3)操作控制不严格,比如保存后再暂存,导致反写快照丢失

4)保存操作的反写规则,审核也反写,原因:审核时第一次反写,审核时反写数量跟保存不一样

【问题51】单据保存报条件表达式错误?

1)修改了关联主实体,导致反写规则的条件表达式找不到数据包定义。

【问题52】单据反写很慢?

1)检查一下LK表的主键是否缺少索引

【问题53】、反写数据被清空?

1)反写规则被禁用

【问题54】反写规则找到多个源单实体,反写源单不够明确,无法反写?

1)反写快照的表名和流程节点中的表名大小写不一致

2)部分应收单通过销售订单下推而来,并使用了单据头关联应收单的单据体; 部分应收单通过出库下推而来,出库来自销售,关联的是单据体和单据体关联。在批量反写的时候一个反写规则找到了销售订单的单据头,又找到了单据体,导致报多个源单实体错误。

问题55】缺少根元素?

1. 没有xml数据,一般是把xml数据给删除了

2. 批量处理太多,部分快照已归档,部分没有归档,以前代码有缺陷当成所有的都已归档,并且只还原了3000.

问题56反写快照只有反写规则信息没有反写值,可能的情况?

只有反写规则信息,没有反写值,说明满足反写条件,但反写值为0

问题57 真实单据不存在,关联关系还存在,可能的原因?

1)把单据关联配置中的单据体实体改了,导致关联主实体改变了,以前关联的单据,删除时不会删掉流程实例。

2)手工把反写快照删除掉了,删除单据时也不是删掉流程实例。

3)设置单据关联配置,然后批量生成单据,再在列表中删除,但列表是在设置单据关联配置之前打开的。

【问题58】业务流程自动归档报“将截断字符串或二进制数据。语句已终止”?

正式表t_bf_instance 中的FFirstBillNo能存储160个字符, 历史表只能存储80个;正式表中有几个超过了80,所以报截断错误。

【问题59】反写过程中取流程实例报错:“构造实体视图DynamicObjectView失败,构造参数:实体dataEntity不能为空!”?

1)当前节点数据或来源单节点数据没有对应的流程实例,既在t_bf_instanceEntry表中的实例内码在t_bf_instance不存在。

2)两行分录合并下推目标单据,保存之后,然后删除了lk表中其中一行关联数据,导致反写携带量重新分配,从而需要修改关联节点,   修改后的关联节点没有关联流程实例,再取流程实例就报错了。这种情况一般是二开插件导致的,因为页面不可能不删除分录而删除关联数据。

【问题60】什么是反写规则首次运行?

保存操作,删除的行,无历史反写规则快照,新启用的反写规则,则为首次运行,满足运行条件则会触发插件补偿源单事件

保存操作,修改的行,无历史反写规则快照,则为首次运行,满足运行条件则会触发插件补偿源单事件

审核操作,修改的行,无历史反写规则快照,反写规则配置操作为保存,则为首次运行,满足运行条件则会触发插件补偿源单事件

【问61】业务流程携带?

1)业务流程字段无需配置字段携带,会自动携带。

2)业务流程跟相应的单据类型相关,一种单据类型可以对应多种业务流程,实现一起携带。

3)不同的业务流程是可以同时携带到下游的,如果下游是末尾节点或终节点是不会携带的。

【问题62】分录修改了数据,但LK表数据没有修改?

1)控制字段修改数据时会触发通用值更新事件,对LK表中的数据进行分配。

2)反写引擎运行时也会根据分录的数据对LK表中的数据进行分配

3)如果LK表中的数据没有改变,很可能在反写引擎中取消了分配,和没有触发值更新事件或触发了值更新事件存在嵌套触发,没有真实分配。

【问题63】反写快照行关系和反写数据都丢失了?

1)复制了新行把原来的关联行给删除了

2)二开插件处理了反写快照

【问题64】转换规则服务配置了,把某个字段的值赋值给其他字段,但没有成功?

1)单据关联配置中也配置了服务,把转换规则中的服务给覆盖了。

【问题65】反写-》反写网控?

1)反写网控有反写规则内码和单据内码组成识别,即网控Id和内码Id组成唯一识别。

2)当多张下游单据并发反写同一张上游单据,有可能存在反写网控冲突。

【问题66】单据转换-》下推页面-》组织显示?

1)下游单据的主业务组织根据单据转换字段映射配置了来源组织字段,来源组织字段根据要下推的单据(列表选择了多个单据或多行,则根据第一个单据数据)数据包有值,则不会显示,否则显示。

2)显示的组织为用户有权限的组织,并且得有下游单据主业务组织的组织职能;如果来源组织字段有组织业务关系,则取组织业务关系对应组织的组织和组织对应的受托或委托组织。

【问题67】单据转换-》批量生成页面,单据提交和审核没有更新批量生成页面状态?

1)保存和暂存是通过 ConvertTrackEdit插件触发批量生成页面更新的,此插件不需要注册,默认自动加入所有单据。

2)保存,提交,审核,反审核,都是通过TemplateBillEdit触发批量生成页面更新的,此插件需要注册到表单插件,如果没有注册就不会更新了。

【问题68】单据上下查,报“没有关联业务数据!"

1)所以的上下游转换规则都停用了

【问题69】、为啥至上而下反写,从第6,7,12行反写变成了从第12,6,7行反写?

原因:多次修改反写值数据,如果刚好导致6,7行反写值改变,12行反写值未变,反写值改变会导致流程节点内码重新创建,新创建的内码比原来的内码大,数据库取数顺序默认是按内码升序,故12行排在了前面。

建议:

1)合并下推的下游单据尽量先填好值再保存,减少修改次数

【问题70】、第6,7,12行分配上限分别为38,21,3,携带值分别为17,21,3, 为啥第6行反写了38,而不是按携带值反写?

原因:多行合并,合并的单据下推的单据又关联拆分,变成了多对多个关系;每行分录进行反写分配时,是取流程路线上的最小值

,不同的路线最小值不一样,也就是说被反写行不同的路线反写,携带值不一样,从而无法对已分配的数据进行扣减,

而分配上限对被反写的行来说是固定值,会对已分配的路线值进行扣减,直到扣减到0,才给其他行分配数据,所以携带值

对路线是固定的,永远大于关联复制行的反写值,只有分配上限值才能控制最终的反写值。

建议:

1)有关联复制行的上游单据尽量不要拆分

2)有关联复制行的上游单据即使拆分,也应该像上次一样,一起合并单据再拆分,尽量减少交叉合并