diff --git a/org.adempiere.base/src/org/compiere/model/GridField.java b/org.adempiere.base/src/org/compiere/model/GridField.java index 0746b94a10..ddd9a38e42 100644 --- a/org.adempiere.base/src/org/compiere/model/GridField.java +++ b/org.adempiere.base/src/org/compiere/model/GridField.java @@ -1243,23 +1243,34 @@ public class GridField } value = Env.getContext (ctx, m_vo.WindowNo, m_vo.TabNo, variableName, tabOnly, true); } - if (!Util.isEmpty(value) && !Util.isEmpty(foreignColumn) && variableName.endsWith("_ID") - && getGridTab() != null) { - String refValue = ""; + if (!Util.isEmpty(value) && !Util.isEmpty(foreignColumn) && variableName.endsWith("_ID")) { int id = 0; try { id = Integer.parseInt(value); } catch (Exception e){} if (id > 0) { - MColumn column = MColumn.get(ctx, getGridTab().getTableName(), variableName); - if (column != null) { - String foreignTable = column.getReferenceTableName(); - refValue = DB.getSQLValueString(null, - "SELECT " + foreignColumn + " FROM " + foreignTable + " WHERE " - + foreignTable + "_ID = ?", id); + String refValue = ""; + if (getGridTab() != null) { + MColumn column = MColumn.get(ctx, getGridTab().getTableName(), variableName); + if (column != null) { + String foreignTable = column.getReferenceTableName(); + refValue = DB.getSQLValueString(null, + "SELECT " + foreignColumn + " FROM " + foreignTable + " WHERE " + + foreignTable + "_ID = ?", id); + } + return refValue; + } else { + // no GridTab - maybe coming from process parameter, try tableName from columnName + String foreignTable = variableName.substring(0, variableName.length()-3); + MTable table = MTable.get(ctx, foreignTable); + if (table != null) { + refValue = DB.getSQLValueString(null, + "SELECT " + foreignColumn + " FROM " + foreignTable + " WHERE " + + foreignTable + "_ID = ?", id); + return refValue; + } } } - return refValue; } return value; } // get_ValueAsString