The problem with the Array index out of bounds should be fixed in 6.1.2, see this case: SVY-2955.
The problem with the “DUMMY” form seems to be related to a change in the way tabs are handled. This case is created for that SVY-3163.
As a workaround for that last problem, you can replace the method loadTabsOnPanel of the form svy_nav_fr_template_base with this one:
function loadTabsOnPanel(_panelNr, _selectedTab, _layoutObj) {
globals.svy_nav_panel_nr = _panelNr;
var _tabFS = _to_nav_layout.nav_layout_to_nav_tab$panel;
var _panelProps, _programName, _programFormObj, _tempFormName, _tabFormName;
/** @type {String} */
var _formName;
var _panelFormName = "ly_" + _to_nav_layout.name + "_p" + _panelNr;
var _jsPanelForm = solutionModel.getForm(_panelFormName);
var _jsTabpanel = _jsPanelForm.getTabPanel("tab");
if(!databaseManager.hasRecords(_tabFS))
{
application.output('Trying to start layout without tabs. This is not possible. Please open the configurator and create tabs for this layout: '+ _to_nav_layout.name ,LOGGINGLEVEL.DEBUG)
return
}
var _showTabs = true;
if (_tabFS.getSize() == 1 && _panelNr == 1) {
_showTabs = setTabPanelOrientation(_jsTabpanel,_panelNr)
}
if (_showTabs && forms[_panelFormName].hasCustomTabs()) {
createCustomTabs(_jsPanelForm, _tabFS, _panelNr);
_jsTabpanel.tabOrientation = SM_DEFAULTS.NONE;
}
//set Title
setTitle(_jsPanelForm, _tabFS);
forms[_panelFormName].controller.recreateUI();
for (var i = 1; i <= _tabFS.getSize(); i++) {
_tabFS.setSelectedIndex(i);
_panelProps = getPanelProperties(_panelNr);
_programName = _tabFS.nav_tab_to_nav_program.program_name;
if (globals.nav.program[_programName]) {
/** @type {{ view:Number,
* foundset:JSFoundset,
* divider_height:Number,
* base_form_name:String,
* path:Array,
* filter:Array,
* form:Array,
* toolbar_main:String,
* toolbar_tab:String,
* empty_foundset:Boolean,
* table_name:String}}*/
var _progObj = globals.nav.program[_programName]
_programFormObj = _progObj.form;
_formName = _programFormObj[_tabFS.form_type][2];
//set selected view entered in the layout object
if(_layoutObj && _layoutObj.panels && _layoutObj.panels[_panelNr-1] && _layoutObj.panels[_panelNr-1].view != undefined)
{
_formName = _programFormObj[_layoutObj.panels[_panelNr-1].view][2];
}
var _toolbar;
if (_panelNr == 1) {
_toolbar = _progObj.toolbar_main
if (!_toolbar) {
_toolbar = globals.svy_nav_getProperty('program_toolbar_main')[0]
}
} else {
_toolbar = _progObj.toolbar_tab
if (!_toolbar) {
_toolbar = globals.svy_nav_getProperty('program_toolbar_tab')[0]
}
}
//TODO: this if is commented out because of a bug in 6.1.2, it should be enabled again when this case is fixed: https://support.servoy.com/browse/SVY-3163
// if (i == _selectedTab) {
var _dataSource;
if (databaseManager.hasRecords(_tabFS.nav_tab$to_parent)) {
_dataSource = "db:/" + globals.nav.program[_tabFS.nav_tab$to_parent.nav_tab_to_nav_program.program_name].server_name + "/" + globals.nav.program[_tabFS.nav_tab$to_parent.nav_tab_to_nav_program.program_name].table_name;
}
_tabFormName = generateTabForm(_to_nav_layout.name, _tabFS.nav_tab_to_nav_program.program_name, _tabFS.orientation_toolbar, _tabFS.tab_relation, _tabFS.edit_on_tab, _formName, _toolbar, _panelNr, i, _dataSource, _tabFS.tab_id, _tabFS.parent_tab_id, _tabFS.form_type);
_tempFormName =_tabFormName
// } else {
// _tabFormName = _formName;
// _tempFormName = "svy_nav_fr_dummy";
// }
setTabOnPanel(_panelNr, _panelProps, _tabFormName, _tempFormName, _tabFS.getSelectedRecord(), _to_nav_layout.name, _toolbar, i, _dataSource, _tabFS.form_type);
}
}
}