明细行取多列平均值, 样本值总数除以样本数原创
78人赞赏了该文章
292次浏览
未经作者许可,禁止转载编辑于2024年05月10日 10:41:21
客户提出有5列样本,分别记作样本1,样本2, 样本3, 样本4,样本5。 取样数量不一定,有时取3个样本,有时取5个本。然后将取样数作平均数存放在样本平均值字段上。
做了python 小插件。
import clr clr.AddReference("Kingdee.BOS") clr.AddReference("Kingdee.BOS.Core") clr.AddReference("Kingdee.BOS.ServiceHelper") from System import DateTime from Kingdee.BOS.Core import * from Kingdee.BOS.ServiceHelper import * def DataChanged(e): fbilltypeid = this.View.Model.GetValue("FBillTypeID") # 单据类型 if fbilltypeid["Id"].ToString() != "635cbdae6f70dd": # 635cbdae6f70dd , 指定的单据类型计算样本平均数 # this.View.ShowMessage(fbilltypeid["Id"].ToString()) return if ( # 触发值更新的五个样本字段 e.Key == "F_NBDF_YB1" or e.Key == "F_NBDF_YB2" or e.Key == "F_NBDF_YB3" or e.Key == "F_NBDF_YB4" or e.Key == "F_NBDF_YB5" ): rowCount = 0 # 取样数量 rowCount = this.View.Model.GetEntryRowCount("FItemDetail") cnt = 0 yb_avg = 0 F_NBDF_YB1 = this.View.Model.GetValue("F_NBDF_YB1", e.Row) F_NBDF_YB2 = this.View.Model.GetValue("F_NBDF_YB2", e.Row) F_NBDF_YB3 = this.View.Model.GetValue("F_NBDF_YB3", e.Row) F_NBDF_YB4 = this.View.Model.GetValue("F_NBDF_YB4", e.Row) F_NBDF_YB5 = this.View.Model.GetValue("F_NBDF_YB5", e.Row) if F_NBDF_YB1 > 0: cnt += 1 if F_NBDF_YB2 > 0: cnt += 1 if F_NBDF_YB3 > 0: cnt += 1 if F_NBDF_YB4 > 0: cnt += 1 if F_NBDF_YB5 > 0: cnt += 1 if cnt > 1: yb_avg = ( F_NBDF_YB1 + F_NBDF_YB2 + F_NBDF_YB3 + F_NBDF_YB4 + F_NBDF_YB5 ) / cnt this.View.Model.SetValue("F_NBDF_AVG", yb_avg, e.Row) this.View.UpdateView("F_NBDF_AVG", e.Row)
推荐阅读