Жаль, что никто не ответил. Хотелось получить альтернативный взгляд на проблему
Пока решил так: в методе FormLetterReport.loadPrintSettings() исправил строчку во вложенном методе setSettingDetail():
X++:
void setSettingDetail(PrintMgmtDocInstanceType _type, SRSPrintDestinationSettings _defaultSettings)
{
......
if (SysCountryRegionCode::isLegalEntityInCountryRegion([#isoRU]))
{
......
}
else
{
// </GEERU>
/*
printSettingDetail.parmReportFormatName(PrintMgmtReportFormat::findSystem(this.getPrintMgmtDocumentType()).Name);
*/
printSettingDetail.parmReportFormatName(getReportFormatName(_type));
// <GEERU>
}
......
}
И добавил (внутри того же самого метода loadPrintSettings()) собственно сам вложенный метод getReportFormatName():
X++:
PrintMgmtReportFormatName getReportFormatName(PrintMgmtDocInstanceType _type)
{
PrintMgmtPrintContext printContext = new PrintMgmtPrintContext();
container printSettingPacked;
PrintMgmtPrintSetting printSetting;
int detailPosition;
printContext.parmDefaultOriginalPrintJobSettings(printMgmtReportRun.parmDefaultOriginalPrintJobSettings());
printContext.parmDefaultCopyPrintJobSettings(printMgmtReportRun.parmDefaultCopyPrintJobSettings());
printContext.parmLanguageId(_languageId);
printContext.parmQueryTableBuffer(_jourTable);
printContext.parmForcePrintJobSettings(printMgmtReportRun.parmForcePrintJobSettings());
printContext.setHierarchyContext(printMgmtReportRun.parmHierarchyType(), printMgmtReportRun.parmNodeType(), printMgmtReportRun.parmDocType(), _transTable);
// if code running on client, then make a server call to reduce RPC
if(isRunningOnServer())
{
printSetting = PrintMgmt::getSettings(printContext);
}
else
{
printSettingPacked = PrintMgmt::getSettings_Server(printContext.pack());
printSetting = new PrintMgmtPrintSetting();
printSetting.unpack(printSettingPacked);
}
for (detailPosition = 1; detailPosition <= printSetting.numDetails(); detailPosition++)
{
if (printSetting.getDetailByPos(detailPosition).parmType() == _type)
{
return printSetting.getDetailByPos(detailPosition).parmReportFormatName();
}
}
return PrintMgmtReportFormat::findSystem(this.getPrintMgmtDocumentType()).Name;
}
Не могу сказать, что очень уж изящно получилось, но глубже разбираться со структурой данных, в которой хранятся настройки управления печатью, сил не хватило

Кроме того, у меня всё ещё теплится надежда, что Майкрософт своё решение предложит в каком-нибудь хотфиксе