Здравствуйте, как запустить определенный отчет из меню приложения?
Добрый день.
Для того, чтобы запустить отчет из меню приложения, в модуле web
нужно создать исполняемый бин следующего вида:
@Component("cuba_RunReportBean")
public class RunReportBean {
@Inject
private ReportGuiManager reportGuiManager;
@Inject
private DataManager dataManager;
public void runReport(){
LoadContext<Report> loadContext = LoadContext.create(Report.class)
.setQuery(LoadContext.createQuery("select p from report$Report p where p.code = '<SystemCodeOfYourReport>'"))
.setView("report.edit");
Report report = dataManager.load(loadContext);
Frame window = App.getInstance().getTopLevelWindow();
reportGuiManager.runReport(report, window);
}
}
В методе этого бина с помощью DataManager загружается необходимый отчет по его системному коду. После этого вызывается метод runReport
бина ReportGuiManager
.
После создания бина нужно добавить новый пункт меню - бин. Это можно сделать с помощью CUBA Studio следующим образом:
- Откройте секцию Generic UI
- Нажмите на кнопку Open web menu
- В открывшемся окне Menu designer нажмите на кнопку New
- В появившемся диалоге выберите Bean заполните поля Bean и Bean method
- Сохраните изменения
В файле web-menu.xml
появится новый пункт меню:
<item bean="cuba_RunReportBean"
beanMethod="runReport"/>
Локализованное название элемента меню формируется следующим образом: к идентификатору элемента добавляется префикс menu-config с точкой на конце, и полученная строка используется как ключ в главном пакете сообщений:
menu-config.cuba_RunReportBean#runReport = Run report
Теперь запустите приложение и запустите отчет.