#星空云诊所#:云诊所-如何在自动下推中触发单据写的各种值更新事件原创
金蝶云社区-云社区用户g7737637
云社区用户g7737637
41人赞赏了该文章 902次浏览 未经作者许可,禁止转载编辑于2022年12月26日 11:34:06

在项目开发过程中,经常会出现调用标准单据的保存方法,为啥值更新事件没触发呢?曾经在有一个销售订单下推销售出库单时,里面有个实际发货量里写了很多值更新事件,如果不触发会造成保存的单据很多地方是有问题的,首先发现的问题是明显库存,提示负库存,查原因是发货量这边会根据单位进行换算,写了大量的值更新事件,好了,找到原因了,又要如何解决呢?

解决方案如下:

一、首先需要构建一个视图,在视图里跟实际发货量赋值,并触发值更新事件,可是这个字段下推后各数据包都有了,先讲这些数据保存后,根据产生的主键,构建视图,实现过程如下:

     

 string number = saveResult.OperateResult[0].Number.ToString();

             

                //获取元数据服务和构建视图,更新出货量,并触发值更新事件

             

                FormMetadata meta = (FormMetadata)Kingdee.BOS.ServiceHelper.MetaDataServiceHelper.Load(this.Context, "SAL_OUTSTOCK");

                IDynamicFormView OUTSTOCKview = CreateBillView(this.Context, "SAL_OUTSTOCK", meta, fid);

  二、给视图赋值,并触发值更新事件

      

    OUTSTOCKview.Model.SetValue("FRealQty", outStockQty, 0);//含税单价字段赋值,row为具体行号

                OUTSTOCKview.InvokeFieldUpdateService("FRealQty", 0);//联动触发含税单价值更新事件,row为具体行号

            注意:OUTSTOCKview.InvokeFieldUpdateService("FRealQty", 0);这段代码才会去触发实际发货量的值更新事件,这样才能保证生成的销售出库单是正确的。否则不会去触发值更新事件的。

三、调保存、提交和审核方法

    OUTSTOCKview.InvokeFormOperation(Kingdee.BOS.Core.DynamicForm.FormOperationEnum.Save);

                OUTSTOCKview.InvokeFormOperation(Kingdee.BOS.Core.DynamicForm.FormOperationEnum.Submit); //自动提交

                OUTSTOCKview.InvokeFormOperation(Kingdee.BOS.Core.DynamicForm.FormOperationEnum.Audit);  //自动提交和审核

    


赞 41