This article is relevant if you need to get access to NetSuite’s standard form definitions.
Background
NetSuite offers a powerful form definition framework using point-and-click. While you can modify forms on the fly with SuiteScript programming, most times, it is much easier to enhance the layout of forms using the point-and-click capacity.
When using a NetSuite form, NetSuite generally provides a dropdown to select a different (custom) form definition. One possibility is to hide the custom form dropdown field which will prevent users from easily changing forms. You may find, especially as an administrator, that you need to get to the built-in standard form or another one when accessing a form that offers no easy way to change to a different form view.
Note, I wrote a similar article in 2013 that is still relevant today. See Solving NetSuite Form Customization “Unexpected Error” Issues which can challenge a NetSuite Administrator while producing form customization.
How to Load NetSuite’s Standard Custom Forms via URL
To bypass NetSuite’s form loading, you can do so by specifying the ‘cf’ parameter on the URL with the correct integer. First, find the form definition you want to load via URL. For transaction forms, go to “Customization, Forms, Transaction Forms” and then review the list. Find the internal ID of the target form.
Then, modify the URL that is loading the form. For example, here is how NetSuite is accessing the vendor bills page natively (in read mode).
https://899889.app.netsuite.com/app/accounting/transactions/vendbill.nl?id=145261&whence=
Simply add the “&cf=xx” parameter where “xx” is the internal ID of the desired form such as in the following URL:
https://899889.app.netsuite.com/app/accounting/transactions/vendbill.nl?id=145261&whence=&cf=50
Fortunately, all of NetSuite’s native forms use internal IDs that are static and available under this method. Note, NetSuite should still respect any permissions that may restrict a user from accessing the form under this method.
Subscribe to Articles
If you found this article relevant, feel free to sign up for notifications to new articles as I post them.
Hi Marty,
Thanks a lot for your insightful blogs. It has been a great help. I wanted to know if there is a way to get the internal id of a custom form through suiteql or suitescript modules. Or, if we can get the list of all the custom forms present in a Netsuite instance. Please help us.
Hello Prashant,
We don’t believe there is an easy way to get all the custom form IDs. But Boban, a senior on our team, offered the following pseudo code which effectively get the data out of the custom form dropdown:
for (let x in record.Type) {
let REC = record.create({type: record.Type[x], isDynamic: true});
let F = REC.getField(“customform”);
let formList = F.getSelectOptions();
formList.forEach(function (f) {
// f.value is the internal id
// f.text is the name of the form
});
}
Hi Marty,
Thanks for your help. Need one more help. We have a requirement to get the fields for VendorBill record as per the custom form selected using suitescript. So, to do so, we are creating a vendor bill record using recordModule.create() in dynamic mode and passing the custom form id. When we look at the fields in the newly created record, all of them have “isDisplay” property set to true. Even if we go and update the display checkbox in customize transaction forms page to unchecked, still the isDisplay property for all the fields is set to true. Please help.
Hello Prashant,
The nature of your request is off topic from the blog post. Can you send me a note here so we can talk about it privately?
https://www.prolecto.com/contact-us/
Marty
Hello Marty,
Do you know of a way of getting the scriptid of the form without having to load the custform record? It doesn’t seem to be possible, but maybe I’m missing something.
Hello Elton,
Have you tried the search.lookupFields and select ‘scriptid’ as the field? Notice the field is available when you employ &xml=t on the URL?
Marty