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

金蝶二开Python代码-常用语法

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

金蝶二开Python代码-常用语法

        作为金蝶云星空开发的一员,平时经常会用到C#语言写一些功能插件来完成日常的工作。云星空可以支持C#语言和Pyhont语言。C#写插件主要调试方便,并且很容易跟踪到数据异常问题,C#插件注册依赖IIS服务注册插件就需要重启IIS服务。面对一些小的功能其实使用Python语言就能非常方便注册插件即生效,尤其是客户使用公有云就非常方便无需上天梯打补丁。学习Python写一些小功能非常有必要,记录整理一下常用一些固定的语法,方便自己日后查询使用。


一、上下文对象Context

    上下文对象需要在登录金蝶产品后获取到,没有登录就会提示未登录信息。因此获取前需要判断是否登录

    this.Context.UserId;#当前用户ID

    this.Context.UserName;#当前用户名称

    this.Context.UserPhone;#当前用户手机号

    this.Context.CurrentOrganizationInfo.ID;#当前组织Id

    this.Context.CurrentOrganizationInfo.Name;#当前组织名称

    this.Context.DBId;#当前数据中心Id

    this.Context.DataCenterNumber;#当前数据中心编码

    this.Context.DataCenterName;#当前数据中心名称

    this.Context.IpAddress;#客户端本机网络信息:IP、MAC等


二、视图层对象View

     可理解为当前界面,界面类插件,服务类的插件没有这个,View能为开发提供很多特有的功能。

    2.1、View的常用属性

    this.View.BillBusinessInfo;#单据的业务逻辑元数据,元数据包含的信息很多,下面列了一下常用的信息

    this.View.BillBusinessInfo.GetBillNoField().FieldName;#单据编号字段名

    this.View.BillBusinessInfo.GetBillStatusField().FieldName;#单据状态字段名

    this.View.BillBusinessInfo.GetBillTypeField().FieldName;#单据类型字段名

    this.View.BillBusinessInfo.GetForm().Id;#单据FormId

    this.View.BillBusinessInfo.MainOrgField.FieldName;#主业务组织字段名

    this.View.BillBusinessInfo.GetEntity("FBillHead").TableName;#单据头表名

    this.View.BillBusinessInfo.GetEntity("实体标识").TableName;#实体主表名

    this.View.BillBusinessInfo.GetEntity("实体标识").SplitTables;#实体所有拆分表


    this.View.OpenParameter;#表单入口参数

    this.View.OpenParameter.Status;#当前界面状态:0,新增;1,查看;2,修改;

    this.View.OpenParameter.GetCustomParameter("参数标识");#获取单据打开传入的参数


    this.View.ParentFormView;#获取父页面的View

    this.View.ParentFormView.BillBusinessInfo.GetForm().Id;#父页面的FormId,用来判断单据是从哪里进来的


    2.2、View的常用方法

    this.View.GetFormTitle();#获取单据标题

    this.View.SetFormTitle(LocaleValue("新标题"));#修改单据标题

    this.View.GetFormOperation("操作代码");#获取单据的一个操作实例对象

    this.View.InvokeFormOperation("操作代码");#触发单据的某个操作:保存、提交、审核、关闭 等!

    this.View.GetControl[控件类]("控件标识");#获取单据上的控件:按钮、菜单等,可用来设置控件的状态(可见性,锁定性等)

    this.View.InvokeFieldUpdateService("字段标识",行号);#触发字段值更新,单据头字段行号填0

    #触发实体服务规则

    obj=BOSActionExecuteContext(this.View);

    this.View.RuleContainer.RaiseDataChanged("字段标识", 字段所在实体行数据包,obj);#触发实体服务规则


    #显示3种提示信息

    this.View.ShowMessage("绿色背景提示信息");#显示正常提示信息

    this.View.ShowWarnningMessage("黄色背景提示信息");#显示警告提示信息

    this.View.ShowErrMessage("红色背景提示信息");#显示错误提示信息


    #刷新界面数据,修改实体数据包后需要刷新重新读取,必须传标识,不建议粗暴刷新整个单据

    this.View.UpdateView("字段标识/单据体标识");#刷新界面数据


三、单据数据模型Model

    单据的实体数据包,赋值和取值都是通过Model获取,非常重要、非常重要、非常重要!!!

    this.View.Model;#单据数据模型,单据的实体数据包获取

    this.View.Model.DataObject;#单据的完整数据包,相当于前面讲的单据头实体数据包

    this.View.Model.GetEntryCurrentRowIndex("单据体标识");#获取单据体当前焦点行号

    this.View.Model.GetEntryRowCount("单据体标识");#获取单据体行数

    this.View.Model.CreateNewEntryRow("单据体标识");#为单据体新增一行

    this.View.Model.BatchCreateNewEntryRow("单据体标识",x);#批量为单据体新增x行

    this.View.Model.InsertEntryRow("单据体标识", i);#在第i行前插入1行

    this.View.Model.DeleteEntryRow("单据体标识", i);#删除第i行

    this.View.Model.DeleteEntryData("单据体标识");#清空整个单据体数据


    this.View.Model.GetValue("字段标识",x);#获取第x行(单据头不传x)某字段的值,不同字段类型返回不同类型数据

    this.View.Model.SetValue("字段标识","字段值",x);#更新第x行(单据头不传x)某字段的值,不同字段类型赋值不同类型数据

    this.View.Model.SetItemValueByID("字段标识","内码id",x);#用资料内码id更新第x行资料字段的值

    this.View.Model.SetItemValueByNumber("字段标识","编码",x);#用资料编码更新第x行资料字段的值


四、Python事件

4.1、AfterCreateModelData

        单据新增界面打开时触发,可以获取到单据初始化之后的数据。通常用于对单据新增进行默认值填充,例如,设置默认日期,填充单据体默认数据等

def AfterCreateModelData(e):

        billObj = this.Model.DataObject;#单据完整数据包,如需通过实体数据包操作读写数据,可从这里开始取

        this.View.Model.SetValue("FDate", "2022-7-1");#设置默认日期

        msg=("{0}").format(this.View.BillBusinessInfo.GetEntity("FBillHead").TableName);

        this.View.ShowMessage(msg);#调试使用


4.2、AfterBindData

        界面数据绑定完毕后触发,通常在这里对字段控件状态进行设置。例如,设置颜色、设置字段锁定性/可见性、设置下拉列表动态枚举选项等

def AfterBindData(e):

        this.View.GetControl("FDate").Enabled=False;#False:锁定,True:解锁

        #this.View.GetControl("控件标识").Visible=False;#False:隐藏,True:显示


4.3、BarItemClick

        单据头菜单点击事件,从参数e中获取菜单标识,来判断是哪个菜单发生了点击。一定要加判断,只需要监听需要的菜单

def BarItemClick(e):

        key=e.BarItemKey.ToUpperInvariant();#菜单标识大写

        if(key=="TESTBTN1".ToUpperInvariant()):

            msg=("菜单[{0}]点击事件捕捉到了,可以继续菜单的功能啦!").format(key);

       

金蝶二开Python代码-常用语法

作为金蝶云星空开发的一员,平时经常会用到C#语言写一些功能插件来完成日常的工作。云星空可以支持C#语言和Pyhont语言。C#写插件主...
点击下载文档文档为doc格式

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

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