Показать сообщение отдельно
Старый 02.11.2012, 16:47   #20  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,711 / 1201 (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().
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...