本文讨论了应收/付款管理中自动生成应收应付单的问题,包括因产品程序bug(如混合云模式下7.5.1604.4版本)导致的未生成或状态错误,提供了临时补丁和升级方案。同时,还探讨了参数设置异常或人为因素导致的问题,如权限不足、生成方式设置不当、人为删除等,并给出了解决方法和日志追踪方法。此外,还列举了多个常见异常案例及其解决方案,如反写冲突、金额不一致、死锁、执行超时等,并提供了详细的操作指导和代码示例。
业务场景:在应收/付款管理参数中配置了销售出库单或采购入库单审核后自动生成应收应付单,但是出现未生成或者生成状态有误的情况。
产品程序bug
2020年4月补丁7.5.1604.4混合云模式下,存在出入库单审核无法自定生成应收应付单的bug,解决该问题的临时补丁TempPatch_V7_FIN.7.0.985.1.kdpkg,下载地址:https://vip.kingdee.com/article/183302?share_fromuid=1155 , 或升级到更高版本补丁亦可。
参数设置异常或人为因素
2.1 负责审核出库单的仓管员没有应收/付单的新增权限,需授予权限或取消勾选应收/付款管理参数【自动生成应收/付单验证权限】
2.2 应收/付单生成方式由异步改为同步(该参数默认隐藏,可从BOS中放出)
2.3 人为删除了应收单,误以为未生成
检查了参数设置后未发现问题,可以开启下推日志,后续跟踪异常
--下推写日志:--,'1' 为开启,0为关闭
Delete from T_BAS_SYSTEMPROFILE where FCATEGORY='AR' and FKEY='IsWritePushLogforFile'
Insert Into T_BAS_SYSTEMPROFILE (FCATEGORY ,FORGID ,FACCOUNTBOOKID ,FKEY ,FVALUE)
Values ('AR',0,0,'IsWritePushLogforFile','1')
update t_bas_systemprofile set FVALUE=' ' where FCATEGORY='AR' AND FKEY='LogFileName'
备注:日志文件在系统安装目录:\\App_Data\\Log\\ARAP_LOG下面,例如我的目录为:D:\Program Files (x86)\Kingdee\K3Cloud\WebSite\App_Data\Log\ARAP_LOG常见异常案例
4.1 异常1:由于对采购订单反写的冲突操作导致的应付单审核失败。
解决1:关闭反写网控。
def BeforeWriteBack(e):
e.IsCancelNetworkCtrl=True4.2 异常2:付款计划页签订单号的应付金额汇总值不等于应付单明细页签订单号的价税合计。
解决2:可能是保存校验异常,如果是2021年3月份补丁之前的版本,可以关闭保存校验。
def OnAddValidators(e):
target = -1
index = -1
for item in e.Validators:
index = index + 1
if str(item).find('CheckMaterialPayalbeDetailEqualPlanValidator') > 0:
target = index
if target > -1:
e.Validators.RemoveAt(target);4.3 异常3:事务与另一个进程被死锁在锁资源上,并且已被选做死锁牺牲品,请重新运行该事务。
或者ORA-14411: The DDL cannot be run concurrently with other DDLs。
解决3:取消应收/付单携带订单收/付款计划的参数。如下图所示,应收应付均有这个参数。
如果是低版本的,前台还没有此参数,可以在后台数据库执行下列语句取消参数。
--上游单据下推应收应付单时,不携带上游单据的收付款计划:
Delete from T_BAS_SYSTEMPROFILE where FCATEGORY='AR' and FKEY='PushIsNotGetPlan';
Insert Into T_BAS_SYSTEMPROFILE (FCATEGORY ,FORGID ,FACCOUNTBOOKID ,FKEY ,FVALUE)
Values ('AR',0,0,'PushIsNotGetPlan','1');4.4 异常4:数据插入时报错:表名T_BF_InstanceEntry,字段(FRouteId,FInstanceId,FLineId,FSTableName,FSId,FTTableName,FTId,FFirstNode,FCreateTime)。执行超时已过期。完成操作之前已超时或服务器未响应。
解决4:安装目录的website下的common.config文件中加上如下节点后续再观察,改了之后针对分录小的单据会走原来的逻辑(20行分录的),超过20行分录的走新逻辑,插入速度会变快,但是会变为表锁,整体执行速度是会变快的,但是要确认其他业务不受影响。修改之前请注意先备份下common.config文件。
4.5 异常5:执行超时已过期。完成操作之前已超时或服务器未响应。
解决5:可能是数据库中出现阻塞,要先设置好扩展事件能够抓取到阻塞语句,才能知道具体阻塞原因。SQL Server中如何自动抓取阻塞的方法可以参考:https://vip.kingdee.com/article/372792524337201152?productLineId=1&isKnowledge=2。以此次遇到的问题为例,抓取到阻塞信息后分析发现是由于对应收单的表重建索引和插入应收单表阻塞了,故修改重建索引时间即可解决此问题。
4.6 异常6:正在进行信用重算,不允许执行当前操作。
其中2.1和2.3可通过查询在审核出入库单据前后的上机操作日志来判断问题产生的异常点。如下图所示,能看出是由于审核入库单的人没有应付单的新增权限导致未生成。
推荐阅读