|
![]() |
#1 |
Участник
|
Приведенное решение - это борьба со следствием, а не с причиной. Тем более, что выбор цели не отображается в диалоговой форме RunBaseReport и пользователь вынужден нажимать Ok, в надежде, что выбор где-то там сохранился.
Причина проблемы кроется в методе \Classes\RunBaseReportDialog\main Там предварительно сделан вызов reportRun.prompt(). Таким образом, последующие настройки printJobSettings будут сделаны в кеше reportRun (отчета), а не в кеше RunBaseReport (класса). Собственно, "лечение" заключается в том, чтобы просто передать настройки сделанные для ReportRun в настройки для RunBaseReport. Т.е. необходимо изменить код метода \Classes\RunBaseReportDialog\main следующим образом X++: static void main(Args args) { RunBaseReportDialog reportDialog = new RunBaseReportDialog(args.caller()); RunBaseReport runBaseReport = args.caller().runbase(); ReportRun reportRun = runBaseReport.reportRun(); Report report = reportRun.report(); boolean oldInteractive; boolean res; Dialog dialog; // 31.03.2011, Maksi --> PrintJobSettings printJobSettingsRunBase; PrintJobSettings printJobSettingsReportRun; // 31.03.2011, Maksi <-- ; // We must invoke the SysPrintForm via the report object so that we honor an prompt overrides. oldInteractive = report.interactive(); report.interactive(true); res = reportRun.prompt(); report.interactive(oldInteractive); if (!res) return; // 31.03.2011, Maksi --> // Перенос сделанного выбора из ReportRun в RunBaseReport printJobSettingsReportRun = reportRun.printJobSettings(); printJobSettingsRunBase = runBaseReport.printJobSettings(); printJobSettingsRunBase.unpackPrintJobSettings(printJobSettingsReportRun.packPrintJobSettings()); // 31.03.2011, Maksi <-- dialog = Dialog::getDialogFromCaller(args.caller()); if (dialog) { dialog.updateServer(); } runBaseReport.dialogUpdatePrinterSettings(dialog); reportDialog.run(); } PS: Модификации методов pack/unpack в классе RunBaseReport для решения данной проблемы - не нужна |
|
|
За это сообщение автора поблагодарили: mazzy (2), Pustik (2). |
Теги |
ax2009, bug, bug report, ошибка, report |
|
|