如何在 21.208 中获取报告字节
How to get report bytes in 21.208
我在尝试升级到 21.208 的 2020 R1 系统中有以下代码。问题是“SettingsProvider”没有“Instance”属性,因此,这会导致构建错误。此外,我收到 PXReportTools 已过时的警告,但我不确定用什么替换它?
此代码用于获取报告的 byte[],然后将其附加到电子邮件中。更新的 21.208 方法是什么?
Dictionary<string, string> dictionary = new Dictionary<string, string>();
dictionary["ARInvoice.DocType"] = current.DocType;
dictionary["ARInvoice.RefNbr"] = current.RefNbr;
Report report = PXReportTools.LoadReport("AR641000", (IPXResultset)null);
PXReportTools.InitReportParameters(report, (IDictionary<string, string>)dictionary, SettingsProvider.Instance.Default);
byte[] data = PX.Reports.Mail.Message.GenerateReport((object)ReportProcessor.ProcessReport(report), "PDF").First<byte[]>();
TIA!
从 21R2 开始,您需要使用依赖注入在图表中导入两个依赖项才能加载报告
[InjectDependency]
protected IReportLoaderService ReportLoader { get; private set; }
[InjectDependency]
protected IReportRenderer ReportRenderer { get; private set; }
然后使用这两个服务,您可以使用以下方法检索字节报告数据:
Dictionary<String, String> parameters = new Dictionary<String, String>();
Report _report = reportLoader.LoadReport(ARReports.InvoiceMemoReportID, null);
reportLoader.InitDefaultReportParameters(_report, parameters);
byte[] fileDate = null;
using (StreamManager streamMgr = new StreamManager())
{
reportRenderer.Render(RenderType.FilterPdf, _report, deviceInfo: null, streamMgr);
fileData = streamMgr.MainStream.GetBytes();
}
如果你想在本地保存它,你也可以将它保存在一个 FileInfo 对象中。
我在尝试升级到 21.208 的 2020 R1 系统中有以下代码。问题是“SettingsProvider”没有“Instance”属性,因此,这会导致构建错误。此外,我收到 PXReportTools 已过时的警告,但我不确定用什么替换它?
此代码用于获取报告的 byte[],然后将其附加到电子邮件中。更新的 21.208 方法是什么?
Dictionary<string, string> dictionary = new Dictionary<string, string>();
dictionary["ARInvoice.DocType"] = current.DocType;
dictionary["ARInvoice.RefNbr"] = current.RefNbr;
Report report = PXReportTools.LoadReport("AR641000", (IPXResultset)null);
PXReportTools.InitReportParameters(report, (IDictionary<string, string>)dictionary, SettingsProvider.Instance.Default);
byte[] data = PX.Reports.Mail.Message.GenerateReport((object)ReportProcessor.ProcessReport(report), "PDF").First<byte[]>();
TIA!
从 21R2 开始,您需要使用依赖注入在图表中导入两个依赖项才能加载报告
[InjectDependency]
protected IReportLoaderService ReportLoader { get; private set; }
[InjectDependency]
protected IReportRenderer ReportRenderer { get; private set; }
然后使用这两个服务,您可以使用以下方法检索字节报告数据:
Dictionary<String, String> parameters = new Dictionary<String, String>();
Report _report = reportLoader.LoadReport(ARReports.InvoiceMemoReportID, null);
reportLoader.InitDefaultReportParameters(_report, parameters);
byte[] fileDate = null;
using (StreamManager streamMgr = new StreamManager())
{
reportRenderer.Render(RenderType.FilterPdf, _report, deviceInfo: null, streamMgr);
fileData = streamMgr.MainStream.GetBytes();
}
如果你想在本地保存它,你也可以将它保存在一个 FileInfo 对象中。