乐于分享
好东西不私藏

金蝶云星空二开执行列表之C#定时插件,定时执行sql更新!!

金蝶云星空二开执行列表之C#定时插件,定时执行sql更新!!

大家好,我叫大伟,今天开始给大家继续倒腾金蝶二开插件案列分享,大部分都是非常实用而且能够提升工作效率和增强体验感的小功能。

很早的时候收到过这样的一个需求,是什么呢,目前很多公司应收单和收款单都是没有关联,都是手工进行核销产生关联,有些是通过导入收款单进行核销,也有些是手工和下推结合,那就导致了应收单和收款单没有关联无法上下查,目前还在研究如何关联的问题,但是今天的需求重点是,用户在应收单知道收款日期,那如果下推生成的可以通过反写规则进行实现,如果不是下推是导入或手工收款,则这部分就无法获取收款日期,那我想了一个方案,通过sql语句定期从应收核销表获取收款日期,我觉得这个只是临时的一个方案,可能会有更好的,大家可以自行探索一番,也可以通过执行插件实现别的需求,只要掌握了,很多简单定时任务都可以使用该方案解决。

针对这个需求,如果使用定时任务的方式,python是无法实现的,只能使用C#插件,还有服务端接口开发、执行计划定时任务开发、继承重写标准插件,都是python实现不了的,一定要C#,那我们废话不多说,直接展示代码,具体代码的理解会展示处理。

Python插件案例一之表单插件

按钮事件

(按单号打开业务单据列表

代码如下

using System;

using System.Collections.Generic;

using System.Linq;

using System.Runtime.Remoting.Contexts;

using System.Text;

using System.Threading.Tasks;

using System.ComponentModel;

//从金蝶服务端安装的bin录获取相关dll组件并添加应用

using Kingdee.BOS.Contracts;

using Kingdee.BOS;

using Kingdee.BOS.Core;

using Kingdee.BOS.ServiceHelper;

//定义命名空间名称

namespace getRecPaymentDate

{

    //定义getRecPaymentDatePlan类 继承 IScheduleService 定时任务基类服务接口 

    public class getRecPaymentDatePlan : IScheduleService 

    {

        //定时任务的run方法

        public void Run(Kingdee.BOS.Context ctx, Schedule schedule)

        {

            //通过核销记录更新收款日期 调用DBServiceHelper静态工具类执行数据库操作,当然也可以使用DBUtils

  DBServiceHelper.Execute(ctx,”/*dialect*/exec UpdateReceivablePaymentDate “);

        }

    }

}

操作步骤如下

1、在VS 2022社区版(这个版本免费)右边解决方案管理器,右击项目名称,点击生成.dll组件文件。如图:

2、复制路径并打开找到getRecPaymentDate.dll文件,Ctrl+C复制一下

3、将getRecPaymentDate.dll文件复制到粘贴到金蝶服务端安装BIN目录下,根据自己的服务端路径进行粘贴操作。如图:

4.重启iis,以管理员打开CRM命令dos窗口,输入iisreset命令,看到启动成功,代表OK了。如图:

5.打开金蝶,搜索执行计划并打开,新增执行计划,因为已经新增了,我就不再展示新增步骤,这个很简单,重点强调关键问题。如下图:

本次使用的是Cron,能实现复杂的定时逻辑(不懂CRON可以直接问ai生成你想要的结果),每周一到周五固定的9点和16点执行一次,当然你也可以按照分,天,周,月等,进行设置。

    配置开始结束时间和配置服务插件,服务插件是重点,必须按照金蝶的规则,否则无法执行,规则是:

    getRecPaymentDate.getRecPaymentDatePlan,getRecPaymentDate命名空间.类名,组件名称(即生成的.dll的文件名)

    6、最后看一下最近执行的效果,如图所示:

    如果这篇文章对你有帮助,欢迎点赞、收藏、转发!有任何问题也欢迎在评论区留言交流!