




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
K/3產(chǎn)品部K/3Cloud技術(shù)開(kāi)發(fā)培訓(xùn)
----BOS業(yè)務(wù)插件開(kāi)發(fā)課程簡(jiǎn)介:
本課程介紹K/3
CloudBOS業(yè)務(wù)插件的開(kāi)發(fā)及配置,以功能講解輔之案例演練幫助學(xué)員快速掌握K/3
Cloud
BOS平臺(tái)的核心功能。
課程說(shuō)明:概述業(yè)務(wù)插件概覽如何開(kāi)發(fā)插件案例演練目錄概述業(yè)務(wù)插件概覽如何開(kāi)發(fā)插件案例演練目錄K/3Cloud分層架構(gòu)圖展示層SilverlightWeb客戶(hù)端WPF桌面客戶(hù)端服務(wù)層動(dòng)態(tài)表單UI生成服務(wù)內(nèi)核層表單動(dòng)態(tài)生成引擎動(dòng)態(tài)表單控制服務(wù)Web服務(wù)器動(dòng)態(tài)表單視圖模型動(dòng)態(tài)表單控制器動(dòng)態(tài)表單數(shù)據(jù)模型擴(kuò)展邏輯層動(dòng)態(tài)表單編程接口表單生成插件表單邏輯服務(wù)表單操作缺省值計(jì)算函數(shù)業(yè)務(wù)插件動(dòng)態(tài)表單元數(shù)據(jù)應(yīng)用服務(wù)器動(dòng)態(tài)表單邏輯組件動(dòng)態(tài)表單服務(wù)端插件動(dòng)態(tài)表單服務(wù)端編程接口數(shù)據(jù)庫(kù)服務(wù)器元數(shù)據(jù)業(yè)務(wù)數(shù)據(jù)校驗(yàn)規(guī)則客戶(hù)端公共編程模型+客戶(hù)端插件+第三方設(shè)備集成接口移動(dòng)客戶(hù)端Office客戶(hù)端HttpHttp業(yè)務(wù)服務(wù)概述業(yè)務(wù)插件概覽如何開(kāi)發(fā)插件案例演練目錄BOS業(yè)務(wù)插件用以解決什么問(wèn)題?標(biāo)準(zhǔn)業(yè)務(wù)對(duì)象的的業(yè)務(wù)邏輯應(yīng)用:標(biāo)準(zhǔn)業(yè)務(wù)對(duì)象沒(méi)有實(shí)現(xiàn)的控制;已有操作和服務(wù)未支持的功能;更靈活的控制方式和客戶(hù)化定制;客戶(hù)二次開(kāi)發(fā)的需求;快速開(kāi)發(fā)、快速實(shí)施、快速應(yīng)用;可配置,可測(cè)試,快速部署;有哪些插件?Web層表單插件列表插件表單構(gòu)建插件App層服務(wù)插件BOS業(yè)務(wù)插件開(kāi)發(fā)概覽插件接口特性使用C#4.0支持繼承和擴(kuò)展已封裝業(yè)務(wù)插件;組織控制;基礎(chǔ)資料分配………支持插件順序支持動(dòng)態(tài)語(yǔ)言IronPython2.6.1BOS業(yè)務(wù)插件開(kāi)發(fā)概覽BOS業(yè)務(wù)插件開(kāi)發(fā)概覽—插件分類(lèi)表單插件用于單個(gè)表單編輯界面運(yùn)行于Web層列表插件用于列表
運(yùn)行于Web層BOS業(yè)務(wù)插件開(kāi)發(fā)概覽–插件分類(lèi)服務(wù)插件掛在操作上的服務(wù)插件,對(duì)于操作進(jìn)行擴(kuò)展和校驗(yàn)器配合使用運(yùn)行于App層插件配置入口
操作列表–編輯操作BOS業(yè)務(wù)插件開(kāi)發(fā)概覽–插件分類(lèi)表單構(gòu)建插件對(duì)于表單界面進(jìn)行自定義的插件運(yùn)行于Web層自定義菜單、控件BOS業(yè)務(wù)插件開(kāi)發(fā)概覽動(dòng)態(tài)表單元數(shù)據(jù)結(jié)構(gòu)BOS業(yè)務(wù)插件開(kāi)發(fā)概覽動(dòng)態(tài)表單元數(shù)據(jù)結(jié)構(gòu)概述業(yè)務(wù)插件概覽如何開(kāi)發(fā)插件接口結(jié)構(gòu)插件中常用的對(duì)象說(shuō)明具體的代碼示例案例演練目錄概述業(yè)務(wù)插件概覽如何開(kāi)發(fā)插件接口結(jié)構(gòu)插件中常用的對(duì)象說(shuō)明具體的代碼示例案例演練目錄如何開(kāi)發(fā)插件–接口結(jié)構(gòu)表單插件和列表插件繼承層次表單單據(jù)單據(jù)列表基礎(chǔ)資料插件針對(duì)對(duì)象動(dòng)態(tài)表單單據(jù)基礎(chǔ)資料如何開(kāi)發(fā)插件–接口結(jié)構(gòu)AbstractBillPlugIn接口動(dòng)態(tài)表單視圖插件編程模型接口定義了視圖模型擴(kuò)展允許通過(guò)接口處理視圖,實(shí)現(xiàn)特定業(yè)務(wù)需求如何開(kāi)發(fā)插件–接口結(jié)構(gòu)OnInitialize請(qǐng)求加載頁(yè)面時(shí)觸發(fā)初始化事件此時(shí)Model還沒(méi)初始化,還是個(gè)空對(duì)象,但View已基本完成初始化;可初始化當(dāng)前插件的一些全局屬性,也可修改當(dāng)前頁(yè)面的控件屬性值,如控件大小、字段標(biāo)題、表單標(biāo)題等等。OnBillInitialize視圖模型初始化事件,在OnInitialize事件之后AfterBindData綁定數(shù)據(jù)后事件處理接口在控件綁定數(shù)據(jù)之后,通常需要根據(jù)其他條件設(shè)置控件的可見(jiàn)性、可用性、背景顏色等樣式。BeforeF7Select基礎(chǔ)資料彈出前事件查詢(xún)選擇基礎(chǔ)資料時(shí),希望列表或模糊查詢(xún)結(jié)果中顯示滿足條件的基礎(chǔ)資料,此時(shí)可以通過(guò)該事件在加載基礎(chǔ)資料數(shù)據(jù)前添加過(guò)濾條件。BeforeClosed窗口關(guān)閉前事件AbstractBillPlugIn的ViewPlugin插件接口如何開(kāi)發(fā)插件–接口結(jié)構(gòu)BarItemClick
菜單單擊事件處理擴(kuò)展接口:點(diǎn)擊事件前進(jìn)行權(quán)限驗(yàn)證、數(shù)據(jù)檢查等等,用戶(hù)也可以在該事件中通過(guò)添加e.Cancel=true取消平臺(tái)內(nèi)置功能,完全自定義處理邏輯.AfterBarItemClick
菜單單擊事件后:指定跳轉(zhuǎn)頁(yè)面、指定刷新頁(yè)面、指定關(guān)閉頁(yè)面等等BeforeDoOperation
操作調(diào)用前事件:根據(jù)操作類(lèi)型設(shè)置操作參數(shù)、傳遞變量AfterDoOperation
操作調(diào)用完成后事件:根據(jù)操作結(jié)果設(shè)置返回值ButtonClick
按鈕單擊事件AfterButtonClick
按鈕單擊后事件AbstractBillPlugIn的ViewPlugin插件接口如何開(kāi)發(fā)插件–接口結(jié)構(gòu)ListViewClick
列表項(xiàng)目單擊事件TreeNodeClick
樹(shù)控件單擊事件TreeDragDrop
樹(shù)控件拖拽EntityRowClick
分錄行單擊事件:在單擊分錄行時(shí)設(shè)置菜單是否可用、刷新代理字段、重新計(jì)算等。AbstractBillPlugIn的ViewPlugin插件接口如何開(kāi)發(fā)插件–接口結(jié)構(gòu)AbstractBillPlugIn的ModelPlugIn接口動(dòng)態(tài)表單數(shù)據(jù)模型插件編程接口定義了數(shù)據(jù)模型擴(kuò)展允許通過(guò)接口處理數(shù)據(jù),以實(shí)現(xiàn)特定業(yè)務(wù)需求如何開(kāi)發(fā)插件–接口結(jié)構(gòu)CreateNewData
數(shù)據(jù)模型創(chuàng)建實(shí)體對(duì)象事件:插件自定義Model.DataObject數(shù)據(jù)包AfterCreateNewData
數(shù)據(jù)模型創(chuàng)建實(shí)體對(duì)象完成后事件:自定義設(shè)置字段默認(rèn)值。BeforeUpdateValue
字段值更新前事件:需要在IDE選中“即時(shí)觸發(fā)值更新事件”屬性,對(duì)即將錄入的值做檢查DataChanged
數(shù)據(jù)改變后事件:需要在IDE選中“即時(shí)觸發(fā)值更新事件”屬性,字段值更新之后可能需要級(jí)聯(lián)觸發(fā)修改其他字段AbstractBillPlugIn插件方法如何開(kāi)發(fā)插件–接口結(jié)構(gòu)CreateNewEntryRow
創(chuàng)建分錄行事件:插件自定義新增行數(shù)據(jù)包BeforeDeleteRow
刪除分錄行事件:校驗(yàn)是否允許刪除AfterDeleteRow
刪除分錄后事件AbstractBillPlugIn插件方法如何開(kāi)發(fā)插件–接口結(jié)構(gòu)列表插件接口繼承AbstractListPlugInIListViewPlugInIListModelPlugIn如何開(kāi)發(fā)插件–接口結(jié)構(gòu)AbstractListPlugIn的ViewPlugIn接口序時(shí)簿視圖插件編程模型接口定義了序時(shí)簿視圖模型擴(kuò)展允許通過(guò)接口處理視圖,實(shí)現(xiàn)特定業(yè)務(wù)需求如何開(kāi)發(fā)插件–接口結(jié)構(gòu)ListInitialize
視圖模型初始化事件AfterGetData
完成取數(shù)后事件:在數(shù)據(jù)發(fā)送到前端之前觸發(fā),可對(duì)數(shù)據(jù)進(jìn)行修改FormatCellValue
列表格式化接口:列表顯示,在獲取數(shù)據(jù)之后,數(shù)據(jù)發(fā)送到前端之前觸發(fā),用來(lái)格式化列表上的單元格數(shù)據(jù)AbstractListPlugIn的ViewPlugIn接口如何開(kāi)發(fā)插件–接口結(jié)構(gòu)ButtonClick
按鈕和菜單單擊前事件AfterButtonClick
按鈕和菜單單擊后事件:按鈕點(diǎn)擊之后,實(shí)現(xiàn)按鈕點(diǎn)擊功能之后對(duì)界面進(jìn)行控制,如:設(shè)置控件可用性、可見(jiàn)性,設(shè)置分錄焦點(diǎn)行等。CellDbButtonClick
單元格雙擊事件AbstractListPlugIn的ViewPlugIn接口如何開(kāi)發(fā)插件–接口結(jié)構(gòu)AbstractListPlugIn的ModelPlugIn接口序時(shí)簿數(shù)據(jù)模型插件編程接口定義了序時(shí)簿數(shù)據(jù)模型擴(kuò)展允許通過(guò)接口處理數(shù)據(jù),以實(shí)現(xiàn)特定業(yè)務(wù)需求如何開(kāi)發(fā)插件–接口結(jié)構(gòu)PrepareFilterParameter
準(zhǔn)備過(guò)濾條件:開(kāi)單據(jù)列表之前,插件直接修改過(guò)濾條件及排序子句等內(nèi)容,篩選、處理數(shù)據(jù),列表顯示的時(shí)候顯示這些被篩選、處理過(guò)的數(shù)據(jù)CreateFilterEditorControl
觸發(fā)創(chuàng)建過(guò)濾條件控件事件BatchCopyData
復(fù)制單據(jù)事件:批量復(fù)制單據(jù)時(shí),調(diào)整復(fù)制的單據(jù)主鍵或自定義復(fù)制的目標(biāo)數(shù)據(jù)包。如果僅調(diào)整主鍵,那么平臺(tái)會(huì)根據(jù)新的主鍵值去加載目標(biāo)數(shù)據(jù)包;如果定義了目標(biāo)數(shù)據(jù)包,則平臺(tái)會(huì)直接使用。AfterBatchCopyData
復(fù)制單據(jù)完畢事件:插件對(duì)平臺(tái)加載的目標(biāo)數(shù)據(jù)包再做修改、調(diào)整AbstractListPlugIn插件方法如何開(kāi)發(fā)插件–接口結(jié)構(gòu)服務(wù)插件插件特性IOperationServicePlugin一般會(huì)附加校驗(yàn)器運(yùn)行于App層事務(wù)保護(hù)插件針對(duì)對(duì)象操作如何開(kāi)發(fā)插件–接口結(jié)構(gòu)服務(wù)插件接口服務(wù)插件AbstractOperationServicePlugIn應(yīng)用服務(wù)器插件與業(yè)務(wù)數(shù)據(jù)更新操作在一個(gè)事務(wù)執(zhí)行校驗(yàn)器插件AbstractValidator在服務(wù)插件的OnAddValidators加入如何開(kāi)發(fā)插件–接口結(jié)構(gòu)AbstractOperationServicePlugIn插件方法OnPreparePropertys
可以定制加載指定字段到實(shí)體里:在操作初始化之后,加載待處理的單據(jù)數(shù)據(jù)之前觸發(fā)。用于指定在加載單據(jù)數(shù)據(jù)時(shí),需加載的字段。平臺(tái)將按需加載數(shù)據(jù)。OnAddValidators
添加自定義數(shù)據(jù)校驗(yàn)器:在單據(jù)數(shù)據(jù)加載后,數(shù)據(jù)校驗(yàn)前觸發(fā);用于注冊(cè)自定義的操作校驗(yàn)器,增加校驗(yàn);或者移除預(yù)置的校驗(yàn)器,避開(kāi)校驗(yàn);如何開(kāi)發(fā)插件–接口結(jié)構(gòu)AbstractOperationServicePlugIn插件方法BeforeExecuteOperationTransaction
執(zhí)行操作事務(wù)前事件:操作執(zhí)行前(事務(wù)外)事件,在數(shù)據(jù)檢查完畢,正式開(kāi)始執(zhí)行操作前觸發(fā)。此事件在事務(wù)外,不受事務(wù)保護(hù)。通常將一些與數(shù)據(jù)更新無(wú)關(guān)的前期數(shù)據(jù)準(zhǔn)備、修正,放在本事件中進(jìn)行,以減少事務(wù)占用時(shí)間。BeginOperationTransaction
調(diào)用操作事件前觸發(fā)(支持事務(wù)):此事件在事務(wù)內(nèi),在此事件對(duì)數(shù)據(jù)庫(kù)進(jìn)行更新,受事務(wù)保護(hù)。此事件適用于需要在操作前,基于原始數(shù)據(jù),對(duì)數(shù)據(jù)庫(kù)進(jìn)行更新,并與操作保持在一個(gè)事務(wù)中的需求。比如刪除數(shù)據(jù)前級(jí)聯(lián)刪除相關(guān)記錄。EndOperationTransaction
調(diào)用操作事件完畢(支持事務(wù)):此事件在事務(wù)內(nèi),對(duì)數(shù)據(jù)庫(kù)進(jìn)行的更新,受事務(wù)保護(hù)。此事件適合于在操作執(zhí)行完畢,單據(jù)數(shù)據(jù)已經(jīng)更改,需要基于更改后的數(shù)據(jù),進(jìn)行其他關(guān)聯(lián)數(shù)據(jù)的處理。AfterExecuteOperationTransaction
執(zhí)行操作事務(wù)后事件:通常用于在操作完畢后,進(jìn)行后續(xù)的處理,但因?yàn)椴僮鞯氖聞?wù)已經(jīng)提交,不能夠撤銷(xiāo)操作。如操作完畢后,給出提示信息。如何開(kāi)發(fā)插件–接口結(jié)構(gòu)表單構(gòu)建插件繼承層次表單單據(jù)敘事簿基礎(chǔ)資料插件針對(duì)對(duì)象動(dòng)態(tài)表單單據(jù)基礎(chǔ)資料如何開(kāi)發(fā)插件–接口結(jié)構(gòu)AbstractDynamicWebFormBuilderPlugIn插件方法CreateControl
構(gòu)建界面元素事件AfterCreateControl
構(gòu)建界面元素后事件CreateMainMenu
構(gòu)建菜單事件AfterCreateMainMenu
構(gòu)建菜單后事件如何開(kāi)發(fā)插件–接口結(jié)構(gòu)表單插件調(diào)用過(guò)程由控制器創(chuàng)建視圖、模型、插件代理初始化視圖、模型由插件服務(wù)注冊(cè)到插件代理插件代理初始化插件加載數(shù)據(jù),通知插件創(chuàng)建數(shù)據(jù),創(chuàng)建表單數(shù)據(jù)包表單操作插件服務(wù)調(diào)用代理,發(fā)送事件通知插件代理調(diào)用插件,執(zhí)行事件返回執(zhí)行結(jié)果業(yè)務(wù)插件插件調(diào)用過(guò)程業(yè)務(wù)插件插件調(diào)用過(guò)程如何開(kāi)發(fā)插件–接口結(jié)構(gòu)動(dòng)態(tài)語(yǔ)言支持IronPython腳本語(yǔ)言支持和C#交互調(diào)用事件接口和C#完全一致更加簡(jiǎn)練明白概述業(yè)務(wù)插件概覽如何開(kāi)發(fā)插件接口結(jié)構(gòu)插件中常用的對(duì)象說(shuō)明具體的代碼示例案例演練目錄如何開(kāi)發(fā)插件–常用對(duì)象View對(duì)象屬性this.View(View接口)this.View的常用屬性BillBusinessInfo(界面業(yè)務(wù)對(duì)象元數(shù)據(jù))LayoutInfo(布局元數(shù)據(jù))Model(動(dòng)態(tài)表單模型接口)OpenParameter(頁(yè)面調(diào)用時(shí)傳入的參數(shù))方法GetFieldEditor(獲取界面控件對(duì)象)ShowMessage(顯示信息)如何開(kāi)發(fā)插件–常用對(duì)象View對(duì)象更改界面控件狀態(tài)this.View.GetFieldEditor示例:
///
<summary>
///
設(shè)置金額列精度
///
</summary>
///
<paramname="iScale"></param>
///
<paramname="strField"></param>
private
voidSetColumnScale(shortiScale,stringstrField){
this.View.GetFieldEditor<DecimalFieldEditor>(strField,-1).Scale=iScale;}如何開(kāi)發(fā)插件–常用對(duì)象View對(duì)象顯示信息this.View.ShowMessage示例:
if(e.CurParentId=="0"){
this.View.ShowMessage(“請(qǐng)先選擇頂層組織?!?;return;}如何開(kāi)發(fā)插件–常用對(duì)象Model對(duì)象屬性this.View.Model(動(dòng)態(tài)表單模型接口)This.View.Model的常用屬性DataObject當(dāng)前對(duì)象的數(shù)據(jù)實(shí)體方法GetEntryCurrentRowIndex(獲取分錄當(dāng)前行索引)GetEntryRowCount(獲取分錄行數(shù)量)CreateNewEntryRow(新建分錄行)GetValue(獲取字段(對(duì)象)值)SetValue(設(shè)置字段(對(duì)象)值)如何開(kāi)發(fā)插件–常用對(duì)象Model對(duì)象獲取單據(jù)屬性:例如分錄集合this.View.Model.DataObject示例:
///
<summary>
///
獲取分錄集合
///
</summary>
DynamicObjectCollectionentrys=(DynamicObjectCollection)this.View.Model.DataObject["POOrderEntry"];如何開(kāi)發(fā)插件–常用對(duì)象Model對(duì)象新增單據(jù)體分錄行this.View.Model.CreateNewEntryRow示例:
///
<summary>
///
單據(jù)復(fù)制完成事件
///
</summary>
///
<paramname="e"></param>
public
override
void
AfterCopyData(CopyDataEventArgse){
base.AfterCopyData(e);
//單據(jù)復(fù)制完,處理單據(jù)體
_billFormID=“”;
this.View.Model.CreateNewEntryRow(“FFieldControl”);
UpdateFieldControlRowLock();}如何開(kāi)發(fā)插件–常用對(duì)象Model對(duì)象獲取字段值this.View.Model.GetValue示例:
//獲取根節(jié)點(diǎn)組織復(fù)制到目標(biāo)節(jié)點(diǎn)
Organizationorg=(DynamicObject)
this.View.Model.GetValue("FRootORGID");targetRoot.id=rootOrgId;
targetRoot.text=org.Name.ToString();
targetRoot.children=new
List<TreeNode>();
ctl=this.View.GetControl<TreeView>("FOrgTree");
ctl.SetRootNode(targetRoot);如何開(kāi)發(fā)插件–常用對(duì)象Model對(duì)象設(shè)置字段值this.View.Model.SetValue示例:///
<summary>///
字段修改事件函數(shù)重載
///
</summary>public
override
void
DataChanged(DataChangedEventArgse){
switch(e.Key.ToUpper()){
case
"FPARENTDEPTID":
//組織隸屬方案和上級(jí)部門(mén)變化,重新生成部門(mén)全稱(chēng)
this.View.Model.SetValue(“FFullName”,GetFullName(e.Key));
break;}}概述業(yè)務(wù)插件概覽如何開(kāi)發(fā)插件接口結(jié)構(gòu)插件中常用的對(duì)象說(shuō)明具體的代碼示例案例演練目錄如何開(kāi)發(fā)插件–代碼示例表單插件OnBillInitialize初始化事件BillInitializeEventArgs示例:
publicoverridevoidOnBillInitialize(BillInitializeEventArgse)
{
base.OnBillInitialize(e);
msgType=this.View.OpenParameter.GetCustomParameter("MessageType");
}如何開(kāi)發(fā)插件–代碼示例表單插件AfterBindData綁定數(shù)據(jù)后事件示例:
publicoverridevoidAfterBindData(EventArgse)
{
base.AfterBindData(e);
DynamicObjectdy=this.View.Model.GetValue("FAccountBookID")asDynamicObject;
if(dy!=null&&!string.IsNullOrWhiteSpace(dy["Id"].ToString()))
{
DynamicObjectorg=dy["AccountOrgID"]asDynamicObject;
if(org!=null&&!string.IsNullOrWhiteSpace(org["Id"].ToString()))
{
this.View.Model.SetValue("FACCBOOKORGID",org);
}
}
}如何開(kāi)發(fā)插件–代碼示例表單插件BeforeClosed綁定數(shù)據(jù)后事件BeforeClosedEventArgs示例:publicoverridevoidBeforeClosed(BeforeClosedEventArgse)
{ReturnData();
base.BeforeClosed(e);
}如何開(kāi)發(fā)插件–代碼示例表單插件BeforeF7SelectBeforeF7SelectEventArgs示例:
publicoverridevoidBeforeF7Select(BeforeF7SelectEventArgse)
{
base.BeforeF7Select(e);boolsuccess=true;switch(e.FieldKey)
{case"FAccountOrg":e.ListFilterParameter.Filter=this.GetAccountOrgFilter(e.ListFilterParameter.Filter,outsuccess);break;case"FAccountBook":e.ListFilterParameter.Filter=this.GetAccountBookFilter(e.ListFilterParameter.Filter,outsuccess);break;
}e.Cancel=!success;
}如何開(kāi)發(fā)插件–代碼示例表單插件ButtonClickButtonClickEventArgs示例:
publicoverridevoidButtonClick(ButtonClickEventArgse)
{
base.ButtonClick(e);switch(e.Key)
{case"FBtOK":
this.StartDeposit();break;default:break;
}
}如何開(kāi)發(fā)插件–代碼示例表單插件DataChangedDataChangedEventArgs示例:
publicoverridevoidDataChanged(DataChangedEventArgse)
{
switch(e.Key)
{case"fdiffadjusttype":
case"fexpuniontype":SetEnableAndValue();
break;default:break;
}base.DataChanged(e);
}如何開(kāi)發(fā)插件–代碼示例動(dòng)態(tài)語(yǔ)言支持IronPython示例:from
System
import
StringComparison
def
DataChanged(e):
if
e.Field.Key.Equals("FIsTrans",StringComparison.OrdinalIgnoreCase):
#isTrans=clr.Reference[bool]()
isTrans=e.NewValue
if
isTrans==
False
:
this.View.Model.SetValue("FPriority",
0)
如何開(kāi)發(fā)插件–代碼示例服務(wù)插件OnPreparePropertysPreparePropertysEventArgs示例:
public
override
voidOnPreparePropertys(PreparePropertysEventArgse)
{e.FieldKeys.Add("FAccountSystemEntry");e.FieldKeys.Add("FMainOrgId");e.FieldKeys.Add("FAcctPolicy");e.FieldKeys.Add("FDefAcctPolicy");
base.OnPreparePropertys(e);
}如何開(kāi)發(fā)插件–代碼示例服務(wù)插件OnAddValidatorsAddValidatorsEventArgs示例:
public
override
voidOnAddValidators(AddValidatorsEventArgse)
{
SaveValidatorsaveValid=new
SaveValidator();saveValid.EntityKey="FBillHead";e.Validators.Add(saveValid);
SaveAuditValidatorsaveAcctValid=new
SaveAuditValidator();saveAcctValid.option=this.Option;saveAcctValid.EntityKey="FBillHead";e.Validators.Add(saveAcctValid);
}如何開(kāi)發(fā)插件–代碼示例
privateclassSaveValidator:AbstractValidator
{publicoverridevoidValidate(ExtendedDataEntity[]dataEntities,ValidateContextvalidateContext,Contextctx)
{foreach(varacctindataEntities)
{AccountSystemdEntity=(AccountSystem)acct.DataEntity;if(dEntity==null)continue;foreach(varacctSysindEntity.AccountSystemEntrys)
{if(acctSys==null||acctSys.MainOrgId<=0)continue;if(!acctSys.AccountSystemDetails.
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 幼兒園用電的安全教育
- 會(huì)獎(jiǎng)勵(lì)合同標(biāo)準(zhǔn)文本
- 臨時(shí)代管合同標(biāo)準(zhǔn)文本
- 公路鋼筋購(gòu)買(mǎi)合同標(biāo)準(zhǔn)文本
- 供水檢漏服務(wù)合同標(biāo)準(zhǔn)文本
- 代開(kāi)發(fā)合同標(biāo)準(zhǔn)文本
- 買(mǎi)賣(mài)抵押貸款合同標(biāo)準(zhǔn)文本
- 中介買(mǎi)房合同正式合同標(biāo)準(zhǔn)文本
- 鄉(xiāng)村小院售賣(mài)合同標(biāo)準(zhǔn)文本
- 產(chǎn)品商標(biāo)合同標(biāo)準(zhǔn)文本
- JT-T-1199.1-2018綠色交通設(shè)施評(píng)估技術(shù)要求第1部分:綠色公路
- DL-T5169-2013水工混凝土鋼筋施工規(guī)范
- 水產(chǎn)動(dòng)物育種學(xué)智慧樹(shù)知到期末考試答案章節(jié)答案2024年上海海洋大學(xué)
- 2024年全國(guó)中學(xué)生學(xué)聯(lián)賽廣西預(yù)選賽生物試卷(解析版)
- 試樁錨樁法檢測(cè)專(zhuān)項(xiàng)方案
- ICU中心供氧故障應(yīng)急
- DG-TJ08-2433A-2023 外墻保溫一體化系統(tǒng)應(yīng)用技術(shù)標(biāo)準(zhǔn)(預(yù)制混凝土反打保溫外墻)
- 2024年上海奉賢區(qū)儲(chǔ)備人才招聘筆試沖刺題(帶答案解析)
- 中醫(yī)五臟心完整版本
- 郵政集團(tuán)社招柜員筆試題
- 第9課 古代的商路、貿(mào)易與文化交流 -2023-2024學(xué)年高二歷史同步教學(xué)課件(選必3文化交流與傳播)
評(píng)論
0/150
提交評(píng)論