
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-26-2020 03:03 PM
I have modified the IM Create/Edit widget by adding a field called "Opened For" that allows selection from the Sys_User table. The problem is that the value is not writing to the idea table. Using an alert, I've determined that the value is "Undefined" so therefore cannot write to table. I don't know how to query the Sys_User table for the field to get the value.
I am Extremely new to widget development and am really struggling
Here are the changes made to the widget:
HTML added field:
<! -- Added Requested for Sys User Unit Selection -->
<label for="u_opened_for"
class="field-label"
title="{{data.label_hover_opened_for}}"
aria-label="{{::data.formModel._fields.u_opened_for.label}} "
tooltip-right="true"
{{::data.formModel._fields.u_opened_for.label}}
</label>
<sn-record-picker field="u_opened_for"
table="'sys_user'"
display-field="'name'"
value-field="'sys_id'"
search-fields="'name'"
page-size="100" >
Server Script - added label only
//hover over
data.label_hover_opened_for = "Are you submitting this for another associate or yourself";
data.messages.formLabels = {
'title': gs.getMessage('Title'),
'category': gs.getMessage('Category'),
'description': gs.getMessage('Description'),
'u_epic': gs.getMessage('Idea Details'),
'u_collaborators': gs.getMessage('Collaborators'),
'u_business_unit': gs.getMessage('Benefiting business line'),
'u_opened_for': gs.getMessage('Opened for')
Client Controller
$scope.data.formModel = {
_fields: {
// Add Opened for field
u_opened_for: {
label: $scope.data.messages.formLabels.u_opened_for,
name: $scope.data.messages.formLabels.u_opened_for,
stagedValue: ($scope.data.ideaInfo && $scope.data.ideaInfo.u_opened_for) || '',
value: '',
displayValue: '',
type: 'reference',
mandatory: true,
mandatory_filled: function () {
return !!($scope.data.formModel._fields.u_opened_for.stagedValue);
},
isMandatory: function () {
return true;
}
},
var _getRequestParams = function (formFields, widgetMode) {
var requestParams = {};
requestParams.sysparm_sys_id = $scope.data._attachmentTableSysId;
requestParams.sysparm_u_opened_for = formFields.u_opened_for.stagedValue//does not work
}
I have updated the script includes/scripted rest api for idea to send the info from sys_parm_u_opened_for to table but because this value is undefined, it cannot write it.
Here is what form looks like:
Solved! Go to Solution.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-30-2020 01:27 PM - edited 11-14-2023 02:23 PM
UPDATE: 11/14/23 - This code was working and it no longer works. We are on Utah version. I'm not sure at what point this quit working but I'm trying to figure out a new solution
Thanks this did help. It wasn't quite the right answer but close.
Make the following changes to the client script:
Add
$scope.u_opened_for = { displayValue: $scope.data.u_opened_for.name, value: $scope.data.u_opened_for.sys_id, name: 'u_opened_for' };
Add
$scope.$on("field.change", function(evt, parms) { if (parms.field.name == 'u_opened_for'){ c.data.setu_opened_for = parms.newValue; }});
Don't change anything on this part of the client script section
// Add Opened for field u_opened_for: { label: $scope.data.messages.formLabels.u_opened_for, name: $scope.data.messages.formLabels.u_opened_for, stagedValue: ($scope.data.ideaInfo && $scope.data.ideaInfo.u_opened_for) || '', value: '', displayValue: '', type: 'reference', mandatory: true, mandatory_filled: function () { return !!($scope.data.formModel._fields.u_opened_for.value); }, isMandatory: function () { return true; }, },
change
requestParams.sysparm_u_business_unit = formFields.u_opened_for.stagedValue;
to
requestParams.sysparm_u_opened_for = $scope.u_opened_for.value;
Add the following to the server script
data.u_opened_for = {
'name': '',
'sys_id':''
};
And voila it works!

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-03-2021 11:01 AM
We are not currently using the edit functionality

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-08-2021 08:30 AM
I have not tried to get it working as we don't allow edits.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-27-2024 08:30 AM - edited 02-27-2024 08:31 AM
As noted in the accepted solution, you are no longer able to add custom fields. I would recommend creating a record producer to generate ideas and removing the Idea form from the Idea Portal.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-13-2021 09:46 AM
Do you mind sharing that part of information as well.
I was able to have the value sent through the api , but I think the api isn't doing it's work.
Thank you

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
10-13-2021 12:57 PM
Script includes is called IMCreateEditIdeaDataService:
var IMCreateEditIdeaDataService = Class.create();
IMCreateEditIdeaDataService.prototype = Object.extendsObject(IMCreateEditIdeaDataServiceSNC, {
createIdea: function(ideaInfo) {
//gs.log('ideaInfo: ' + JSON.stringify(ideaInfo), 'IdeaPortal');
var newIdeaSysId;
var ideaGr = new GlideRecord(this.ideaTableName);
ideaGr.initialize();
ideaGr.setNewGuidValue(ideaInfo.sysId); //Setting sys_id here so that to fetch related attachments
ideaGr.module = ideaInfo.module;
ideaGr.short_description = ideaInfo.title;
ideaGr.idea_description = ideaInfo.description;
//added fields
ideaGr.u_epic = ideaInfo.u_epic;
ideaGr.u_collaborators = ideaInfo.u_collaborators;
ideaGr.u_opened_for = ideaInfo.u_opened_for;
ideaGr.u_business_unit = ideaInfo.u_business_unit;
//end add
if(ideaGr.canCreate()) {
newIdeaSysId = ideaGr.insert();
//this.updateIdeaReferencesWithCategories(ideaInfo.categoryInfo,newIdeaSysId);
this.createM2MReferencesForIdeaAndCategories(ideaInfo.categoryInfo,newIdeaSysId);
this.updateEditorAttachments(ideaInfo.editorImages, newIdeaSysId);
}
return {
'sys_id': newIdeaSysId
};
},
});
You have to copy the IMCreateEditIdeaDataServiceSNC and make the edits there