U9系统太大了,不可避免会发生一些隐含的重大BUG。今天碰到一个这样的问题,在请购单列表上做了一个【模拟提交】的按钮,目的是取代原来的【提交】按钮,目的是可以加上个性化需要的防呆措施,实现客制化的目的。效果如下图。
//在BE界面上才可以调用提交按钮的SubmitClick方法,UI界面上不可以调。有二种方式:
//1、调用SubmitClick方法
UIActionEventArgs uIActionEventArgs = new UIActionEventArgs();
this.part.Action.SubmitClick(sender, uIActionEventArgs);//提交//2、调用服务
var submitService = new UFIDA.U9.PR.PurchaseRequest.Proxy.PRSubmitBPNewProxy();
var iDS = new List<long>();
//要拿到请购单行的ID,才能提交成功
foreach (UFIDA.U9.SCM.PM.PRUIModel.PR_PRLineListRecordrec in this.part.Model.PR_PRLineList.Records)
{
var recType = rec.GetType();
System.Diagnostics.Debug.WriteLine(recType.FullName);if (rec != null && rec.ID > 0)
{
iDS.Add(rec.ID);
}
}
if (iDS.Count == 0)
{
throw new Exception("未找到有效的请购单行,请重新选择。");
}
submitService.PRLines = iDS;
submitService.Do();
PR_PRLineListRecordrec 竟然还有另外一种类型的匹配,相关的dll文件内部有BUG吧。有错误提示。
操作:PRSubmitBPNew的参数:PRLineKeys设置不正确,此异常出现的原因为该操作的调用方提供的参数值不正确导致
曾几何时用var去标识,是不破的万金油,每每顺利解决掉阻碍。此次因为还有另外一种类型也是返回PR_PRLineListRecord。分析了很久,不得其解。无奈之下,问下万能的AI,果然解决了!措施:把类的全路径信息标全。完美解决掉问题。