|
![]() |
#1 |
Участник
|
В вашей ситуации я вижу следующий порядок действий:
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(); |
|
![]() |
#2 |
Участник
|
Цитата:
Стандартный вызов класса, связанного с пунктом меню, идет через статический метод 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(); } Ну, и 4 вариант - это передавать через args() признак того, что класс надо запускать без диалога. Т.е. метод main будет включать в себя то, что написано для print().
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|