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源代码在右侧:
。如果弹出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干预销售物流信息列表手工刷新物流单号条数限制案例
本文2024-09-23 02:42:46发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-154212.html