After investigating the changes done to allow for more than 1 field to be specified for each column of the record table were looking as follows (in the update method of the RecordTable.js, starting from line 670):
var field = this._datasetRow.getFieldObject(column.attributes['display-field']);
var field2 = this._datasetRow.getFieldObject(column.attributes['field2']);
var field3 = this._datasetRow.getFieldObject(column.attributes['field3']);
var text = field.getValue();
var text2 = field2.getValue();
var text3 = field3.getValue();
Since the column specification on the screen (code snippet in the question) does not set any value to field3 attribute the part
var field3 = this._datasetRow.getFieldObject(column.attributes['field3']);
was failing and throwing an error. Method getFieldObject always expects the value to be passed, even though it should probably be smart enough to cater for null/undefined values as well.
To solve the problem the code was refactored as follows:
var field = this._datasetRow.getFieldObject(column.attributes['display-field']);
var text = field.getValue();
if (column.attributes['field2'] != null) {
var field2 = this._datasetRow.getFieldObject(column.attributes['field2']);
var text2 = field2.getValue();
}
if (column.attributes['field3'] != null) {
var field3 = this._datasetRow.getFieldObject(column.attributes['field3']);
var text3 = field3.getValue();
}
After that the custom part of the widget code simply needs to cater for possible undefined values of text2 and text3 attributes.