Revisiting the issue I found that I had overlooked another error in the code that I thought I had fixed. Zero is a valid index value. So it should rather be:
... if (table.getColumnIndex("Value") >= 0 && ... ...
Also for plugin developers this is a trap that is too easy to fall in. Because of that I would propose to discourage the usage of getcolumnIndex() to check if a column exists and instead add a dedicated method to the API: boolean MTable.columnExists(int) boolean MTable.columnExists(String) wdyt?
The CreateWindowFromTable process generates buggy SQL in the Tab>Order By field when the Value column is a virtual column.
Steps to reproduce:
login to test.idempiere.org as SuperUser
open window table and column for table m_movementline
start process 'Create Window Tab & Field'
in the field Orderby this generates the SQL: 'M_MovementLine.Value'
Opening the new window produces an error because the virtual Value column is only present in the dictionary but not in the db-table.
Fix has already been prepared and tested locally. A pull request has been added.