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.ToIntPLM物料库如何统计出物料【是否被BOM单据体引用】及引用的数量
【应用场景】一个物料可以被多个BOM引用为子项,可以快速统计引用数量,便于下推到ERP等业务场景。【案例演示】1.物料库显示物料【是否被BO...
点击下载文档文档为doc格式
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
上一篇
已经是第一篇



