標籤:
Entity, EntryEntity, SubEntryEntity 這三個對象具有繼承關係:
Entity 是實體基類,用於定義各種實體的公用屬性;
EntryEntity 是單據體實體類,從Entity派生,增加了單據體的一些特性;
SubEntryEntity 是子單據體實體類,從EntryEntity派生,增加了子單據體的一些特性;
BusinessInfo.GetEntity()方法,返回的是Entity類型,此類已經包含了實體的ORM屬性定義,利用此類,完全就可以到單據資料包中擷取到資料,無需轉換為EntryEntity。
通常情況下,沒有Model時,可以使用Entity.DynamicProperty.GetValue(obj)方法,擷取單據體的DynamicObjectCollection;
單據轉換外掛程式各事件中,產生的下推結果,為了方便外掛程式取數,提供了另外一種方式擷取單據體行。
如下示範代碼,介紹了在單據轉換外掛程式中,兩種擷取單據體行資料的方法:
//**********************************************
public override void AfterConvert(AfterConvertEventArgs e)
{
// 方法一:直接擷取產生的全部單據體行,不區分單據
// 此方法特別適用單據轉換外掛程式,非常方便
ExtendedDataEntity[] allEntryRows = e.Result.FindByEntityKey("FEntity");
foreach (var entryRowDataEntity in allEntryRows)
{
DynamicObject row = entryRowDataEntity.DataEntity;
// TODO: xxxx
}
// 方法二:逐個單據迴圈,擷取其單據體行
// 此方法比較通用
Entity entity = e.TargetBusinessInfo.GetEntity("FEntity");
// 擷取產生的全部單據
ExtendedDataEntity[] billDataEntities = e.Result.FindByEntityKey("FBillHead");
// 對單據做迴圈,逐單讀取單據體
foreach (var billDataEntity in billDataEntities)
{
// 如下是比較通用的方法,利用entity讀取單據體
DynamicObjectCollection entryRows = entity.DynamicProperty.GetValue(
billDataEntity.DataEntity) as DynamicObjectCollection;
foreach (DynamicObject row in entryRows)
{
// TODO: xxxx
}
}
}
原貼地址 http://club.kisdee.com/forum.php?mod=viewthread&tid=967037&source=solr_search&word=ENTITY
【轉】K3Cloud 二次開發 單據轉換系列