业务需求: 在自定义的BOS单据上,关联配置产品代码带出产品配置单,并完成物料、BOM简称默认值填写。
实现方式:
1、在自定义单据表体增加按钮,
2、通过按钮插件,实现打开产品配置单,并将物料代码、一个文本字段,做为参数传递。代码如下:
if (e.BarItemKey.ToUpper() == "tbBomSet".ToUpper())
{
DynamicObject MaterialObj =(DynamicObject) this.View.Model.GetValue("F_PAEZ_BASE", this.View.Model.GetEntryCurrentRowIndex("FEntity"));
string FMaterialID = MaterialObj["Id"].ToString();
DynamicFormShowParameter param = new DynamicFormShowParameter();
param.FormId = "ENG_BOMCONFIG";//单据ID的标识
param.ParentPageId = this.View.OpenParameter.PageId;
param.PageId = Guid.NewGuid().ToString();
//param.OpenStyle.ShowType = ShowType.NewTabPage;
//param.CustomParams.Add("FMaterialNumber", " 3.2.1.2.3.1110115");//传递过滤
param.CustomComplexParams.Add("FMaterialNumber", FMaterialID);//传递过滤
//param.CustomParams.Add("FHTH", this.View.Model.GetValue("F_PAEZ_Text").ToString());//传递过滤
param.CustomComplexParams.Add("FHTH", this.View.Model.GetValue("F_PAEZ_Text").ToString());//传递过滤
this.View.ShowForm(param);
}
3、在产品配置单开发插件,接收参数,写入字段。代码如下:
public override void AfterBindData(EventArgs e)
{
base.AfterBindData(e);
string FMaterialNumber = this.View.OpenParameter.GetCustomParameter("FMaterialNumber").ToString();
this.Model.SetValue("FMATERIALID", FMaterialNumber);
string FHTH = this.View.OpenParameter.GetCustomParameter("FHTH").ToString();
this.Model.SetValue("FCfgName", FHTH);
this.Model.SetValue("FName", FHTH);
}
问题:
一、可以不写产品配置单代码,直接实现此功能吗?
二、在产品配置单代码里面,我写完物料编码后,再写BOM简称,会被自动清理。 怎么能做到写完物料编码后,再写BOM简称,而不被清理。
无标题.png(70.81KB)
推荐阅读