diff --git a/modules/org.openbravo.client.application/src/org/openbravo/client/application/window/FormInitializationComponent.java b/modules/org.openbravo.client.application/src/org/openbravo/client/application/window/FormInitializationComponent.java
--- a/modules/org.openbravo.client.application/src/org/openbravo/client/application/window/FormInitializationComponent.java
+++ b/modules/org.openbravo.client.application/src/org/openbravo/client/application/window/FormInitializationComponent.java
@@ -600,7 +600,11 @@
               // value can depend on the computation if there is no default value
               value = uiDef.getFieldPropertiesWithoutCombo(field, false);
             } else {
-              value = uiDef.getFieldProperties(field, false);
+              if (isNotActiveOrVisible(field, visibleProperties)) {
+                value = uiDef.getFieldPropertiesFirstRecord(field, false);
+              } else {
+                value = uiDef.getFieldProperties(field, false);
+              }
             }
           }
         } else if (mode.equals("EDIT")
@@ -616,7 +620,11 @@
             // value can depend on the computation if there is no default value
             uiDef.getFieldPropertiesWithoutCombo(field, true);
           } else {
-            value = uiDef.getFieldProperties(field, true);
+            if (isNotActiveOrVisible(field, visibleProperties)) {
+              value = uiDef.getFieldPropertiesFirstRecord(field, true);
+            } else {
+              value = uiDef.getFieldProperties(field, true);
+            }
           }
         } else if (mode.equals("CHANGE") || mode.equals("SETSESSION")) {
           // On CHANGE and SETSESSION mode, the values are read from the request
diff --git a/modules/org.openbravo.client.kernel/src/org/openbravo/client/kernel/reference/FKComboUIDefinition.java b/modules/org.openbravo.client.kernel/src/org/openbravo/client/kernel/reference/FKComboUIDefinition.java
--- a/modules/org.openbravo.client.kernel/src/org/openbravo/client/kernel/reference/FKComboUIDefinition.java
+++ b/modules/org.openbravo.client.kernel/src/org/openbravo/client/kernel/reference/FKComboUIDefinition.java
@@ -104,6 +104,17 @@
     }
   }
 
+  public String getFieldPropertiesFirstRecord(Field field, boolean getValueFromSession) {
+    JSONObject value;
+    try {
+      value = new JSONObject(super.getFieldProperties(field, getValueFromSession));
+      return getValueInComboReference(field, getValueFromSession, value.getString("classicValue"),
+          true);
+    } catch (JSONException e) {
+      throw new OBException("Error while computing combo data", e);
+    }
+  }
+
   @Override
   public String getFieldPropertiesWithoutCombo(Field field, boolean getValueFromSession) {
     return super.getFieldProperties(field, getValueFromSession);
diff --git a/modules/org.openbravo.client.kernel/src/org/openbravo/client/kernel/reference/UIDefinition.java b/modules/org.openbravo.client.kernel/src/org/openbravo/client/kernel/reference/UIDefinition.java
--- a/modules/org.openbravo.client.kernel/src/org/openbravo/client/kernel/reference/UIDefinition.java
+++ b/modules/org.openbravo.client.kernel/src/org/openbravo/client/kernel/reference/UIDefinition.java
@@ -252,6 +252,10 @@
     return getFieldProperties(field, getValueFromSession);
   }
 
+  public String getFieldPropertiesFirstRecord(Field field, boolean getValueFromSession) {
+    return getFieldProperties(field, getValueFromSession);
+  }
+
   /**
    * Returns alignment in grid view. In case it returns null, default alignment for actual data type
    * is used.
@@ -665,6 +669,11 @@
 
   protected String getValueInComboReference(Field field, boolean getValueFromSession,
       String columnValue) {
+    return getValueInComboReference(field, getValueFromSession, columnValue, false);
+  }
+
+  protected String getValueInComboReference(Field field, boolean getValueFromSession,
+      String columnValue, boolean onlyFirstRecord) {
     try {
       RequestContext rq = RequestContext.get();
       VariablesSecureApp vars = rq.getVariablesSecureApp();
@@ -702,6 +711,9 @@
       Map<String, String> parameters = comboTableData.fillSQLParametersIntoMap(
           new DalConnectionProvider(false), vars, tabData, field.getTab().getWindow().getId(),
           (getValueFromSession && !comboreload) ? columnValue : "");
+      if (onlyFirstRecord) {
+        parameters.put("#ONLY_ONE_RECORD#", "true");
+      }
       FieldProvider[] fps = comboTableData.select(new DalConnectionProvider(false), parameters,
           getValueFromSession && !comboreload);
       ArrayList<FieldProvider> values = new ArrayList<FieldProvider>();
diff --git a/src/org/openbravo/erpCommon/utility/ComboTableData.java b/src/org/openbravo/erpCommon/utility/ComboTableData.java
--- a/src/org/openbravo/erpCommon/utility/ComboTableData.java
+++ b/src/org/openbravo/erpCommon/utility/ComboTableData.java
@@ -1062,10 +1062,14 @@
               vector.addElement(sqlReturnObject);
               idFound = true;
             }
-          } else
+          } else {
             vector.addElement(sqlReturnObject);
+          }
         } else
           vector.addElement(sqlReturnObject);
+        if (lparameters != null && lparameters.containsKey("#ONLY_ONE_RECORD#")) {
+          break;
+        }
       }
       result.close();
 
@@ -1080,6 +1084,9 @@
         UtilSql.setValue(st, ++iParameter, 12, null, actual);
         result = st.executeQuery();
         while (result.next()) {
+          if (lparameters != null && lparameters.containsKey("#ONLY_ONE_RECORD#")) {
+            vector.clear();
+          }
           SQLReturnObject sqlReturnObject = new SQLReturnObject();
           sqlReturnObject.setData("ID", UtilSql.getValue(result, "ID"));
           String strName = UtilSql.getValue(result, "NAME");
@@ -1088,6 +1095,9 @@
           sqlReturnObject.setData("NAME", strName);
           vector.addElement(sqlReturnObject);
           idFound = true;
+          if (lparameters != null && lparameters.containsKey("#ONLY_ONE_RECORD#")) {
+            break;
+          }
         }
         result.close();
         if (!idFound) {
