Цитата:
Сообщение от
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().