3.1、表单插件,单据体、取值和赋值、值更新原创
金蝶云社区-林荫大道_找工作身份
林荫大道_找工作
31人赞赏了该文章 2.5万次浏览 未经作者许可,禁止转载编辑于2020年07月02日 15:08:43
summary-icon摘要由AI智能服务提供

本文档介绍了一个金蝶ERP系统中的插件开发过程,该插件用于在销售订单中自动获取和设置物料编码、单位、税率、销售数量及含税单价等信息。过程中涉及到值更新服务调用、动态链接库(dll)的重新生成、以及在代码中给单据体和单据头赋值。遇到并解决了因缺少引用导致的编译错误,最终实现了在销售订单中自动填充并更新相关信息的功能。


3、单据体、取值和赋值、GetValue和SetValue



上一节单据体取值,只带出物料编码,后面物料的单位等等都没有带出,需要在代码里面做值更新



1、 //单据体第一行,值更新

this.View.InvokeFieldUpdateService("FMaterialId", 0);


2、重新生成dll


3、重新打开销售订单,点按钮,自动获取物料编码,同时触发值更新,带出物料单位,税率等

image.png


-------------------------------------------------------------------------------------------------------------------------



4、扩展使用,第0行,给销售数量赋值100

this.View.Model.SetValue("FQty",100,0);

image.png




5、//扩展使用,第0行,给含税单价赋值88.88

this.View.Model.SetValue("FTaxPrice", 88.88, 0);

image.png




6、重新生成dll,报错



类型“Kingdee.BOS.Orm.DataEntity.DynamicObject”在未被引用的程序集中定义。


必须添加对程序集“Kingdee.BOS.DataEntity, Version=7.5.1658.5, Culture=neutral, PublicKeyToken=null”的引用。


image.png


7、添加单据体引用,重新生成dll,重新打开销售订单,自动获取物料编码、数量、单价


image.png


image.png




8、金额没有,值更新,数量,重新生成dll

this.View.InvokeFieldUpdateService("FQty", 0);



image.png


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

//引用
using Kingdee.BOS.Core.Bill.PlugIn;
using Kingdee.BOS;

//插件名字
//热启动,不用重启IIS,引用
using System.ComponentModel;


namespace Kingdee.Bos.ObjectName.Bill.Plugln
{
    //插件名字
    [Description("表单插件获取和设置值")]
    //热启动,不用重启IIS
    [Kingdee.BOS.Util.HotUpdate]
    
    
    //继承函数:AbstractBillPlugIn
    public class ClassName:AbstractBillPlugIn
    {
        //重写点击按钮函数
        public override void BarItemClick(BOS.Core.DynamicForm.PlugIn.Args.BarItemClickEventArgs e)
        {
            base.BarItemClick(e);
            
            
            //加一个判断条件,当按钮=新增的按钮时候,才触发
          if (e.BarItemKey == "YDIE_tbGetSetValue")
          {
            //给单据头,备注赋值,你好
            this.View.Model.SetValue("FNote", "你好");
            
            //获取备注FNote的值,并强制转换成字符串.ToString()
            string FNote = this.View.Model.GetValue("FNote").ToString();
            
            //把获取的值,给新增的字段,备注1,FNote1
            this.View.Model.SetValue("FNote1", FNote + "赋值成功");
            
            //把客户FcustId,赋值内码300638
            this.View.Model.SetValue("FcustId", 300638);
            
            
            //定义数组,多个客户
            object[] custs = new object[] { "300638", "322070", "454978" };
            
            //给数组赋值
            this.View.Model.SetValue("F_YDIE_CustS", custs);
            
             //给单据体物料FMaterialId编码,第0行,赋值
             this.View.Model.SetItemValueByNumber("FMaterialId", "003", 0);
             
             //给单据体物料内码ID,第1行,赋值
             this.View.Model.SetItemValueByID("FMaterialId", "310992", 1);
             
             //单据体第一行,值更新
             this.View.InvokeFieldUpdateService("FMaterialId", 0);
             
             //扩展使用,第0行,给销售数量赋值100
             this.View.Model.SetValue("FQty",100,0);
             
             //扩展使用,第0行,给含税单价赋值88.88
             this.View.Model.SetValue("FTaxPrice", 88.88, 0);
             
              //值更新,数量
             this.View.InvokeFieldUpdateService("FQty", 0);
             
             
            //刷新字段
            //this.View.UpdateView("FNote");
            //this.View.UpdateView("FNote1");
            //this.View.UpdateView("FcustId");
            //this.View.UpdateView("F_YDIE_CustS");
            //刷新全部字段
            this.View.UpdateView();
          }
        }
    }
}



总目录链接

https://vip.kingdee.com/article/64993872014591232


图标赞 31
31人点赞
还没有人点赞,快来当第一个点赞的人吧!
图标打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!