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

【套打】关于单据套打数据与界面数据不一致、丢失的问题排查方案

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

【套打】关于单据套打数据与界面数据不一致、丢失的问题排查方案

<0>概述

经常会有客户反馈针对个别单据出现套打对应的字段丢失问题,但过段时间打印异常问题。而单据类套打是针对单据上的字段是直接从数据库中取对应的数据,仅针对嵌套的基础资料字段才会有缓存。排除掉套打中不支持的字段取值外,所有字段的取值都应该与数据库中的一致,也就是说不会出现上一次打印和这一次打印不一致的问题(除非数据库对应数据被其他场景修改)。基于以上场景,提供了一个客户自查的排查方案。


<1>排查方案

A:对应操作的校验器验证字段是否录入

以生产领料单增加的备注字段FMulLangText为例子,在对应套打的前置操作校验字段是否已经录入(如保存操作、审核操作),具体对应的操作时机点为能够将数据写入数据库的时机点,也就是说我们通过对应保存时机的对应字段是有值的,去保证对应数据库有值,从而在套打时能够获取对应的数据。

image.webp


image.webp

image.webp


B:通过python脚本记录关键单据界面的操作详情

以单据界面的字段操作为例,我们能够记录的时机比较多,包括对应字段的值更新事件、对应界面操作的时间。比方说有可能存在这样的情况,排查上机操作日志是先进行保存,而后打印,再进行保存,也就是说不排除在第一次保存是对应值漏填而进行打印,最终发现后又进行保存。因此我们在单据界面的日志中应该记录对应的时间戳和对应数据,确保时机点有值。

image.webp

image.webp

image.webp

原则上监控到界面数据变化和操作已经能够排除一部分问题,但是还是强调界面上数据与数据库的数据是有差异的,在没有更新到数据库前一切都是假象,所以如果有条件的同学可以在python中执行对应字段的数据库查询(并不太熟悉python参数化,这里只是提供示例)

image.webp

image.webp

clr.AddReference('System')

clr.AddReference('Kingdee.BOS')

clr.AddReference('Kingdee.BOS.Core')

clr.AddReference('Kingdee.BOS.ServiceHelper')

clr.AddReference('Kingdee.BOS.App')

from Kingdee.BOS import *

from Kingdee.BOS.Core import *

from Kingdee.BOS.ServiceHelper import *

from System import *

from Kingdee.BOS.Log import *

from Kingdee.BOS.App.Data import *

def DataChanged(e):

    if e.Field.Key.Equals('FMulLangText',StringComparison.OrdinalIgnoreCase):

        logMsg = 'FMulLangText DataChanged, NewVal:'+str(e.NewValue);

        Logger.Info('Track DataChanged',logMsg);

def BeforeDoOperation(e):

    if e.Operation.FormOperation.Operation.Equals('Save',StringComparison.OrdinalIgnoreCase):

        logMsg = 'BeforeSave ModelVal:'+str(this.Model.GetValue('FMulLangText'));

        fid = this.Model.DataObject['Id'];

        if fid is not None: 

            dbSet = DBUtils.ExecuteDataSet(this.View.Context,'select FMulLangText from T_PRD_PICKMTRL_l where fid = '+str(fid)+' and flocaleid = 2052');

            if dbSet.Tables.Count>0 and dbSet.Tables[0].Rows.Count>0:

                dbVal = dbSet.Tables[0].Rows[0][0];

                logMsg += '; SQL Search:'+str(dbVal);

        Logger.Info('Track BeforeSaveOperation',logMsg);

    else:

        if e.Operation.FormOperation.Ope

【套打】关于单据套打数据与界面数据不一致、丢失的问题排查方案

<0>概述经常会有客户反馈针对个别单据出现套打对应的字段丢失问题,但过段时间打印异常问题。而单据类套打是针对单据上的字段是直接从数据...
点击下载文档文档为doc格式

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

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