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

​快递100及快递管家编写并调试简单的Python插件

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

​快递100及快递管家编写并调试简单的Python插件

    金蝶云星空供应链领域销售模块对接的快递100和快递管家只能满足部分客户的需求,对于一些客户的特定需求,如果不是比较通用,通版一般不会纳入后续的补丁中,客户可以参考以下快递100及快递管家二开相关的帖子:https://vip.kingdee.com/article/167297791734694912 ,https://vip.kingdee.com/article/173521351129519360 ,https://vip.kingdee.com/article/216286725399032576 ,https://vip.kingdee.com/article/223033855618894592  如果以上二开帖子的内容满足不了客户,或者客户不想写C#插件代码(C#二开插件代码有个明显的缺点,那就是必须先编写C#代码,然后编译成.dll动态链接库文件并上传到金蝶星空系统安装目录中,目录一般为X:\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin,对于公有云客户来说上传比较繁琐,对于多租户来说更是不可用),亦或想通过BOSIDE扩展并输入一些简单的Python代码,则本文是一个可以参考的例子。

      如标题所示,本文主要介绍编写并调试Python插件。由于本文是以调试寄宿在IIS下的星空环境为背景,因此首先要有几个前提条件,那就是本机安装了IIS,安装了金蝶云星空,安装了工作负荷包含Python开发的Visual Studio(注意这里必须是Python文件与IIS在同一机器上)。如果是寄宿在ASP.NET Development Server或IIS Express下也是可以类似地附加进程并调试,如下图1-1和图1-2所示:

image.webp

图1-1


image.webp

图1-2


    打开Visual Studio,创建一个Python应用程序项目,在项目中添加一个Python类,文件命名为KingdeeGalaxy.py,在文件中输入以下Python代码:

import clr
clr.AddReference('System')
clr.AddReference('Newtonsoft.Json')
clr.AddReference('Kingdee.BOS.Core')

from Newtonsoft.Json.Linq import *
from Kingdee.BOS.Core import *
from System import *

def BarItemClick(e):
    if e.BarItemKey.Equals("tbManualnputLogistics", StringComparison.OrdinalIgnoreCase):
        this.View.ShowMessage("Python Test from KingdeeGalaxy.py File")
        
def DataChanged(e):
    if e.Field.Key.Equals("FItems", StringComparison.OrdinalIgnoreCase):
        stringifyItems = Convert.ToString(this.View.Model.GetValue("FItems", e.Row))
        if(len(stringifyItems) > 0):
            items = JArray.Parse(stringifyItems);
            materialNames = ""
            for item in items:
                itemName = str(item["itemName"])
                if not materialNames.__contains__(itemName):
                    materialNames = materialNames + " " + itemName
            this.View.Model.SetValue("FComment", materialNames.strip(), e.Row)

    注意不要复制以上代码,因为HTML网页会转义空格,下文的Python代码类似,都不要直接复制,文章后面附件有相关代码,可直接下载附件,附件中带Convert后缀的文件也模拟了一个单据转换Python插件,有兴趣的可以看看,代码如下图1-3所示:

image.webp

    图1-3


    打开BOS IDE,扩展'获取电子面单'动态表单,修改字段'快递管家属性&物料清单'(比较老的星空版本中的名称可能只有'物料清单',没有&前面的),勾选即时触发值更新事件,如下图2-1所示:

image.webp

图2-1


    然后在表单插件列表中注册Python插件(此插件只是调试用,真正做逻辑的是代码里面的KingdeeGalaxy.py 文件,调试无问题事要用KingdeeGalaxy.py文件中的内容替换),如下图2-2所示:

image.webp

图2-2


    Python脚本如下:

import clr
clr.AddReference('IronPython')
from IronPython.Hosting import Python

def wrap_d(f):
    func_name = f.__name__
    del f
    
    def wrapper(e):
        engine = Python.CreateEngine({'Debug': True})
        scope = engine.CreateScope()
        g = globals()
        for v in ('this',):
            scope.SetVariable(v, g[v])
        engine.CreateScriptSourceF

​快递100及快递管家编写并调试简单的Python插件

金蝶云星空供应链领域销售模块对接的快递100和快递管家只能满足部分客户的需求,对于一些客户的特定需求,如果不是比较通用,通版一...
点击下载文档文档为doc格式

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

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