На днях пришлось использовать вашу идею с передачей параметра, при этом выяснил, что его в маппинге надо оставлять в "корне", а не прятать в отдельном контейнере, в противном случае ER не может его нормально найти по пути. Использовал GUID для поиска отчета:
X++:
public static void main(Args args)
{
const str reportMappingGUID = "31716666-8662-45EF-BE58-8C71EC584132";
const str paramPackageIdPath = "model/SPLPackageId";
var erReport = ERObjectsFactory::createFormatMappingRunByFormatMappingId(ERFormatMappingTable::findByGUID(str2Guid(reportMappingGUID)).Format);
if (args && args.record())
{
SPLPackageTable packageTable = args.record() as SPLPackageTable;
ERModelDefinitionInputParametersAction inputParameters = new ERModelDefinitionInputParametersAction();
inputParameters.addParameter(paramPackageIdPath, packageTable.PackageId);
erReport.withParameter(inputParameters).run();
}
else
{
erReport.run();
}
}