这是系统自带的一些按钮的事件ID和名称
300014 |
单据拆分后事件 |
300013 |
单据拆分前事件 |
300012 |
单据合并后事件 |
300011 |
单据合并前事件 |
300010 |
单据关联反写后事件 |
300009 |
单据关联反写前事件 |
300008 |
关闭/反关闭单据后事件 |
300007 |
关闭/反关闭单据前事件 |
300006 |
作废/反作废单据后事件 |
300005 |
作废/反作废单据前事件 |
300004 |
删除单据后事件 |
300003 |
删除单据前事件 |
300002 |
序时簿复制后事件 |
300001 |
序时簿复制前事件 |
100001 |
生成凭证结束反写事件 |
100000 |
生成凭证结束反写事件 |
200003 |
审核退出前事件 |
200002 |
审核反写事件 |
200001 |
审核前事件 |
--场景: 客户要求在系统自带的按钮[关闭]或者[反关闭]来更新表中对应的字段值.
--步骤:
1.0 在C#建立类库 命名空间为BOS_BillEvent_PlugIns 类型为 Class3 然后实现 bool HookInvoke(long EventID, KFO.Dictionary dctParams) 方法,
1.1 参数说明:EventID 请求的事件ID(如上图所示) dctParams的值域 为 sDsn|连接字符串、BillInterID|单据的内码、TableHeadName|表名、CloseSwitch|0/1(关闭/反关闭)
string sDsn = dctParams.GetValue("sDsn").ToString();//数据连接
string BillInterID = dctParams.GetValue("BillInterID").ToString();//单据唯一值
string TableHeadName = dctParams.GetValue("TableHeadName").ToString();//单据的表名
string CloseSwitch = dctParams.GetValue("CloseSwitch").ToString();
switch (TableHeadName)
{
case "SEOrder"://销售订单
if (CloseSwitch == "0")//关闭
{
//逻辑处理...
}
else//反关闭
{
//逻辑处理...
}
break;
case "ICSale"://发票
break;
}
2.0 在数据库中找到表[t_ThirdPartyComponent],插入对应的信息 INSERT INTO t_ThirdPartyComponent (FTypeID,FTypeDetailID,FIndex,FComponentSrv,FDescription)VALUES (2,300008,-9999,‘BOS_BillEvent_PlugIns.Class3‘,‘关闭后触发测试‘)
2.1 FTypeID 0为客户端插件;2为中间层插件 FTypeDetailID 当FtypeId为2的时候 表示中间层响应事件类型 FComponentSrv 表示 命名空间.类型