




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
本文格式為Word版,下載可任意編輯——K3CloudBOS插件開發(fā)百問百答K/3CloudBOS插件開發(fā)百問百答
修訂記錄Ver.NoV1.0日期20230428編制\\修訂張晉博校對(duì)丁振華批準(zhǔn)賴碧云修改的章節(jié)號(hào)初始版本,共39個(gè)問題問題和看法假使你對(duì)文檔有任何看法、問題或想法,或者你的問題未在此文檔中找到答案,請(qǐng)通過電子郵件聯(lián)系我們
jinbo_zhang@
目錄
K/3CloudBOS插件開發(fā)百問百答11.入門篇4
1.1.如何創(chuàng)立并啟用各類插件4
1.1.1.如何創(chuàng)立并啟用動(dòng)態(tài)表單插件41.1.2.如何創(chuàng)立并啟用單據(jù)編輯插件81.1.3.如何創(chuàng)立并啟用基礎(chǔ)資料編輯插件91.1.4.如何創(chuàng)立并啟用列表插件101.1.5.如何創(chuàng)立并啟用操作插件111.1.6.如何創(chuàng)立并啟用賬表取數(shù)插件151.1.7.如何創(chuàng)立并啟用單據(jù)轉(zhuǎn)換插件181.1.8.如何創(chuàng)立并啟用反寫插件181.2.為何插件不起作用,如何排查202.進(jìn)階篇21
2.1.插件代碼,如何自行調(diào)用單據(jù)操作服務(wù)21
2.1.1.如何加載(Load)單據(jù)212.1.2.如何調(diào)用保存(Save)操作252.1.3.如何調(diào)用提交(Submit)操作282.1.4.如何調(diào)用審核/反審核(Audit/UnAudit)操作312.1.5.如何調(diào)用禁用(Disabled)操作342.1.6.如何刪除(Delete)單據(jù)372.2.調(diào)用單據(jù)操作后,如何判斷結(jié)果,并處理交互提醒402.3.插件給字段賦值后,為什么不執(zhí)行字段〞值更新屬性〞上配置的表單服務(wù)442.4.在動(dòng)態(tài)表單插件中,如何修改界面數(shù)據(jù)46
2.4.1.如何新增單據(jù)體行462.4.2.如何刪除單據(jù)體行482.4.3.如何給普通字段賦值492.4.4.如何給基礎(chǔ)資料字段賦值502.4.5.如何動(dòng)態(tài)設(shè)置下拉列表字段的可選項(xiàng)522.5.字段標(biāo)識(shí)(Key)、字段名(FieldName)、屬性名(PropertyName)的區(qū)別532.6.在動(dòng)態(tài)表單中,如何實(shí)現(xiàn)文件下載532.7.如何支持用戶把本地文件上傳到服務(wù)器572.8.以實(shí)例說(shuō)明如何為動(dòng)態(tài)表單取數(shù)、填充582.9.如何為預(yù)置賬表,添加字段602.10.如何獲取基礎(chǔ)資料的屬性值602.11.保存前,如何為新建的單據(jù)數(shù)據(jù)包、單據(jù)體行,填寫主鍵612.12.在動(dòng)態(tài)表單插件中,如何顯示指定界面622.13.如何為收款單,往來(lái)單位類型,添加新的基礎(chǔ)資料642.14.如何創(chuàng)立、調(diào)試自定義執(zhí)行計(jì)劃662.15.如何通過按鈕實(shí)現(xiàn)F8選擇返回效果672.16.如何在操作插件中,自定義操作校驗(yàn)器并啟用692.17.如何實(shí)現(xiàn)超鏈接,開啟外部URL地址732.18.如何獲取基礎(chǔ)資料字段的類別(FormId)74
3.
高級(jí)篇753.1.如何給單據(jù)體表格,增加自定義過濾行75
1.入門篇
1.1.如何創(chuàng)立并啟用各類插件1.1.1.如何創(chuàng)立并啟用動(dòng)態(tài)表單插件
創(chuàng)立插件工程
?動(dòng)態(tài)表單插件,運(yùn)行在K/3Cloud的Web服務(wù)層,需要建立一個(gè)獨(dú)立的工程管理動(dòng)態(tài)表
單插件類;
?動(dòng)態(tài)表單插件工程,建議命名格式為[開發(fā)商][.K3][.業(yè)務(wù)領(lǐng)域][.子系統(tǒng)].Business.PlugIn;
如JD.K3.SCM.PUR.Business.PlugIn;
?創(chuàng)立工程過程:VisualStudio→New→Project
?VisualC#→ClassLibrary→選擇工程文件存放位置→OK
?工程References右鍵,添加工程引用,所添加組件都來(lái)自Cloud網(wǎng)站的website\\bin路
徑
?修改插件工程輸出路徑為Cloud網(wǎng)站路徑website\\bin:選中插件工程→右鍵→Property
(屬性)→Build頁(yè)簽→OutputPath(輸出路徑)
?修改當(dāng)前類(Class1)的繼承對(duì)象為AbstractDynamicFormPlugIn?類文件引用基類(AbstractDynamicFormPlugIn)所在命名空間C#
usingKingdee.BOS.Core.DynamicForm.PlugIn;usingSystem;
usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;
usingSystem.Threading.Tasks;
namespaceMyDynamicFormPlugIn{
[System.ComponentModel.Description(\區(qū)分當(dāng)前類應(yīng)用在哪個(gè)模型上\)]publicclassClass1:AbstractDynamicFormPlugIn
{}
}
注冊(cè)并啟用插件
?插件編寫完畢,編譯工程,輸出類庫(kù)*.dll文件到WebSite\\Bin目錄;?開啟BOSIDE,定位到動(dòng)態(tài)表單模型整體屬性,配置表單插件屬性
?點(diǎn)開表單插件屬性,注冊(cè)編譯生成的插件工程組件,從website\\bin路徑下找到插件工
程組件,選擇插件工程組件下的插件類,一般在插件類上使用微軟元數(shù)據(jù)描述,在注冊(cè)插件時(shí)區(qū)分不同的類,選擇注冊(cè)插件后,注意勾選“啟用〞復(fù)選框
1.1.2.如何創(chuàng)立并啟用單據(jù)編輯插件
創(chuàng)立單據(jù)編輯插件
?單據(jù)編輯插件,運(yùn)行在K/3Cloud的Web服務(wù)層,重用動(dòng)態(tài)表單插件工程;?創(chuàng)立插件類的過程,與創(chuàng)立動(dòng)態(tài)表單插件幾乎一樣,唯一區(qū)別是單據(jù)編輯插件繼承的基
類是AbstractBillPlugIn
?插件類引用基類所在命名空間
C#
usingKingdee.BOS.Core.Bill.PlugIn;usingSystem;
usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;
usingSystem.Threading.Tasks;
namespaceMyDynamicFormPlugIn{
[System.ComponentModel.Description(\區(qū)分當(dāng)前類應(yīng)用在哪個(gè)模型上\)]publicclassClass2:AbstractBillPlugIn{//TODO}}
啟用單據(jù)編輯插件
?與啟用動(dòng)態(tài)表單插件一樣
1.1.3.如何創(chuàng)立并啟用基礎(chǔ)資料編輯插件
如何創(chuàng)立基礎(chǔ)資料編輯插件
?基礎(chǔ)資料編輯插件,運(yùn)行在K/3Cloud的Web服務(wù)層,重用動(dòng)態(tài)表單插件工程;
?與創(chuàng)立單據(jù)編輯插件一樣,唯一區(qū)別是基礎(chǔ)資料編輯插件繼承的基類是
AbstractBasePlugIn,目前AbstractBasePlugIn與AbstractBillPlugIn完全一樣,但不管從模型分類角度或從未來(lái)發(fā)展趨勢(shì)看,還是請(qǐng)大家嚴(yán)格遵守插件體系,即:從AbstractBasePlugIn繼承C#
usingKingdee.BOS.Core.Base.PlugIn;usingSystem;
usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;
usingSystem.Threading.Tasks;
namespaceMyDynamicFormPlugIn{
[System.ComponentModel.Description(\區(qū)分當(dāng)前類應(yīng)用在哪個(gè)模型上\)]publicclassClass3:AbstractBasePlugIn{//TODO
}}
如何啟用基礎(chǔ)資料編輯插件?與啟用動(dòng)態(tài)表單插件一樣
1.1.4.如何創(chuàng)立并啟用列表插件
如何創(chuàng)立列表插件
?列表插件,運(yùn)行在K/3Cloud的Web服務(wù)層,重用動(dòng)態(tài)表單插件工程;?與創(chuàng)立表單插件一樣,唯一區(qū)別是列表插件從AbstractListPlugIn繼承出來(lái)C#
usingKingdee.BOS.Core.List.PlugIn;usingSystem;
usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;
usingSystem.Threading.Tasks;
namespaceMyDynamicFormPlugIn{
[System.ComponentModel.Description(\區(qū)分當(dāng)前類應(yīng)用在哪個(gè)模型上\)]publicclassClass4:AbstractListPlugIn{//TODO}}
如何啟用列表插件
?與啟用動(dòng)態(tài)表單插件一樣,唯一區(qū)別是注冊(cè)列表插件的位置是模型的列表插件屬性
?與創(chuàng)立動(dòng)態(tài)表單插件類似,區(qū)別在于帳表服務(wù)器插件繼承自SysReportBaseService?插件類文件引用基類所在命名空間C#
usingKingdee.BOS.Contracts.Report;usingSystem;
usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;
usingSystem.Threading.Tasks;
namespaceReportPlugInDemo{
publicclassClass1:SysReportBaseService{//TODO}}
如何啟用賬表服務(wù)器插件
?進(jìn)入BOSIDE,開啟賬表模型,設(shè)置服務(wù)器插件屬性
?注冊(cè)編譯好的賬表服務(wù)器插件,并點(diǎn)擊啟用復(fù)選框
1.1.7.如何創(chuàng)立并啟用單據(jù)轉(zhuǎn)換插件
如何創(chuàng)立單據(jù)轉(zhuǎn)換插件
?單據(jù)轉(zhuǎn)換插件,運(yùn)行在K/3Cloud的App服務(wù)層,重用操作插件工程;
?創(chuàng)立插件類,與創(chuàng)立動(dòng)態(tài)表單插件類類似,繼承基類是AbstractConvertPlugIn?插件類文件引用基類所在命名空間C#
usingKingdee.BOS.Core.Metadata.ConvertElement.PlugIn;usingSystem;
usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;
usingSystem.Threading.Tasks;
namespaceBusinessFlowPlugIn{
publicclassClass1:AbstractConvertPlugIn{//TODO}}
如何啟用單據(jù)轉(zhuǎn)換插件
?開啟BOSIDE,開啟單據(jù)轉(zhuǎn)換設(shè)計(jì)界面,插件策略,注冊(cè)編譯生成的單據(jù)轉(zhuǎn)換插件,并
啟用
1.1.8.如何創(chuàng)立并啟用反寫插件
如何創(chuàng)立反寫插件
?反寫插件,運(yùn)行在K/3Cloud的App服務(wù)層,重用操作插件工程;
?創(chuàng)立插件類與創(chuàng)立動(dòng)態(tài)表單插件類似,繼承基類AbstractBusinessFlowServicePlugIn?插件文件引用基類所在命名空間C#usingKingdee.BOS.Core.BusinessFlow.PlugIn;usingSystem;
usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;
usingSystem.Threading.Tasks;
namespaceBusinessFlowPlugIn{
publicclassClass2:AbstractBusinessFlowServicePlugIn{//TODO}}
如何啟用反寫規(guī)則插件
?開啟BOSIDE,開啟業(yè)務(wù)流程的下游單據(jù)模型(如購(gòu)買申請(qǐng)單下推購(gòu)買訂單,則反寫插
件掛在購(gòu)買訂單上),選擇單據(jù)關(guān)聯(lián)配置屬性
?反寫插件,注冊(cè)編譯生成的反寫插件工程組件對(duì)應(yīng)的反寫類,并啟用
1.2.為何插件不起作用,如何排查
插件不起作用,依照如下步驟檢查:
?插件工程編譯后,是否輸出到Cloud網(wǎng)站路徑website\\bin
?插件類是否注冊(cè)到了當(dāng)前表單上,并成功保存?注冊(cè)插件時(shí),要找website\\bin路徑下
的插件工程組件
?編譯生成dll到指定網(wǎng)站目錄后,是否重啟過站點(diǎn)的IIS?必需重啟站點(diǎn)IIS,新組件才會(huì)
被啟用;
?調(diào)試代碼,附加w3wp.exe程序后,插件代碼是否能夠命中?假使不能命中,說(shuō)明運(yùn)行
submitService.Submit(this.Context,materialMetadata.BusinessInfo,newobject[]{10001},\);}}}
2.1.4.如何調(diào)用審核/反審核(Audit/UnAudit)操作
.Web層插件,如何調(diào)用審核/反審核(Audit/UnAudit)操作
?實(shí)現(xiàn)思路
?調(diào)用Kingdee.BOS.ServiceHelper.dll組件提供的BusinessDataServiceHelper類提供的
SetBillStatus方法
?插件準(zhǔn)備
?插件工程引用Kingdee.BOS.ServiceHelper.dll組件
?插件類文件引用BusinessDataServiceHelper所在的命名空間
?BusinessDataServiceHelper.SetBillStatus方法介紹
SetBillStatus方法與SetStatus方法看上去類似,其實(shí)完全不一樣,其參數(shù)列表也完全不一樣,調(diào)用單據(jù)審核操作的服務(wù)端要使用SetBillStatus方法,SetStatus方法后續(xù)介紹?SetBillStatus方法參數(shù)介紹名稱ctxbusinessInfopkEntryIdsparas類型ContextBusinessInfoList>List說(shuō)明系統(tǒng)上下文全局信息待審核\\反審核數(shù)據(jù)的元數(shù)據(jù)描述信息待審核\\反審核數(shù)據(jù)的id集合,此場(chǎng)景key和value都是id的值審核\\反審核時(shí)附加的參數(shù),包含兩個(gè)值,第一個(gè),同意與否,0:駁回;1:通過;2:反審核;其次個(gè),審核看法,此參數(shù)默認(rèn)可以為空審核\\反審核操作的操作碼額外業(yè)務(wù)選項(xiàng),審核\\反審核服務(wù)端服務(wù)和服務(wù)端插件都持有此對(duì)象operationNumberoptionstringOperateOption
?例如代碼C#
usingKingdee.BOS.Core.DynamicForm;
usingKingdee.BOS.Core.DynamicForm.PlugIn.Args;usingKingdee.BOS.Core.List.PlugIn;usingKingdee.BOS.ServiceHelper;usingSystem;
usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;
usingSystem.Threading.Tasks;
namespaceMyDynamicFormPlugIn{
[System.ComponentModel.Description(\區(qū)分當(dāng)前類應(yīng)用在哪個(gè)模型上\)]publicclassClass4:AbstractListPlugIn{
publicoverridevoidButtonClick(ButtonClickEventArgse){
List>lstKeyValuePairs=
newList>();
KeyValuePairkeyValuePair=newKeyValuePair(10001,\);lstKeyValuePairs.Add(keyValuePair);//審核id為10001的當(dāng)前單據(jù)
IOperationResultauditResult=BusinessDataServiceHelper.SetBillStatus(this.Context,
this.View.BusinessInfo,lstKeyValuePairs,null,\);
//反審核id為10001的當(dāng)前單據(jù)
IOperationResultunAuditResult=BusinessDataServiceHelper.SetBillStatus(this.Context,
this.View.BusinessInfo,lstKeyValuePairs,null,\);}}}
.App層插件,如何調(diào)用審核/反審核(Audit/UnAudit)操作
?實(shí)現(xiàn)思路
?調(diào)用Kingdee.BOS.App.dll組件提供的ServiceHelper類提供的GetService泛型方法,
獲取改變單據(jù)狀態(tài)服務(wù),調(diào)用此服務(wù)提供的SetBillStatus方法
?插件準(zhǔn)備
?插件工程引用Kingdee.BOS.App.dll、Kingdee.BOS.Contracts.dll、
Kingdee.BOS.DataEntity.dll
?類文件引用相關(guān)命名空間,詳見例如代碼
?接口介紹
?同Web層插件介紹
?例如代碼C#
usingKingdee.BOS.Contracts;usingKingdee.BOS.Core.DynamicForm;usingKingdee.BOS.Core.DynamicForm.PlugIn;usingKingdee.BOS.Core.DynamicForm.PlugIn.Args;usingKingdee.BOS.Core.Metadata;usingSystem;
usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;
usingSystem.Threading.Tasks;
namespaceMyOperaionServicePlugIn{
publicclassClass3:AbstractOperationServicePlugIn{
publicoverridevoidBeforeExecuteOperationTransaction(
BeforeExecuteOperationTransactione)
{
//審核\\反審核id為10001的物料數(shù)據(jù)//獲取單據(jù)狀態(tài)轉(zhuǎn)換服務(wù)
ISetStatusServicesetStatusService=
Kingdee.BOS.App.ServiceHelper.GetService();
//獲取元數(shù)據(jù)服務(wù)
IMetaDataServicemetaDataService=
Kingdee.BOS.App.ServiceHelper.GetService();
//構(gòu)建id為10001的數(shù)據(jù)集合
List>lstKeyValuePairs=newList>();
KeyValuePairkeyValuePair=newKeyValuePair(10001,\);lstKeyValuePairs.Add(keyValuePair);//獲取物料元數(shù)據(jù)
FormMetadatamaterialMetaData=metaDataService.Load(this.Context,\)
asFormMetadata;
//審核
IOperationResultauditResult=setStatusService.SetBillStatus(this.Context,materialMetaData.BusinessInfo,lstKeyValuePairs,null,\);//反審核
IOperationResultunAuditResult=setStatusService.SetBillStatus(this.Context,materialMetaData.BusinessInfo,lstKeyValuePairs,null,\);}}}
2.1.5.如何調(diào)用禁用(Disabled)操作
.Web層插件,如何調(diào)用禁用(Disabled)操作
?實(shí)現(xiàn)思路
?調(diào)用Kingdee.BOS.ServiceHelper.dll組件提供的BusinessDataServiceHelper類所提供
的SetState方法
?插件準(zhǔn)備
?插件工程引用Kingdee.BOS.ServiceHelper.dll組件
?插件類文件引用BusinessDataServiceHelper所在的命名空間
?BusinessDataServiceHelper.SetState方法介紹
?SetState方法直接操作數(shù)據(jù)庫(kù),執(zhí)行update語(yǔ)句,按方法參數(shù)構(gòu)建一條例如update
xxxsetxxx=’xxx’wherexxx=xxx的指令
?SetState參數(shù)介紹名稱ctxtableNamefieldNamefieldValuepkFieldNamepkFieldValues類型Contextstringstringstringstringobject[]說(shuō)明系統(tǒng)上下文全局信息待執(zhí)行update指令的表名待禁用的狀態(tài)字段的字段名待禁用的狀態(tài)字段的目標(biāo)值當(dāng)前表的唯一標(biāo)識(shí)字段名當(dāng)前表的唯一標(biāo)示字段值集合?例如代碼C#
usingKingdee.BOS.Core.DynamicForm.PlugIn;usingKingdee.BOS.Core.DynamicForm.PlugIn.Args;usingKingdee.BOS.ServiceHelper;usingSystem;
usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;
usingSystem.Threading.Tasks;
namespaceMyDynamicFormPlugIn{
publicclassClass5:AbstractDynamicFormPlugIn{
publicoverridevoidButtonClick(ButtonClickEventArgse){
//禁用物料id為10001和10002的數(shù)據(jù)BusinessDataServiceHelper.SetState(this.Context,\,\,\,
\,
newobject[]{10001,10002});}}}
.App層插件,如何調(diào)用禁用(Disabled)操作
?實(shí)現(xiàn)思路
?調(diào)用Kingdee.BOS.App.dll組件提供的ServiceHelper類提供的GetService泛型方法,
訪問BusinessDataService服務(wù)的SetState方法
?插件準(zhǔn)備
?插件工程引用Kingdee.BOS.App.dll、Kingdee.BOS.Contracts.dll、
Kingdee.BOS.DataEntity.dll?類文件引用相關(guān)命名空間,詳見例如代碼
?接口介紹
?同Web層插件介紹?例如代碼C#
usingKingdee.BOS.Contracts;
usingKingdee.BOS.Core.DynamicForm.PlugIn;usingKingdee.BOS.Core.DynamicForm.PlugIn.Args;usingSystem;
usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;
usingSystem.Threading.Tasks;
namespaceMyOperaionServicePlugIn{
publicclassClass4:AbstractOperationServicePlugIn{
publicoverridevoidBeforeExecuteOperationTransaction(
BeforeExecuteOperationTransactione)
{//獲取數(shù)據(jù)服務(wù)
IBusinessDataServicebusinessDataService=Kingdee.BOS.App.ServiceHelper.GetService();businessDataService.SetState(this.Context,\,\,\,
\,
newobject[]{10001,10002});}}}
2.1.6.如何刪除(Delete)單據(jù)
.Web層插件,如何刪除(Delete)單據(jù)
?實(shí)現(xiàn)思路
?調(diào)用Kingdee.BOS.ServiceHelper.dll組件的BusinessDataServiceHelper類提供的Delete
方法
?插件準(zhǔn)備
?插件工程引用Kingdee.BOS.ServiceHelper.dll組件
?插件類文件引用BusinessDataServiceHelper所在的命名空間
?方法介紹
BusinessDataServiceHelper提供兩個(gè)Delete方法,其區(qū)別在于
?參數(shù)不帶元數(shù)據(jù)描述信息的,直接執(zhí)行數(shù)據(jù)庫(kù)刪除操作,把數(shù)據(jù)刪除
?publicstaticvoidDelete(Contextctx,object[]Ids,DynamicObjectType
dynamicObjectType)
?參數(shù)帶元數(shù)據(jù)描述信息的,執(zhí)行刪除操作的服務(wù)端完整服務(wù),如執(zhí)行刪除操作的校
驗(yàn)器、刪除操作的服務(wù)端服務(wù)、刪除操作的服務(wù)端插件
?publicstaticIOperationResultDelete(Contextctx,BusinessInfo
businessInfo,object[]Ids,OperateOptionoption=null,stringoperationNumber=\)
?參數(shù)介紹名稱ctxIdsdynamicObjectTypebusinessInfooption類型Contextobject[]DynamicObjectTypeBusinessInfoOperateOption說(shuō)明系統(tǒng)上下文全局信息待刪除數(shù)據(jù)的id集合待刪除數(shù)據(jù)的動(dòng)態(tài)實(shí)體類型待刪除數(shù)據(jù)的元數(shù)據(jù)描述信息業(yè)務(wù)控制額外選項(xiàng),刪除的服務(wù)端服務(wù)和插件都能持有此對(duì)象刪除操作的操作碼operationNumberstring?例如代碼C#
usingKingdee.BOS.Core.DynamicForm.PlugIn;usingKingdee.BOS.Core.DynamicForm.PlugIn.Args;usingKingdee.BOS.Core.Metadata;usingKingdee.BOS.ServiceHelper;
usingSystem;
usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;
usingSystem.Threading.Tasks;
namespaceMyDynamicFormPlugIn{
publicclassClass6:AbstractDynamicFormPlugIn{
publicoverridevoidButtonClick(ButtonClickEventArgse){
//刪除id為10001和10002的物料//獲取物料元數(shù)據(jù)
FormMetadatamaterialMetadata=
MetaDataServiceHelper.Load(this.Context,\)asFormMetadata;//模擬刪除服務(wù)端操作完整過程
BusinessDataServiceHelper.Delete(this.Context,materialMetadata.BusinessInfo,newobject[]{10001,10002});}}}
.App層插件,如何刪除單據(jù)
?實(shí)現(xiàn)思路
?調(diào)用Kingdee.BOS.App.dll組件的ServiceHelper類提供的GetService泛型方法獲取刪
除服務(wù)
?插件準(zhǔn)備
?插件工程引用Kingdee.BOS.App.dll、Kingdee.BOS.Contracts.dll、
Kingdee.BOS.DataEntity.dll?類文件引用相關(guān)命名空間,詳見例如代碼
?接口介紹
?同Web層插件介紹
?例如代碼C#usingKingdee.BOS.Contracts;usingKingdee.BOS.Core.DynamicForm.PlugIn;usingKingdee.BOS.Core.DynamicForm.PlugIn.Args;usingKingdee.BOS.Core.Metadata;usingSystem;
usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;
usingSystem.Threading.Tasks;
namespaceMyOperaionServicePlugIn{
publicclassClass5:AbstractOperationServicePlugIn{
publicoverridevoidBeforeExecuteOperationTransaction(
BeforeExecuteOperationTransactione)
{//獲取刪除服務(wù)
IDeleteServicedeleteService=Kingdee.BOS.App.ServiceHelper.GetService();//獲取元數(shù)據(jù)服務(wù)
IMetaDataServicemetaDataService=Kingdee.BOS.App.ServiceHelper.GetService();//獲取物料元數(shù)據(jù)
FormMetadatamaterialMetadata=metaDataService.Load(this.Context,\)asFormMetadata;//執(zhí)行刪除服務(wù)的完整過程(推薦方式)deleteService.Delete(this.Context,materialMetadata.BusinessInfo,newobject[]{10001,10002});
//直接執(zhí)行數(shù)據(jù)刪除(風(fēng)險(xiǎn)極高,僅適用于未定義單據(jù),只是利用ORM模型存取數(shù)據(jù)的狀況)
//調(diào)用此服務(wù)會(huì)跳過刪除校驗(yàn),僅刪除ORM模型內(nèi)含表格的數(shù)據(jù),其他相關(guān)數(shù)據(jù)不會(huì)處理,假使有
上下游單據(jù)及反寫,不會(huì)撤銷關(guān)聯(lián)及回滾反寫,從而造成數(shù)據(jù)錯(cuò)誤!deleteService.Delete(this.Context,
newobject[]{10001,10002},materialMetadata.BusinessInfo.GetDynamicObjectType());}}}
2.2.調(diào)用單據(jù)操作后,如何判斷結(jié)果,并處理交互提醒
?操作返回結(jié)果接口定義:C#publicinterfaceIOperationResult:IInteractionResult?IInteractionResult接口定義:C#
publicinterfaceIInteractionResult{
//交互表單顯示標(biāo)題
stringFormTitle{get;set;}//交互上下文信息
InteractionContextInteractionContext{get;set;}//本次交互的發(fā)起人stringSponsor{get;set;}}
?交互上下文信息定義:C#
publicclassInteractionContext{
publicInteractionContext();//當(dāng)前表單模型信息
publicBusinessInfoBusinessInfo{get;}//數(shù)據(jù)上下文
publicContextContext{get;set;}//交互服務(wù)操作的實(shí)體集合
publicExtendedDataEntity[]DataEntities{get;set;}
//自定義交互表單的初始化參數(shù):InteractionFormId屬性有值時(shí),本屬性才生效publicDynamicFormShowParameterFormShowParameter{get;set;}//交互表單標(biāo)識(shí):默認(rèn)為BOS_K3DisplayerpublicstringInteractionFormId{get;set;}
//是否交互(發(fā)現(xiàn)有領(lǐng)域把此當(dāng)成單純的自定義信息提醒用,所以加此標(biāo)識(shí)來(lái)加以區(qū)分)默認(rèn)是交互類型異常,如作它用,請(qǐng)?jiān)诖藰?biāo)識(shí)
publicboolIsInteractive{get;set;}//K3顯示器模型
publicK3DisplayerModelK3DisplayerModel{get;set;}//其它控制選項(xiàng)
publicOperateOptionOption{get;set;}
//簡(jiǎn)單交互信息(批量自定義消息時(shí),此屬性建議賦值,以便平臺(tái)在批量操作時(shí)作簡(jiǎn)單提醒)publicstringSimpleMessage{get;set;}
usingKingdee.BOS.Core.Bill.PlugIn;
usingKingdee.BOS.Core.DynamicForm.PlugIn.Args;usingSystem;
usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;
usingSystem.Threading.Tasks;
namespaceMyDynamicFormPlugIn{
[System.ComponentModel.Description(\)]publicclassClass8:AbstractBillPlugIn{
publicoverridevoidBarItemClick(BarItemClickEventArgse){
if(e.BarItemKey==\){
this.View.Model.SetValue(\,10);//調(diào)用乘數(shù)字段的值更新服務(wù)
//由于乘數(shù)字段在單據(jù)頭,這里的行號(hào)傳0
this.View.InvokeFieldUpdateService(\,0);}}}}
2.4.在動(dòng)態(tài)表單插件中,如何修改界面數(shù)據(jù)2.4.1.如何新增單據(jù)體行
?實(shí)現(xiàn)思路
?調(diào)用Model的CreateNewEntryRow方法?CreateNewEntryRow介紹
?Model提供了5個(gè)重載方法,分別介紹
?publicvoidCreateNewEntryRow(DynamicObjectparentRow,SubEntryEntity
entity,introw)
在父單據(jù)體對(duì)應(yīng)的子單據(jù)體上新增一行名稱parentRowentityrow類型DynamicObjectSubEntryEntityint說(shuō)明父單據(jù)體行實(shí)體數(shù)據(jù)包子單據(jù)體實(shí)體元數(shù)據(jù)描述信息新創(chuàng)立的子單據(jù)體行,在此父分錄對(duì)應(yīng)的子單據(jù)體中對(duì)應(yīng)的是哪一行,假使傳-1,默認(rèn)新增在子單據(jù)體的最終一行?publicvoidCreateNewEntryRow(Entityentity)
在指定單據(jù)體的最終一行,新增一行分錄名稱entity?publicvoidCreateNewEntryRow(Entityentity,introw)
在指定單據(jù)體的指定行,新增一行分錄名稱entity類型Entity說(shuō)明指定需要?jiǎng)?chuàng)立一行分錄的單據(jù)體的元數(shù)據(jù)描述信息類型Entityint說(shuō)明指定新增行的單據(jù)體的元數(shù)據(jù)描述信息指定新增的單據(jù)體行是當(dāng)前單據(jù)體的第幾行row?publicvirtualvoidCreateNewEntryRow(Entityentity,introw,DynamicObject
rowDataEntity)
在指定單據(jù)體的指定行,新增一行分錄名稱entityrowrowDataEntity類型EntityintDynamicObject說(shuō)明指定新增行的單據(jù)體的元數(shù)據(jù)描述信息新增到哪一行待新增行的單據(jù)體實(shí)體數(shù)據(jù)包?publicvoidCreateNewEntryRow(stringkey)
在指定單據(jù)體唯一標(biāo)示的單據(jù)體上,新增一行分錄,默認(rèn)新增到最終一行名稱key
?例如代碼C#
usingKingdee.BOS.Core.Bill.PlugIn;
usingKingdee.BOS.Core.DynamicForm.PlugIn.Args;usingKingdee.BOS.Core.Metadata.EntityElement;usingKingdee.BOS.Orm.DataEntity;usingSystem;
usingSystem.Collections.Generic;
類型string說(shuō)明待新增單據(jù)體行的單據(jù)體唯一標(biāo)示
usingSystem.Linq;usingSystem.Text;
usingSystem.Threading.Tasks;
namespaceMyDynamicFormPlugIn{
publicclassClass9:AbstractBillPlugIn{
publicoverridevoidButtonClick(ButtonClickEventArgse){
//entity:?jiǎn)螕?jù)體唯一標(biāo)識(shí)//subentity:子單據(jù)體唯一標(biāo)識(shí)//獲取單據(jù)體元數(shù)據(jù)描述
Entityentity=this.View.BusinessInfo.GetEntity(\);//獲取子單據(jù)體元數(shù)據(jù)描述
SubEntryEntitysubentity=this.View.BusinessInfo.GetEntity(\)asSubEntryEntity;//為單據(jù)體新增一行分錄
this.View.Model.CreateNewEntryRow(\);this.View.Model.CreateNewEntryRow(entity,-1);this.View.Model.CreateNewEntryRow(entity,-1,
this.View.Model.DataObject[\]asDynamicObject);//為子單據(jù)體新增一行
this.View.Model.CreateNewEntryRow(
this.View.Model.DataObject[\]asDynamicObject,subentity,-1);}}}
2.4.2.如何刪除單據(jù)體行
?實(shí)現(xiàn)思路
?調(diào)用model的DeleteEntryRow方法?DeleteEntryRow介紹
?傳遞待刪除行的單據(jù)體唯一標(biāo)示和要?jiǎng)h除行的行號(hào)?例如代碼C#usingKingdee.BOS.Core.Bill.PlugIn;usingKingdee.BOS.Core.Dyna
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- DB3707T 135-2025大蔥三系雜交制種技術(shù)規(guī)程
- 江西公路瀝青路面施工方案
- 馬尾松種植中發(fā)生的主要病蟲害及針對(duì)性防治方法的多角度分析
- 醫(yī)療機(jī)構(gòu)水污染物的監(jiān)測(cè)與檢測(cè)方法
- 穩(wěn)定和擴(kuò)大就業(yè)的背景與意義
- 就業(yè)質(zhì)量提升的路徑
- 2025年配網(wǎng)自動(dòng)化監(jiān)控項(xiàng)目合作計(jì)劃書
- 廣東省佛山市2017-2018學(xué)年高一上學(xué)期期末考試教學(xué)質(zhì)量檢測(cè)政治試題
- 浙江省臺(tái)州市2024-2025學(xué)年高二上學(xué)期期末質(zhì)量評(píng)估數(shù)學(xué)試題2
- 四川省棠湖中學(xué)2017-2018學(xué)年高二下學(xué)期開學(xué)考試語(yǔ)文試題
- 2.3品味美好情感 課件 -2024-2025學(xué)年統(tǒng)編版道德與法治七年級(jí)下冊(cè)
- 七年級(jí)道法下冊(cè) 第一單元 綜合測(cè)試卷(人教海南版 2025年春)
- 海洋自主無(wú)人系統(tǒng)跨域協(xié)同任務(wù)規(guī)劃模型與技術(shù)發(fā)展研究
- GB/T 18851.2-2024無(wú)損檢測(cè)滲透檢測(cè)第2部分:滲透材料的檢驗(yàn)
- 正弦穩(wěn)態(tài)電路分析
- 中國(guó)中材海外科技發(fā)展有限公司招聘筆試沖刺題2025
- 專題02 光現(xiàn)象(5大模塊知識(shí)清單+5個(gè)易混易錯(cuò)+2種方法技巧+典例真題解析)
- 兩層鋼結(jié)構(gòu)廠房施工方案
- 支氣管封堵器在胸科手術(shù)中的應(yīng)用
- 班級(jí)凝聚力主題班會(huì)12
- 初中語(yǔ)文“經(jīng)典誦讀與海量閱讀”校本課程實(shí)施方案
評(píng)論
0/150
提交評(píng)論