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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 02.11.2012, 14:51   #1  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,448 / 1792 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
В вашей ситуации я вижу следующий порядок действий:

1) Сделать наследник класса InventPrintLabel2, который вместо того чтобы самостоятельно заполнять данными временную таблицу, будет содержать метод для передачи ему уже готовой таблицы. Метод initTmpInventPrintLabel() наследника должен просто возвращать уже готовую таблицу.

2) Запускать отчёт напрямую без класса, а класс передавать в качестве параметра args.caller().

X++:
Args args; 
SysReportRun reportRun; 
InventPrintLabel2_Child InventPrintLabel2;
; 

InventPrintLabel2 = new InventPrintLabel2_Child();
InventPrintLabel2.parmTable(InventPrintLabel);
args.name(reportstr(MyReport)); 
args.caller(InventPrintLabel2)
reportRun = ClassFactory.ReportRunClass(args);
reportRun.query().interactive(false); 
reportRun.report().interactive(false); 
reportRun.setTarget(PrintMedium::Printer); 
reportRun.run();
Старый 02.11.2012, 16:47   #2  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,715 / 1204 (44) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
В вашей ситуации я вижу следующий порядок действий:

1) Сделать наследник класса InventPrintLabel2

2) Запускать отчёт напрямую без класса, а класс передавать в качестве параметра args.caller().
Вообще-то, есть еще 3 вариант. Добавить в класс InventPrintLabel2 дополнительный статический метод, который настроит вывод сразу на печать и не будет вызывать диалога.

Стандартный вызов класса, связанного с пунктом меню, идет через статический метод main(). Но никто не мешает сделать, скажем, статический метод print() и вызывать именно его. Без "обертки" в виде пункта меню.

X++:
// Вызов
args.record(InventPrintLabel); 
InventPrintLabel2_Child::print(args);

// Примерное содержимое метода InventPrintLabel2_Child::print(args);
static void print(Args _args)
{
    printJobSettings printJobSettingsLocal;
    InventPrintLabel2_Child inventPrintLabel2_Child = new InventPrintLabel2_Child();
    ;

    inventPrintLabel2_Child.makeReportRun();
    printJobSettingsLocal = inventPrintLabel2_Child.reportRun().printJobSettings();
    printJobSettingsLocal.setTarget(PrintMedium::Printer);
    inventPrintLabel2_Child.run();

}
Впрочем, в этом коде я не уверен в способе настройки вывода на принтер через printJobSettings. Тут надо проверять...

Ну, и 4 вариант - это передавать через args() признак того, что класс надо запускать без диалога. Т.е. метод main будет включать в себя то, что написано для print().
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Отчеты и печать штрих кода KingPeas DAX: Программирование 18 24.09.2008 14:31
Печать нескольких экземпляров отчета по умолчанию. bum DAX: Функционал 3 17.06.2008 10:42
Двухсторонняя печать отчета Shirmin Oleg DAX: Программирование 6 18.10.2007 10:08
Печать отчета на несколько страниц Прокопьева DAX: Программирование 7 18.08.2006 07:40
Печать отчетов, как увеличить масштаб отчета? Hidden DAX: Прочие вопросы 8 30.12.2005 10:55

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

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

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