     {
        "title": "Наименование",
        "key": "errorName",
        "type": "input",
        "hintText": "Ошибки по полям (возникает при пустом поле)"
      }, {
        "title": "Тип",
        "key": "errorType",
        "type": "dictionary",
        "hintText": "Бизнес ошибка (возникает при изменении поля)"
      },{
        "title": "Категория",
        "key": "errorCategory",
        "type": "dictionary",
        "hintText": "Системная ошибка (возникает при изменении поля)"
      }

     // WidgetServiceImpl.java
      @Service
      public class WidgetServiceImpl extends AbstractResponseService<WidgetDTO, WidgetEntity> implements VanillaDocService {

          @Autowired
          private DictionaryCache dictionaryCache;
          @Autowired
          private BCHolder bcHolder;

          public VanillaDocServiceImpl() {
              super(WidgetDTO.class, WidgetEntity.class, null, FieldMetaBuilder.class);
          }

          @Override
          public ResultPage<WidgetDTO> getList(Long parId, QueryParameters params) {
                  return entitiesToDtos(baseDAO.getList(WidgetEntity.class, WidgetDTO.class ,null, params));
          }

          @Override
          public ActionResultDTO<WidgetDTO> updateEntity(Long id, Long parentId, DataResponseDTO dto) {
                  ServiceAssociation bc = bcHolder.getActiveBC();
                  VanillaTask task = baseDAO.findById(VanillaTask.class, id);
                  WidgetDTO updatedDto = new WidgetDTO(task);
                  WidgetDTO dtoData = (WidgetDTO) dto;
                  Set<String> changedFields = dtoData.getChangedFields();
                  if (changedFields.contains("errorType")) {
                      throw new BusinessException()
                              .addPopup("Тест popup-error 1")
                              .addPopup("Тест popup-error 2");
                  }
                  if (changedFields.contains("errorCategory")) {
                      throw new NullPointerException();
                  }
                  return new ActionResultDTO<>(updatedDto);
          }

          @Override
          public ActionResultDTO<WidgetDTO> deleteEntity(Long id) {
              throw new UnsupportedOperationException();
          }

      }

      // FieldMetaBuilder.java
      @Service
      public class FieldMetaBuilder extends FieldMetaBuilder<DTOClass> {

          @Override
          public void buildRowDependentMeta(RowDependentFieldsMeta<VanillaDocDTO> fields, Long rowId, Long parRowId) {}

          @Override
          public void buildRowDependentMetaForNewRecord(RowDependentFieldsMeta<VanillaDocDTO> fields, Long parRowId) {}

          @Override
          public void buildIndependentMeta(FieldsMeta<VanillaDocDTO> fields, Long parRowId) {
              fields.setDictionaryTypeWithAllValues(errorType,DictionaryType.TASK_TYPE);
              fields.setDictionaryTypeWithAllValues(errorCategory,DictionaryType.TASK_CATEGORY);
              fields.setRequired(errorName);
              fields.setForceActive(errorType);
              fields.setForceActive(errorCategory);
          }
      }

