二开案例.单据体显示物料上的附件原创
2人赞赏了该文章
125次浏览
编辑于2024年08月28日 11:01:55
需求:物料上添加了附件字段,用于上传图纸。希望录单时,能查看附件
二开方案:在单据明细上增加附件字段,使用二开插件,将物料的附件携带到该字段上。
1、在物料上添加“多选附件(文件服务器)”字段,ID为F_UNW_ATTACHMENTS_QTR
2、在单据体上添加“基础资料属性”字段,引用物料上的附件字段
3、在单据体上添加“基础资料属性”字段,引用物料上的附件字段。打开单据,发现系统不支持,带不出附件。
4、变通实现,在单据体上添加“多选附件(文件服务器)”字段,ID为F_UNW_Attachments_tzk。通过二开插件,将物料上的附件带到该字段上。
注意:该字段值来自物料,不需要保存到数据库。可设置成只读,“字段名”属性设置为空。
4、通过二开插件,将物料上的附件带到该字段上。
using Kingdee.BOS.Contracts; using Kingdee.BOS.Core.Bill.PlugIn; using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; using Kingdee.BOS.Core.Metadata; using Kingdee.BOS.Orm.DataEntity; using Kingdee.BOS.ServiceHelper; using System; using System.Linq; namespace Test202408 { [Kingdee.BOS.Util.HotUpdate] public class 单据体明细显示物料附件 : AbstractBillPlugIn { string materialFieldKey = "F_UNW_Material"; //单据体中的物料字段名 string fromFieldKey = "F_UNW_Attachments_qtr"; //物料上的附件字段名 string toFieldKey = "F_UNW_Attachments_tzk"; //单据体上的附件字段名 public override void AfterBindData(EventArgs e) { var entry = this.View.BusinessInfo.GetEntity("FEntity"); var rows = this.Model.GetEntityDataObject(entry); for (int i = 0; i < rows.Count; i++) { LoadMaterialAttachments(materialFieldKey, fromFieldKey, toFieldKey, i); } } public override void DataChanged(DataChangedEventArgs e) { if (e.Key == materialFieldKey) { LoadMaterialAttachments(materialFieldKey, fromFieldKey, toFieldKey, e.Row); } } void LoadMaterialAttachments(string materialFieldKey, string fromFieldKey, string toFieldKey, int rowNumber) { var materialObj = this.Model.GetValue(materialFieldKey, rowNumber) as DynamicObject; if (materialObj == null) return; IMetaDataService metaService = ServiceFactory.GetMetaDataService(this.Context); FormMetadata metaData = (FormMetadata)metaService.Load(this.Context, "BD_MATERIAL"); var materialId = materialObj[0]; OQLFilter filter = OQLFilter.CreateHeadEntityFilter(string.Format("FMaterialId={0}", "'" + materialId + "'")); DynamicObject dyo = BusinessDataServiceHelper.Load(this.Context, metaData.BusinessInfo, null, filter).FirstOrDefault(); if (dyo == null) return; var value = dyo[fromFieldKey]; this.Model.SetValue(toFieldKey, value, rowNumber); } } }
5、效果
赞 2
2人点赞
还没有人点赞,快来当第一个点赞的人吧!
打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!
推荐阅读