Skuid Team,
I’ve just helped a client upgrade to Rockaway and I think we’ve found a problem. In many of our pages we have models set up to support creation of related records (as in creating a new Account when creating a new Opportunity). For these models, we select the option to “Create default row if Model has none”.
In Banzai we had no issues whether we actually added a new related record or not. With Rockaway, we’ve found many of these pages won’t save due to an error ‘Required fields are missing:sfield name]’. It seems that Skuid is trying to save the related record model even though we have not issued a ‘Save’ for that model.
The workaround is to uncheck the option “Create default row if Model has none” and create the row as part of the button that opens the pop up for the related record. While this works, it means tracking down every page where this situation exists.
Here is the error:
Here is a page that demonstrates this error. To replicate the issue, just enter a name, stage and close date for the opportunity and click save.:
<skuidpage unsavedchangeswarning="yes" personalizationmode="server" showsidebar="true" showheader="true" tabtooverride="Opportunity"> <models>
<model id="Opportunity" limit="1" query="false" createrowifnonefound="true" adapter="salesforce" service="salesforce" sobject="Opportunity">
<fields>
<field id="Name"></field>
<field id="AccountId"></field>
<field id="Account.Name"></field>
<field id="Pricebook2Id"></field>
<field id="Pricebook2.Name"></field>
<field id="StageName"></field>
<field id="CloseDate"></field>
</fields>
<conditions></conditions>
<actions></actions>
</model>
<model id="Account" limit="20" query="false" createrowifnonefound="true" adapter="salesforce" service="salesforce" type="" sobject="Account">
<fields>
<field id="Name"></field>
<field id="Phone"></field>
</fields>
<conditions></conditions>
<actions></actions>
</model>
</models>
<components>
<pagetitle model="Opportunity" uniqueid="sk-3LJPQE-78">
<maintitle>
<template>New {{Model.label}}</template>
</maintitle>
<subtitle>
<template>{{Model.labelPlural}}</template>
</subtitle>
<actions>
<action type="multi" label="Add Account" icon="sk-icon-add">
<actions>
<action type="showPopup">
<popup title="New Popup" width="40%">
<components>
<pagetitle model="Account" uniqueid="sk-39WcQH-140">
<maintitle>
<template>{{Name}}</template>
</maintitle>
<subtitle>
<template>{{Model.label}}</template>
</subtitle>
<actions>
<action type="multi" label="Save" icon="sk-icon-save">
<actions>
<action type="blockUI" message="Saving"></action>
<action type="save">
<models>
<model>Account</model>
</models>
</action>
<action type="updateRow" fieldmodel="Opportunity" field="AccountId" enclosevalueinquotes="true" value="{{$Model.Account.data.0.Id}}"></action>
<action type="closeTopmostPopup"></action>
<action type="unblockUI"></action>
</actions>
</action>
<action type="multi" label="Cancel" icon="sk-icon-cancel">
<actions>
<action type="cancel">
<models>
<model>Account</model>
</models>
</action>
<action type="closeTopmostPopup"></action>
</actions>
</action>
</actions>
</pagetitle>
<basicfieldeditor showheader="true" showsavecancel="false" showerrorsinline="true" model="Account" buttonposition="" uniqueid="sk-39Wdzw-143" mode="edit">
<columns>
<column width="100%">
<sections>
<section title="Section A" collapsible="no">
<fields>
<field id="Name"></field>
<field id="Phone"></field>
</fields>
</section>
</sections>
</column>
</columns>
</basicfieldeditor>
</components>
</popup>
</action>
</actions>
</action>
<action type="savecancel" aftercancel="/{{Model.KeyPrefix}}/o" aftersave="/{{Id}}" rollbackonanyerror="true"></action>
</actions>
</pagetitle>
<basicfieldeditor showsavecancel="false" showheader="true" model="Opportunity" mode="edit" uniqueid="sk-3LJPQE-79" buttonposition="">
<columns>
<column width="50%">
<sections>
<section title="Basics" collapsible="no">
<fields>
<field id="Name"></field>
<field id="StageName"></field>
<field id="CloseDate"></field>
</fields>
</section>
</sections>
</column>
<column width="50%">
<sections>
<section title="Additional Info" collapsible="no">
<fields>
<field id="AccountId" valuehalign="" type="" optionsource="">
<filters></filters>
<searchfields></searchfields>
<renderconditions logictype="and" onhidedatabehavior="keep"></renderconditions>
</field>
<field id="Pricebook2Id" valuehalign="" type="" optionsource="">
<searchfields></searchfields>
<filters></filters>
<renderconditions logictype="and" onhidedatabehavior="keep"></renderconditions>
<enableconditions logictype="and">
<condition type="blank" operator="!=" fieldmodel="Opportunity" sourcetype="fieldvalue" field="AccountId" value="null" enclosevalueinquotes="false"></condition>
</enableconditions>
</field>
</fields>
</section>
</sections>
</column>
</columns>
</basicfieldeditor>
</components>
<resources>
<labels></labels>
<css></css>
<javascript></javascript>
</resources>
<styles>
<styleitem type="background" bgtype="none"></styleitem>
</styles>