В силу того что люди таки начали осваивать ER ( и довольно на удивление успешно, напоминая порой тетенек-бухгалтерш ака виртуозов Excel) приходится анализировать и их неудачи.
Одна из них оказалась связана с отчетом "Sales tax declaration info report for HU":
Кто то талантливый из видимо в MS (в терминах одного самокритичного коллеги работавшего на данную контору - см заголовок) не стал как обычно выводить название в параметры или использовать константы, смог как то обойти кодревью, проверки и втиснуть шедевр в класс SalesTaxDeclarationInformationReportService который как понимаю таки венгерский отчет но без всяких суффиксов.
Благодаря его столь решительному подходу попытки сделать свое в виде derive ов и прочего у консультантов обрекались на неудачу.
X++:
/// <summary>
/// Called by service controller.
/// </summary>
/// <param name = "_dataContract">The report parameters.</param>
[Microsoft.Dynamics.BusinessPlatform.SharedTypes.InternalUseOnlyAttribute]
public void run(SalesTaxDeclarationInfoReportContract _dataContract)
{
dataContract = _dataContract;
this.processReport();
this.runER();
}
/// <summary>
/// Called by service controller.
/// </summary>
private void runER()
{
ERIModelDefinitionParamsAction parameters = new ERModelDefinitionParamsUIActionComposite()
.add(
new ERModelDefinitionDatabaseContext()
.addTemporaryTable(this.getTmpTaxReport()))
.add(
new ERModelDefinitionDatabaseContext()
.addValue(tableNum(CompanyInfo), fieldNum(CompanyInfo, DataArea), curext()))
.add(
new ERModelDefinitionInputParametersAction()
.addParameter('ParameterReportMode', dataContract.parmReportMode()))
.add(
new ERModelDefinitionInputParametersAction()
.addParameter('model/ParameterFromDateRange',dataContract.parmTaxReportPeriodFromDate()))
.add(
new ERModelDefinitionInputParametersAction()
.addParameter('model/ParameterToDateRange', dataContract.parmTaxReportPeriodToDate()));
// Call ER to generate the report.
ERFormatMappingTable eRFormatMappingTable;
select RecId from eRFormatMappingTable where eRFormatMappingTable.Name == "Sales tax declaration info report for HU";
ERFormatMappingId formatMapping = eRFormatMappingTable.RecId;
ERObjectsFactory::createFormatMappingRunByFormatMappingId(formatMapping)
.withFileDestination(ERObjectsFactory::createFileDestinationBrowser())
.withParameter(parameters)
.withCreatingObjectParameter(SalesTaxDeclarationInfoReportContract::parmERModelname(),
classStr(SalesTaxDeclarationInfoReportContract),
dataContract).run();
}
Вопрос в том как это можно безболезненно и с минимумом кода поправить?