基础档案后台CO应用实例_存货档案自动同步功能

存货档案自动同步功能

toolbar按钮二开插件预置:直接在原存货档案卡片的“保存”按钮进行实现同步功能。

--meta库
delete from AA_CustomerButton  where cButtonKey ='InvCOtoSync'
insert into AA_CustomerButton (cButtonKey,cButtonType,cProjectNO,cFormKey,cVoucherKey,cKeyBefore,iOrder,cGroup,cCustomerObjectName,cCaption,cLocaleID,cImage,cToolTip,cHotKey,bInneralCommand,cVariant,cVisibleAsKey,cEnableAsKey,cSubID,DependenceSubIdList,iheightRow ,iSetGroupRow )                        values('InvCOtoSync','system','U870','Inventory_Edit','Inventory_Edit','SaveRs',0,'bj','U8ArchiveSyn_inv.clsToolbarCommon','存货同步','ZH-CN','SaveRs','调用基础档案后台CO同步更新存货档案','','1','调用基础档案后台CO同步更新存货档案','SaveRs','SaveRs','','',1,2)

二开插件代码实现:

Public g_oLogin As Object 'UFLoginSQL.Login  '设置Login对象
Public SrvDB As Object ' U8SrvTrans.IClsCommon '设置公共数据库事务处理对象
Private Function Init(ologin As Object) As Boolean
    On Error Resume Next
    Set g_oLogin = ologin
    If g_oLogin Is Nothing Then
        ShowMsg g_oPub.GetResString("U8.AA.ARCHIVE.COMMON.nologin") '"没有传入Login对象!"
        Exit Function
    End If
    Set SrvDB = CreateObject("U8SrvTrans.IClsCommon")
    If SrvDB Is Nothing Then
        ShowMsg g_oPub.GetResString("U8.AA.ARCHIVE.COMMON.loadsrvdbfail") '"创建CO对象失败!"
        Exit Function
    End If
    SrvDB.Init Replace(ologin.UfDbName, "ufdata_001_2019", "ufdata_002_2019") '001 是源账套,002是目标账套
    SrvDB.SetLogin ologin
    If SrvDB.Status = False Then
        ShowMsg g_oPub.GetResString("U8.AA.ARCHIVE.COMMON.dbconnectfail") '"数据连接失败!"
        Exit Function
    End If
    Init = True
End Function

Public Function AfterRunSysCommand(ByVal objLogin As Object, ByVal objForm As Object, ByVal objVoucher As Object, _
                            ByVal sKey As String, ByVal VarentValue As Variant, ByRef Cancel As Boolean, ByVal other As String)
    Dim sErrTmp As String
    Dim succeed As Boolean
    'objForm.m_SaveXML 串可以再次加工
    If objForm.OperationType = 1 Then '新增保存
        succeed = SrvDB.Add(objForm.m_SaveXML, "Inventory", sErrTmp)
    Else                              '修改保存
        succeed = SrvDB.Modify(objForm.m_SaveXML, "Inventory", sErrTmp)
    End If
    
End Function

注:如上是直接通过预置存货档案的系统按钮“保存”的插件机制实现了从一个账套调用基础档案CO自动同步到另外一个账套的过程,如果是其他应用场景则需要自行创建U8Login对象、XML串;

很多人问c#如何调用
首先引用com

 U8SrvTrans.IClsCommonClass SrvDB = new U8SrvTrans.IClsCommonClass();
///第一步 初始化CO
SrvDB.InitNew(DG_login);
if (!SrvDB.Status)
{
    throw new Exception("初始化CO接口失败!" + errMsg);
}

///第二步 
//调用co新增
bool flag = SrvDB.Add(ref doc, ref vouchType, ref errMsg);
//调用co修改
//bool flag = SrvDB.Modify(ref doc, ref vouchType, ref errMsg);

是不是很简单

业务合作或技术交流请加我微信

posted @ 2020-09-23 13:21  涛神依旧  阅读(1571)  评论(1编辑  收藏  举报