/**
   * Подготовка LOB-полей перед сабмитом формы
   *
   * @param field LOB-поле
   * @param resultRecord текущий рекорд, по которому готовим поле
   */
  @SuppressWarnings("unchecked")
  private void prepareLOBField(final JepLargeField field, final JepRecord resultRecord) {

    field
        .getHiddenPrimaryKeyField()
        .setValue(
            JepHistoryToken.getMapAsToken(
                clientFactory.getRecordDefinition().buildPrimaryKeyMap(resultRecord)));

    field.setBeforeSubmitCommand(
        new ScheduledCommand() {
          @Override
          public void execute() {
            if (submitCounter++ == 0) {
              JepClientUtil.showLoadingPanel(
                  null, clientFactory.getTexts().loadingPanel_fileLoading());
            }
          }
        });

    field.setAfterSubmitCommand(
        new JepScheduledCommand<String>() {
          public void execute() {
            submitCounter--;
            String resultHtml = getData();
            if (submitSuccessful(resultHtml)) {
              onSubmitSuccess(resultRecord);
            } else {
              onSubmitFailure(resultRecord, resultHtml);
            }
          }
        });
  }
  /**
   * Метод, вызываемый после успешного сохранения информации
   *
   * @param resultRecord ссылка на созданную запись
   */
  public void onSaveSuccess(JepRecord resultRecord) {
    submitCounter = 0;

    for (JepMultiStateField field : fields.values()) {
      JepLargeField largeField;
      if ((field instanceof JepLargeField)
          && (largeField = (JepLargeField) field).isFileSelected()) {
        prepareLOBField(largeField, resultRecord);
        largeField.getFormPanel().submit();
      }
    }
    if (submitCounter == 0) {
      afterSave(resultRecord);
    }
  }