A very quick article as I couldn't find anything on the WWW to document this error.
Why?
During a data migration, I was using a custom function to copy all the data from one app to another. The specific form was for "Leads" which contained a subform with a product line item list. If I run this code, I would get the error:
Expecting ZC_SUBFORM_250 expression found COLLECTION expression
- Expecting ZC_SUBFORM_250 expression found COLLECTION expression
LIST value cannot be assigned to 'mySubform' -- or -- COLLECTION value cannot be assigned to 'mySubform'
- LIST value cannot be assigned to 'mySubform'
- -- or --
- COLLECTION value cannot be assigned to 'mySubform'
expecting ZC_SUBFORM_70 expression found COLLECTION expression
- expecting ZC_SUBFORM_70 expression found COLLECTION expression
How?
Quite simply the error is because the Creator Deluge syntax I was using to insert subform rows was wrong. Contrary to what the documentation that says "This task can be used in the following events", effective as of today October 19, 2020, I have not found a place you cannot use this deluge script. The ZC_SUBFORM_250 error is because I am trying to assign the collection or list to the subform when I need to use "INSERT" method twice and not the equals sign: once to add the row to the collection, and the second time to add the collection to the subform.
Syntax for inserting a row into a subform:
// declare a variable to hold the collection of rows <variable> = Collection(); // declaring the row <row1> = <mainForm_linkName>.<subForm_linkName>(); // assigning values for various subform fields in the row <row1>.<field_linkName> = <value>; <row1>.<field_linkName> = <value>; // insert the row into the collection <variable>.insert( <row1> ); // insert the collection into the subform on the current form input.<subForm_linkName>.insert( <variable> ); // or insert the row(s) into the subform through the record variable r_LeadDetails = Leads[ID == 1234567890]; r_LeadDetails.<subForm_linkName>.insert( <variable> );
- // declare a variable to hold the collection of rows
- <variable> = Collection();
- // declaring the row
- <row1> = <mainForm_linkName>.<subForm_linkName>();
- // assigning values for various subform fields in the row
- <row1>.<field_linkName> = <value>;
- <row1>.<field_linkName> = <value>;
- // insert the row into the collection
- <variable>.insert( <row1> );
- // insert the collection into the subform on the current form
- input.<subForm_linkName>.insert( <variable> );
- // or insert the row(s) into the subform through the record variable
- r_LeadDetails = Leads[ID == 1234567890];
- r_LeadDetails.<subForm_linkName>.insert( <variable> );
Events I have used this task which contradicts documentation:
- In a custom function
- In an Action item in Report
- In a schedule workflow
Source(s):