二开案例.单据体显示物料上的附件

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-16浏览:1

二开案例.单据体显示物料上的附件

需求:物料上添加了附件字段,用于上传图纸。希望录单时,能查看附件

二开方案:在单据明细上增加附件字段,使用二开插件,将物料的附件携带到该字段上。


1、在物料上添加“多选附件(文件服务器)”字段,ID为F_UNW_ATTACHMENTS_QTR

image.webp

2、在单据体上添加“基础资料属性”字段,引用物料上的附件字段


image.webp

3、在单据体上添加“基础资料属性”字段,引用物料上的附件字段。打开单据,发现系统不支持,带不出附件。


image.webp

4、变通实现,在单据体上添加“多选附件(文件服务器)”字段,ID为F_UNW_Attachments_tzk。通过二开插件,将物料上的附件带到该字段上。

注意:该字段值来自物料,不需要保存到数据库。可设置成只读,“字段名”属性设置为空。

image.webp


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、效果


image.webp




二开案例.单据体显示物料上的附件

需求:物料上添加了附件字段,用于上传图纸。希望录单时,能查看附件二开方案:在单据明细上增加附件字段,使用二开插件,将物料的附件携带...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息