电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

PLM物料库如何统计出物料【是否被BOM单据体引用】及引用的数量

来源:金蝶云社区作者:金蝶2024-09-235

PLM物料库如何统计出物料【是否被BOM单据体引用】及引用的数量

【应用场景】

一个物料可以被多个BOM引用为子项,可以快速统计引用数量,便于下推到ERP等业务场景。


【案例演示】

1.物料库显示物料【是否被BOM单据体引用】及引用的数量。

2.该演示同样适用于统计物料被BOM单据头引用的数量,但需修改脚本查询条件,相关脚本请参考知识贴:https://vip.kingdee.com/article/423853888236841216


【实现步骤】

<1>BOSIDE->PDM基础对象扩展分别增加【是否被BOM单据体引用】复选框、【被BOM子单据体引用数量】整数两个字段。



<2>物料业务类型配置->属性配置,添加自定义扩展字段,用于列表查询显示



<3>编写表单插件(如何编写二开插件配置等请参考:二次开发扩展程序开发之插件模式https://vip.kingdee.com/article/83591896433330944?productLineId=1其他星空PLM开发指南也可以参考 【汇总】星空PLM二开指南(持续更新)https://vip.kingdee.com/article/329914697153905408?productLineId=1&isKnowledge=2更多详细的金蝶云星空BOS二次开发指南:https://vip.kingdee.com/article/94751030918525696?productLineId=1&isKnowledge=2


示例代码如下:

using Kingdee.BOS;
using Kingdee.BOS.App.Core.Utils;
using Kingdee.BOS.Core.List.PlugIn.Args;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.Resource;
using Kingdee.K3.PLM.CFG.Business.PlugIn.BaseObject;
using Kingdee.K3.PLM.CFG.Common.BusinessEntity.Base;
using Kingdee.K3.PLM.CFG.Common.BusinessEntity.Manager;
using Kingdee.K3.PLM.Common.Core.Utility;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using  Kingdee.K3.PLM.Business.PlugIn;

namespace ISV.Material.Common.BusinessEntity
{
    [Description("物料被BOM单据体引用二开插件")]
    public class MaterailList : AbstractPLMListPlugIn
    {
        /// <summary>
        /// 是否加载过当前列表数据
        /// </summary>
        private bool setData = false;
        /// <summary>
        /// 物料库当前列表数据
        /// </summary>
        private DynamicObject[] materialList = null;
        public override void OnLoad(EventArgs e)
        {
            setData = false;
            base.OnLoad(e);
        }
        public override void FormatCellValue(FormatCellValueArgs args)
        {
            DynamicObjectDataRow row = (DynamicObjectDataRow)args.DataRow;
            switch (args.Header.FieldName.ToUpper())
            {
                case "FISUSEDBYBOM":
                case "FNUM":
                    if (CategoryContract.Instance.IsMaterialCategory(_currentCategoryID))
                    {
                        if (!setData)
                        {
                            //第一次打开物料库,一次性加载所有物料对象
                            var baseIds = this.ListView.CurrentPageRowsInfo.Select(w => Convert.ToInt64(w.DataRow["FID"])).ToArray();
                            materialList = DomainObjectManager.AutoLoad(PLMContext, baseIds).ToArray();
                            setData = true;
                        }
                        DynamicObject obj = materialList != null ? materialList.Where(x => Convert.ToInt64(x["id"]) == Convert.ToInt64(row["FID"])).FirstOrDefault() : null;
                        if (obj != null)
                        {
                            string sql = string.Format("select COUNT(1) num from t_plm_cfg_relation where FSLAVERELATION={0}", Math.Abs(Convert.ToInt

PLM物料库如何统计出物料【是否被BOM单据体引用】及引用的数量

【应用场景】一个物料可以被多个BOM引用为子项,可以快速统计引用数量,便于下推到ERP等业务场景。【案例演示】1.物料库显示物料【是否被BO...
点击下载文档文档为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

已经是第一篇
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信