二开案例.单据插件.获取子单据体完整数据包

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

二开案例.单据插件.获取子单据体完整数据包

【应用场景】

获取子单据体完整数据包。


【案例演示】

采购订单,获取子单据体完整数据包:

<1>获取单据体当前行下的子单据体数据包。

<2>获取子单据体完整数据包。



【实现步骤】

<1>编写单据插件,代码如下。

using Kingdee.BOS.Core.Bill.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Core.Metadata.EntityElement;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.ServiceFacade;
using Kingdee.BOS.Util;
using System.ComponentModel;
using System.Text;
namespace Jac.XkDemo.BOS.Business.PlugIn
{
    /// <summary>
    /// 【单据插件】获取子单据体完整数据包
    /// </summary>
    [Description("【单据插件】获取子单据体完整数据包"), HotUpdate]
    public class GetSubEntityDynamicObjectBillPlugIn : AbstractBillPlugIn
    {
        public override void BarItemClick(BarItemClickEventArgs e)
        {
            base.BarItemClick(e);
            if (e.BarItemKey.EqualsIgnoreCase("test"))
            {
                // 采购订单的交货明细子单据体
                var subEntity = (SubEntryEntity) this.View.BillBusinessInfo.GetEntity("FEntryDeliveryPlan");
                // 采购订单的吗,明细信息单据体
                var entity = this.View.BillBusinessInfo.GetEntity(subEntity.ParentEntityKey);
                // TODO
                // 获取单据体当前行下的子单据体数据包
                var subEntityObjs = this.Model.GetEntityDataObject(subEntity);
                var subEntityData = DynamicObjectToJson(subEntityObjs);
                // TODO
                // 获取子单据体完整数据包
                var allSubEntityObjs = new DynamicObjectCollection(subEntity.DynamicObjectType);
                var entityObjs = this.Model.GetEntityDataObject(entity);
                foreach (var entityObj in entityObjs)
                {
                    var subEntityObjs2 = (DynamicObjectCollection) subEntity.DynamicProperty.GetValue(entityObj);
                    if (subEntityObjs2.Count > 0)
                    {
                        foreach (var subEntityObj in subEntityObjs2)
                        {
                            allSubEntityObjs.Add(subEntityObj);
                        }
                    }
                }
                var allSubEntityData = DynamicObjectToJson(allSubEntityObjs);
                var msg = string.Format(@"单据体当前行下的子单据体数据包:
行数:{0}
数据包:{1}
子单据体完整数据包:
行数:{2}
数据包:{3}
", subEntityObjs.Count, subEntityData, allSubEntityObjs.Count, allSubEntityData);
                this.View.ShowMessage(msg);
            }
        }
        private static string DynamicObjectToJson(object obj)
        {
            var jsonSerializerProxy = new JsonSerializerProxy(Encoding.UTF8, false);
            var jsonData = jsonSerializerProxy.Serialize(obj);
            return jsonData;
        }
    }
}

<2>拷贝插件组件到应用站点的WebSite\Bin目录下,重启IIS。


<3>BOSIDE扩展采购订单,菜单集合新增菜单项test,注册表单插件,保存元数据,开发完毕。


【功能验证】

<1>登录业务站点,打开采购订单编辑界面,点击新增的菜单test,获取到的子单据体数据包如下图。

---------------------------------------------------------------------------------------------------------













【金蝶云星空BOS二次开发案例演示】https://vip.kingdee.com/article/94751030918525696

二开案例.单据插件.获取子单据体完整数据包

【应用场景】获取子单据体完整数据包。【案例演示】采购订单,获取子单据体完整数据包:<1>获取单据体当前行下的子单据体数据包。<2>获取子...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息