/// <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); } }