web
You’re offline. This is a read only version of the page.
close
Skip to main content

Announcements

No record found.

News and Announcements icon
Community site session details

Community site session details

Session Id :

ER en memoria!

id365font Profile Picture id365font 398

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:

https://docs.microsoft.com/en-us/dynamics365/fin-ops-core/dev-itpro/analytics/er-quick-start1-new-solution#ModifySourceCode

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;
/// 
/// The electronic reporting service class for a custom ER report
/// 
class CustomErReportService extends SysOperationServiceBase
{
    public const str ERModelDataSourceName = 'model';
    public const str DefaultExportedFileName = 'Custom report';
    public const str ParametersDataSourceName = 'RunTimeParameters';

    /// 
    /// Generates report by using Electronic reporting framework
    /// 
    /// The Custom report contract
    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");
        }
    }
}

Comments

*This post is locked for comments