今天要做的就是在標准的單據的標准按鈕之前進行驗證操作,如果驗證通過執行保存,如果不通過給予提示不進行保存。
下面拿銷售出庫單的保存按鈕進行舉例:
第一步:在程序中 ctrl+Shift 點擊保存之后用寫字板,粘貼 key
取到 : 單據Key=0303、保存,按鈕Tooltip:保存 F6,按鈕Key:tlbSave;
第二步:VB工程及保存按鈕前操作類
Public Function BeforeRunSysCommand(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) 這里可以寫自己的判斷邏輯,取值方法在最下面 End Function '初始化 Public Function init(ByVal objLogin As Object, ByVal objForm As Object, ByVal objVoucher As Object, msbar As Object) End Function
注意:在方法中Cancel = true為取消當前操作,並不往后執行
第三步:注冊插件C:\U8SOFT\KK\EFBASE\UI_UserConfig.xml
<dll> <userdll>U8SO_SOMainSaveButton.BeforeSaveClass</userdll> <function> <userfunction>BeforeRunSysCommand</userfunction> </function> </dll>
第四步:注冊腳步:數據庫UFMeta_999
delete from aa_customerbutton where cButtonID = '088EC6DB-2380-4457-93BF-C618BE4767EA' go insert into aa_customerbutton ([cButtonID],[cButtonKey],[cButtonType],[cProjectNO],[cFormKey], [cVoucherKey],[cKeyBefore],[iOrder],[cGroup],[cCustomerObjectName],[cCaption],[cLocaleID],[cImage], [cToolTip],[cHotKey],[bInneralCommand],[cVariant],[cVisibleAsKey],[cEnableAsKey]) values('{088EC6DB-2380-4457-93BF-C618BE4767EA}','btntest','system','U8SO_SOMainSaveButton','0303', '0303','tlbSave','0','IEDIT','U8SO_SOMainSaveButton.BeforeSaveClass','銷售出庫單保存校驗','zh-cn','','銷售出庫單保存校驗', 'Ctrl+S',1,'銷售出庫單保存校驗','tlbSave','tlbSave') go
腳本說明:
cButtonID:可以是 newid()
cButtonKey:要唯一,有意義的名字
cButtonType:按鈕類型 default\menu\system
cFormKey: 窗體名字,單據Key
cVoucherKey:單據Key
cKeyBefore: 要處理的按鈕key
cGroup : 按鈕所在組
cCustomerObjectName:工程名.類名EFInterface_demo.cls_aa_customerbutton。如果這個不對不會進入VB
cToolTip:提示
cVisibleAsKey:當前按鈕與哪個按鈕是否可見狀態一樣
cEnableAsKey:當前按鈕與哪個按鈕是否可用狀態一樣
cImage:按鈕圖標 credit 在 icons圖片名
第五步:vb工程啟動項選擇 EnterprisePortal.exe
第六步:在VB一程打上斷點,並生成dll文件到C:\U8SOFT\UAP下,運行VB工程進行調試,效果如下:
備注:記錄一下相關腳本
一、記錄一下取值方式等
ls_dDate = objVoucher.headerText("dDate") 獲取結算日期 // dDate U8字段名
ls_iExchRate = objVoucher.headerText("iExchRate")’獲取匯率
ls_iQuantity = objVoucher.bodyText(i,"iQuantity")'獲取數量
二、銷售訂單腳本注冊如下:
delete from aa_customerbutton where cButtonID = '088EC6DB-2380-4457-93BF-C618BE4767EA' go insert into aa_customerbutton ([cButtonID],[cButtonKey],[cButtonType],[cProjectNO],[cFormKey], [cVoucherKey],[cKeyBefore],[iOrder],[cGroup],[cCustomerObjectName],[cCaption],[cLocaleID],[cImage], [cToolTip],[cHotKey],[bInneralCommand],[cVariant],[cVisibleAsKey],[cEnableAsKey]) values('{088EC6DB-2380-4457-93BF-C618BE4767EA}','btntest','system','U8SO_SOMainSaveButton','17', '17','save','0','IEDIT','U8SO_SOMainSaveButton.BeforeSaveClass','銷售訂單保存校驗','zh-cn','','銷售訂單保存校驗', 'Ctrl+S',1,'銷售訂單保存校驗','save','save') go