销售出库单或采购入库单审核后未自动生成应收应付单的情况分析原创
金蝶云社区-emily
emily
15人赞赏了该文章 5369次浏览 未经作者许可,禁止转载编辑于2023年02月27日 10:05:42

业务场景:在应收/付款管理参数中配置了销售出库单或采购入库单审核后自动生成应收应付单,但是出现未生成或者生成状态有误的情况。


  1. 产品程序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. 参数设置异常或人为因素


       2.1  负责审核出库单的仓管员没有应收/付单的新增权限,需授予权限或取消勾选应收/付款管理参数【自动生成应收/付单验证权限】

       2.2  应收/付单生成方式由异步改为同步(该参数默认隐藏,可从BOS中放出)

       2.3  人为删除了应收单,误以为未生成

  3. download

    其中2.1和2.3可通过查询在审核出入库单据前后的上机操作日志来判断问题产生的异常点。如下图所示,能看出是由于审核入库单的人没有应付单的新增权限导致未生成。

    图片.png


  4. 检查了参数设置后未发现问题,可以开启下推日志,后续跟踪异常


    --下推写日志:--,'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

    图片.png

    图片.png


  5. 常见异常案例

    4.1  异常1:由于对采购订单反写的冲突操作导致的应付单审核失败。

    图片.png

    解决1:关闭反写网控。

    图片.png

    def BeforeWriteBack(e):
      e.IsCancelNetworkCtrl=True


    4.2  异常2:付款计划页签订单号的应付金额汇总值不等于应付单明细页签订单号的价税合计。

    图片.png

    解决2:可能是保存校验异常,如果是2021年3月份补丁之前的版本,可以关闭保存校验。

    图片.png

    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

    图片.png

    图片.png




    解决3:取消应收/付单携带订单收/付款计划的参数。如下图所示,应收应付均有这个参数。

    image.png

    如果是低版本的,前台还没有此参数,可以在后台数据库执行下列语句取消参数。

             --上游单据下推应收应付单时,不携带上游单据的收付款计划:
             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)。执行超时已过期。完成操作之前已超时或服务器未响应。

    image.png

    解决4:安装目录的website下的common.config文件中加上如下节点后续再观察,改了之后针对分录小的单据会走原来的逻辑(20行分录的),超过20行分录的走新逻辑,插入速度会变快,但是会变为表锁,整体执行速度是会变快的,但是要确认其他业务不受影响。修改之前请注意先备份下common.config文件。

    image.png



    4.5  异常5:执行超时已过期。完成操作之前已超时或服务器未响应。 

    image.png

    解决5:可能是数据库中出现阻塞,要先设置好扩展事件能够抓取到阻塞语句,才能知道具体阻塞原因。SQL Server中如何自动抓取阻塞的方法可以参考:https://vip.kingdee.com/article/372792524337201152?productLineId=1&isKnowledge=2。以此次遇到的问题为例,抓取到阻塞信息后分析发现是由于对应收单的表重建索引和插入应收单表阻塞了,故修改重建索引时间即可解决此问题。


    4.6  异常6:正在进行信用重算,不允许执行当前操作。 

    image.png

赞 15