예제 #1
0
        /// <inheritdoc>
        protected override void ParseQueries(object queriesData)
        {
            base.ParseQueries(queriesData);

            // В запросах мастера отчета могут быть ссылки на другие отчеты.
            // В таком случае параметры и поля этих отчетов автоматом добавляются в
            // текущий отчет.

            // Прикрепленные отчеты
            ReportDesignerLoader attachedReportLoader = new ReportDesignerLoader(excelEngine);

            foreach (XElement xReport in queriesDoc.Root.Elements("otchet"))
            {
                int    attachedReportId      = int.Parse(xReport.Attribute("prikOtchetId").Value);
                string attachedLeftJoinQuery = xReport.Attribute("prikZapros").Value;

                queries.Add(new ReportDesignerQuery(attachedLeftJoinQuery));
                Report attachedReport = ReportSchema.Instance.FindReport(attachedReportId);
                // Запросы
                attachedReportLoader.Load(attachedReportId);
                queries.AddRange(attachedReportLoader.ReportQueries.Where(q => q.IsJoinExpression));
                // Параметры
                attachedParameters = new List <ReportParameter>();
                attachedParameters.AddRange(attachedReport.Parameters);
                // Поля
                attachedFields = new List <ReportField>();
                attachedFields.AddRange(attachedReportLoader.ReportFields);
            }
        }
        private void InitExport()
        {
            excelEngine = new ExcelEngine();
            loader      = new ReportDesignerLoader(excelEngine);
            loader.Load(reportData.Id);
            view.SetReportFields(loader.ReportFields);
            view.SetReportQueries(loader.ReportQueries);

            if (loader.AttachedFields != null)
            {
                view.AddFields(loader.AttachedFields);
            }
            if (loader.AttachedParameters != null)
            {
                view.AddParameters(loader.AttachedParameters);
            }

            export = new ExcelRDExport(conn, loader.WorkBook, reportData.Name);
            if (loader.ReportFields.Count == 0)
            {
                export.SetQueries(loader.ReportQueries);
            }
        }