Ошибка в browse крана , если удалить атрибут сущности и если этот атрибут сохранен в одном из сохранном фильтре

  1. атрибут endedDate использовался в сохраненных фильтрах
  2. удалить атрибут из сущности
  3. открыть browser сущности

получаем ошибку.

в таблице ui_filter_configuration сохранилась ссылка на удаленный атрибут.

Caused by: java.lang.IllegalArgumentException: Can’t create component for the ‘endedDate’ with given meta class ‘Request’
at io.jmix.ui.component.UiComponentsGenerator.generate(UiComponentsGenerator.java:57) ~[jmix-ui-1.2.0.jar!/:na]
at io.jmix.ui.component.propertyfilter.SingleFilterSupport.generateValueComponent(SingleFilterSupport.java:56) ~[jmix-ui-1.2.0.jar!/:na]
at io.jmix.ui.component.impl.PropertyFilterImpl.setOperationInternal(PropertyFilterImpl.java:177) ~[jmix-ui-1.2.0.jar!/:na]
at io.jmix.ui.component.impl.PropertyFilterImpl.setOperation(PropertyFilterImpl.java:151) ~[jmix-ui-1.2.0.jar!/:na]
at io.jmix.ui.component.propertyfilter.PropertyFilterConverter.convertToComponent(PropertyFilterConverter.java:70) ~[jmix-ui-1.2.0.jar!/:na]
at io.jmix.ui.component.propertyfilter.PropertyFilterConverter.convertToComponent(PropertyFilterConverter.java:40) ~[jmix-ui-1.2.0.jar!/:na]
at io.jmix.ui.component.groupfilter.GroupFilterConverter.convertToComponent(GroupFilterConverter.java:71) ~[jmix-ui-1.2.0.jar!/:na]
at io.jmix.ui.component.groupfilter.GroupFilterConverter.convertToComponent(GroupFilterConverter.java:40) ~[jmix-ui-1.2.0.jar!/:na]
at io.jmix.uidata.filter.FilterConfigurationConverter.toConfiguration(FilterConfigurationConverter.java:62) ~[jmix-ui-data-1.2.0.jar!/:na]
at io.jmix.uidata.filter.UiDataFilterSupport.getConfigurationsMap(UiDataFilterSupport.java:91) ~[jmix-ui-data-1.2.0.jar!/:na]
at io.jmix.ui.component.impl.FilterImpl.loadConfigurationsAndApplyDefault(FilterImpl.java:373) ~[jmix-ui-1.2.0.jar!/:na]
at io.jmix.ui.xml.layout.loader.FilterLoader.lambda$loadConfigurations$4(FilterLoader.java:152) ~[jmix-ui-1.2.0.jar!/:na]
at io.jmix.ui.xml.layout.loader.ComponentLoaderContext.executePostInitTasks(ComponentLoaderContext.java:141) ~[jmix-ui-1.2.0.jar!/:na]
at io.jmix.ui.sys.ScreensImpl.createScreen(ScreensImpl.java:228) ~[jmix-ui-1.2.0.jar!/:na]
at io.jmix.ui.sys.ScreensImpl.create(ScreensImpl.java:145) ~[jmix-ui-1.2.0.jar!/:na]
at io.jmix.ui.menu.MenuItemCommands$ScreenCommand.createScreen(MenuItemCommands.java:306) ~[jmix-ui-1.2.0.jar!/:na]
at io.jmix.ui.menu.MenuItemCommands$ScreenCommand.run(MenuItemCommands.java:242) ~[jmix-ui-1.2.0.jar!/:na]
at io.jmix.ui.menu.SideMenuBuilder$MenuCommandExecutor.accept(SideMenuBuilder.java:272) ~[jmix-ui-1.2.0.jar!/:na]
at io.jmix.ui.menu.SideMenuBuilder$MenuCommandExecutor.accept(SideMenuBuilder.java:257) ~[jmix-ui-1.2.0.jar!/:na]
at io.jmix.ui.component.mainwindow.impl.SideMenuImpl$MenuItemImpl.menuSelected(SideMenuImpl.java:587) ~[jmix-ui-1.2.0.jar!/:na]
at io.jmix.ui.widget.JmixSideMenu$1.menuItemTriggered(JmixSideMenu.java:91) ~[jmix-ui-1.2.0.jar!/:na]
… 88 common frames omitted

Добрый день!

В данном случае, необходимо вручную удалить фильтры, которые могли использовать данный атрибут. Например, через инспектор сущностей (Entity Inspector), или написать свой скрипт. Студия и фреймворк не отслеживают использование удалённых атрбиутов в фильтрах, т.к. это зона ответственности самого разработчика.

Логично было бы, что бы не инциализировался конкретный сохраненный фильтр или весь компонент фильтр, а не весь screen. это блокер для работы пользователей.
т.к. как вы и писали, у разработчика (Студия и фреймворк ) нет возможности отслеживать что насохронял пользователь.

1 симпатия

Вы правы, экран все-таки должен открываться.
Постараемся это исправить: https://github.com/jmix-framework/jmix/issues/747