质量报表二开增加显示单据上的字段原创
金蝶云社区-SkyZPP
SkyZPP
6人赞赏了该文章 1201次浏览 未经作者许可,禁止转载编辑于2020年03月18日 15:50:23

说明:本例以销售退货质量统计表增加显示检验单上质检方案字段的值为例

1、BOS设计器找到销售退货质量统计表扩展,在表体增加基础资料类型字段,绑定质检方案基础资料,如下图所示:

1.png

2、BOS设计器找到销售退货质量统计表过滤扩展,在显示隐藏列的字段集合属性中增加基础资料类型字段,命名为质检方案。如下图所示;

2.png

3、二开报表插件继承标准产品插件;

代码如下:

public class ReportTest : SalesReturnQuaStatisticRpt

    { 

        public override void Initialize()

        {

            base.Initialize();

            this.ReportProperty.DspInsteadColumnsInfo.DefaultDspInsteadColumns.Add("FQCSCHEMEID", "FQCSCHEMENAME");

        }              

        public override void BuilderReportSqlAndTempTable(BOS.Core.Report.IRptParams filter, string tableName)

        {

            base.BuilderReportSqlAndTempTable(filter, tableName);

            string sql = string.Format(@"ALTER TABLE {0} ADD FQCSCHEMEID INT NULL,FQCSCHEMENUMBER NVARCHAR(255),FQCSCHEMENAME NVARCHAR(255) ", tableName);

            DBUtils.Execute(this.Context, sql);

 

            //给新增的字段赋值,注意到报表系统临时表的主键固定是FIDENTITYID       

            sql = string.Format(@"

MERGE INTO {0} U1 USING (

SELECT T0.FQCSCHEMEID,T1.FIDENTITYID,T4.FNUMBER AS FQCSCHEMENUMBER ,T5.FNAME AS FQCSCHEMENAME

FROM T_QM_INSPECTBILLENTRY T0

INNER JOIN T_QM_INSPECTBILL T2 ON T2.FID=T0.FID

INNER JOIN {0} T1 ON T1.FINSPECTBILLID = T2.FID AND T1.FINSPECTBILLROWSEQ = T0.FSEQ

INNER JOIN T_QM_QCSCHEME  T4 ON T4.FID=T0.FQCSCHEMEID

INNER JOIN T_QM_QCSCHEME_L  T5 ON T5.FID=T0.FQCSCHEMEID AND T5.FLOCALEID={1}

) U2 ON U2.FIDENTITYID=U1.FIDENTITYID

WHEN MATCHED THEN UPDATE

SET FQCSCHEMEID=U2.FQCSCHEMEID,FQCSCHEMENUMBER=U2.FQCSCHEMENUMBER,FQCSCHEMENAME=U2.FQCSCHEMENAME

", tableName, this.Context.UserLocale.LCID);

            DBUtils.Execute(this.Context, sql);

        }

    }

4、打开销售退货质量统计表,注册二开的新插件,取消标准产品插件的引用;

3.png

5、运行效果如下所示:

4.png

 

注意:代码中质检方案的名称和编码的字段长度可以根据实际修改,代码中给了255为例。


赞 6