Как запустить определенный отчет из меню приложения?

Здравствуйте, как запустить определенный отчет из меню приложения?

1 симпатия

Добрый день.

Для того, чтобы запустить отчет из меню приложения, в модуле 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 следующим образом:

  1. Откройте секцию Generic UI
  2. Нажмите на кнопку Open web menu
  3. В открывшемся окне Menu designer нажмите на кнопку New
  4. В появившемся диалоге выберите Bean заполните поля Bean и Bean method
  5. Сохраните изменения

В файле web-menu.xml появится новый пункт меню:

<item bean="cuba_RunReportBean"
              beanMethod="runReport"/>

Локализованное название элемента меню формируется следующим образом: к идентификатору элемента добавляется префикс menu-config с точкой на конце, и полученная строка используется как ключ в главном пакете сообщений:
menu-config.cuba_RunReportBean#runReport = Run report

Теперь запустите приложение и запустите отчет.

3 симпатии