Python干预销售物流信息列表手工刷新物流单号条数限制案例

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:1

Python干预销售物流信息列表手工刷新物流单号条数限制案例

    销售物流信息列表支持手工刷新物流详细信息,但标准功能基于操作时间的原因默认会控制每次只能勾选100条记录来刷新,且每刷新一条物流单号的详细信息就会停止1秒再刷新下一条(快递100建议不要刷新太过频繁,否则可能会被视为恶意请求),所以100条物流单号记录的刷新至少要等待100秒后才能完成,这在操作上是比较久的,默认的记录条数超过100的提示信息如下图1-1所示:

图1-1


    对于上面100条记录的限制少部分客户认为太小,尤其是在客户想批量刷新历史物流单号数据的情况下,基于此原因,标准功能在2024年8月正式补丁中将提供二开方案,目前标准功能不会通过快递100参数来控制这些逻辑(标准功能对于参数的添加是比较谨慎的),客户可参阅本帖子二开干预相关逻辑,下面介绍详细步骤:

    首先升级到2024年8月正式补丁,扩展销售物流信息,添加Python列表插件,如下图1-2所示:

图1-2


    上图1-2中的1000,500等值可根据需求修改,Python源代码在右侧:Demo.zip。如果弹出Python错误校验信息则可忽略,另外如果不能添加Python插件,可二开元数据后直接保存,然后用XML视图打开并手工输入Python脚本,XML视图下的脚本如下图1-3所示:

图1-3


XML脚本如下:

<FormMetadata>
  <BusinessInfo>
    <BusinessInfo>
      <Elements>
        <Form action="edit" oid="SAL_OrderLogisticsidInfo" ElementType="400" ElementStyle="0">
          <Id>34959266-5860-4283-b760-551cb6b216fe</Id>
          <ListPlugins>
            <PlugIn ElementType="0" ElementStyle="0">
              <ClassName>D49E566B-5E9F-445F-9A86-7CDDE15BDDA2</ClassName>
              <PlugInType>1</PlugInType>
              <PyScript># -*- coding: utf-8 -*-
#销售物流信息列表插件试例
import clr
clr.AddReference('System')
clr.AddReference('System.Core')
clr.AddReference('Kingdee.BOS')
clr.AddReference('Kingdee.BOS.App')
clr.AddReference('Kingdee.BOS.Core')
clr.AddReference('Kingdee.K3.SCM.Sal.Business.PlugIn')
from System import *
from System.Diagnostics import *
from System.Linq import *
from Kingdee.BOS.Core import *
from Kingdee.BOS.Core.DynamicForm import *
from Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel import *
from Kingdee.BOS.Core.Const import *
from Kingdee.K3.SCM.Sal.Business.PlugIn import *
def OnInitialize(e):
    #重置最大刷新条数为1000
    SalLogistInfoList.CountPerExecute = 1000;
    #重置物流单号刷新间隔时间为500毫秒(一个物流单号刷新详细信息后会休息指定毫秒数后再刷新下一个单),默认是1000毫秒
    SalLogistInfoList.IntervalMillisecond = 500;</PyScript>
            </PlugIn>
          </ListPlugins>
        </Form>
      </Elements>
    </BusinessInfo>
  </BusinessInfo>
</FormMetadata>


    从上面的步骤可以看到,这个Python插件只是修改了类 SalLogistInfoList 的两个静态字段值,CountPerExecute 字段不宜过大,否则刷新时会耗时久, IntervalMillisecond 字段不宜过小,否则很容易在极短时间内请求巨量快递100接口,这种可能会被快递100标识为恶意请求。


存在的问题:

    1,由于是使用Python插件修改了类的静态变量,如果启用了此二开插件后又因为不想使用而禁用,则并不会回退到星空出厂时的100条限制记录,想要恢复出厂设置,则必须禁用二开插件后重启IIS(只要挂了二开Python插件后打开过销售物流信息列表,则 SalLogistInfoList 类的 CountPerExecute 字段值就会被修改,在重启IIS前它都是生效的)。

    2,星空应用如果是分布式部署,则Python插件需要在每个应用服务器上都挂载。



Python干预销售物流信息列表手工刷新物流单号条数限制案例

销售物流信息列表支持手工刷新物流详细信息,但标准功能基于操作时间的原因默认会控制每次只能勾选100条记录来刷新,且每刷新一条物流...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息