Electronic Reporting (ER) en Memoria: Procesamiento Avanzado
En el siguiente enlace podéis consultar la documentación oficial de Microsoft sobre como desarrollar un informe usando la funcionalidad de Informes Electrónicos:
Pero, ¿y si queremos enviar este informe a algún servicio externo? ¿Podemos obtener el contenido del informe en una variable?
La respuesta es SÍ!!
Os dejo un fragmento de código que lanza un informe GER obteniendo el contenido en una variable ByteArray (byteER):
using Microsoft.Dynamics365.LocalizationFramework; ///
/// <summary>
/// Generates report by using Electronic reporting framework
/// </summary>
/// <param name = "_contract">The Custom report contract</param>
public void generateReportByGER(CustomErReportContract _contract)
{
ERFormatMappingId formatMappingId;
CustomErReportDP dataProvider;
dataProvider = CustomErReportDP::construct();
formatMappingId = _contract.parmFormatMapping();
if (formatMappingId)
{
try
{
ERIModelDefinitionParamsAction parameters = new ERModelDefinitionParamsUIActionComposite()
.add(new ERModelDefinitionObjectParameterAction(ERModelDataSourceName, ParametersDataSourceName, _contract, true));
// Call ER to generate the report.
ERIFormatMappingRun formatMappingRun = ERObjectsFactory::createFormatMappingRunByFormatMappingId(formatMappingId, DefaultExportedFileName);
runner.parmShowPromptDialog(false);
runner.withShowDestinationTab(false);
ERFileDestinationMemory fileDestinationMemory = new ERFileDestinationMemory();
runner.withFileDestination(fileDestinationMemory);
str stream = runner.withParameter(parameters).run();
System.Byte[] **byteER** = fileDestinationMemory.GetByteArray();
}
}
catch
{
// An error occurred while exporting data.
error("@SYP4861341");
}
}
else
{
// There is no data available.
info("@SYS300117");
}
}
}