AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 31.03.2011, 19:43   #1  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,715 / 1204 (44) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Приведенное решение - это борьба со следствием, а не с причиной. Тем более, что выбор цели не отображается в диалоговой форме 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

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Метод "version" не поддерживается интерфейсом Automation COM-объекта класса "<неизвестно>". Poleax DAX: Администрирование 2 02.11.2010 15:25
АХ2009: Print Medium (Канал вывода) у RunBaseReport отчетов DTD DAX: Программирование 3 23.06.2010 18:08
Как посмотреть параметры коннекта АОС -> SQL ? egorych DAX: Администрирование 2 28.08.2007 13:39
Параметры отчета в RunBaseReport Mystery DAX: Программирование 20 14.04.2004 13:13
Параметры почты - не работает... soin DAX: Функционал 3 09.01.2004 01:00

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 14:08.