Custom Item Fields as XML Definitions
You can create XML definitions for custom item fields as SDF custom objects using SuiteCloud Development Framework (SDF). You can either create an itemcustomfield
object in a SuiteCloud project or import a custom item field from a NetSuite account into a SuiteCloud project. For information about creating a custom item field in a NetSuite account, see the following:
Add custom item fields to your item records to gather information specific to your business needs.
After an itemcustomfield
object is deployed to an account, a custom item field is created. The field appears on the item records that you applied the object to. You can create custom item records in a NetSuite account or in your SuiteCloud IDE. For more information about creating custom item records, see Creating Item Records.
Setting Values on the itemcustomfield SDF Custom Object
Provide a readable script ID attribute by using the underscore followed by a meaningful name for the SDF custom object. NetSuite automatically adds a custitem
prefix that indicates the type of field, for example, custitem_mynewfield
.
The following fields are required for itemcustomfield
objects:
-
label
- Specifies the label for the custom field. Thelabel
is the text that your users see as the name of the custom field when it is displayed on the record. -
fieldtype
- Specifies the type of custom field. For more information about the possible values offieldtype
, see generic_customfield_fieldtype. -
selectrecordtype (conditional)
- Specifies the list or record that contains the items for the custom field. This field is required only when thefieldtype
value is equal toSELECT
orMULTISELECT
.
The following XML definition example is a basic itemcustomfield
object with the required fields:
<itemcustomfield scriptid="custitem_mynewfield">
...
<fieldtype>SELECT</fieldtype>
<label>SAMPLE ITEMCUSTOMFIELD</label>
<selectrecordtype>-112</selectrecordtype>
...
</itemcustomfield>
For more information about possible fields for itemcustomfield
objects, see itemcustomfield.
If you include any SDF custom objects, files, or scripts in your fields, you must define the dependencies for them in your SuiteCloud project's manifest. For more information, see SDF Custom Object Dependencies in SuiteApps.
To index a custom field to be included in global search, set the globalsearch
field value to T
. The globalsearch
field can equal to T
only if the following field conditions are met:
-
storevalue
equals toT
-
fieldtype
equals to one of the following:-
CURRENCY
-
FLOAT
-
EMAIL
-
TEXT
-
HELP
-
URL
-
INLINEHTML
-
INTEGER
-
PERCENT
-
PHONE
-
TEXTAREA
-
You cannot index a custom field for global search if any of your searchlevel
field values equal to 0
.
Embedding Structured Fields Within an itemcustomfield SDF Custom Object
You can create custom filters for your custom field by embedding customfieldfilter
structured fields within the itemcustomfield
SDF custom object. You can also customize the default access that a role has to the custom field by embedding roleaccess
structured fields within the object.
For more information about the possible fields to define for these structured fields, see the following:
To view a full XML definition example for an itemcustomfield
object, see Example of an itemcustomfield SDF Custom Object.
Custom Field Filters
You can add custom field filters to a list/record or multiple select custom field to filter the choices available in that custom field on records and transactions. In SDF, you can use custom field filters by embedding customfieldfilter
structured fields within a custom field object.
Filtering can apply only when the fieldtype
value of your custom field object is equal to SELECT
or MULTISELECT
. It does not apply to custom lists, meaning if you include customfieldfilter
structured fields, your selectrecordtype
value cannot equal a custom list scriptid.
customfieldfilters
is the parent element and customfieldfilter
is the child element. You can include multiple customfieldfilter
child elements within the parent.
The fldfilter
subfield specifies a standard field on the list/record that you entered for the selectrecordtype
field. The fldfilter
subfield is required. For more information about the supported fields and values for customfieldfilter
structured fields, see customfieldfilter.
When an object with a customfieldfilter
structured field is deployed to a target account, the Sourcing & Filtering subtab of the custom field record is populated with the field values specified by the structured field. The choices available to users in a record or transaction for that custom field are tailored by the filter settings from the structured field.
Here is an example of a custom item field configuration page in NetSuite with filters set for the field:
If you change the field type or the list/record for a field that is used for sourcing or filtering on other custom fields, all sourcing and filtering based on the field is removed.
Additionally, you can define custom field filters in NetSuite. For more information, see Setting Filtering Criteria.
Example of a customfieldfilter Structured Field
The following XML definition example is a customfieldfilter
structured field embedded within an itemcustomfield
object whose fieldtype equals SELECT
. After this object is deployed to the target account, a custom item field labelled SAMPLE ITEMCUSTOMFIELD
appears on the Main tab of all Inventory item records. The fldfiltercomparetype equals LIKE
and fildfilterval equals paid
. Therefore, the field’s dropdown list is filtered to display only accounts that contain “paid” in the account name.
<itemcustomfield scriptid="custitem_sample_itemcust">
<appliestoinventory>T</appliestoinventory>
<fieldtype>SELECT</fieldtype>
<label>SAMPLE ITEMCUSTOMFIELD</label>
<selectrecordtype>-112</selectrecordtype>
...
<customfieldfilters>
<customfieldfilter>
<fldcomparefield></fldcomparefield>
<fldfilter>STDRECORDACCOUNTACCTNAME</fldfilter>
<fldfilterchecked></fldfilterchecked>
<fldfiltercomparetype>LIKE</fldfiltercomparetype>
<fldfilternotnull>F</fldfilternotnull>
<fldfilternull>F</fldfilternull>
<fldfiltersel></fldfiltersel>
<fldfilterval>paid>
</customfieldfilter>
</customfieldfilters>
...
</itemcustomfield>
Role Accesses
In SDF, you can control how roles access the information in custom fields by embedding roleaccess
structured fields within a custom field object. The accesses that you specify determines how the custom field can be accessed on the record or through search results and reports. This helps you to maintain the security of your business information.
roleaccesses
is the parent element and roleaccess
is the child element. You can include multiple roleaccess
child elements within the parent.
After an object with a roleaccess
structured field is deployed to a NetSuite account, the Role section under the Access subtab of the custom field record is populated with the access level values of the fields specified by the structured field.
Here is an example of a custom item field configuration page in NetSuite with access levels set for a role:
The following subfields are required for roleaccess
structured fields:
-
role
- Specifies the role. -
accesslevel
- Specifies the access level granted to the role for the custom field object.Possible access level values:
-
0 - None
-
1 - View
-
2 - Edit
-
-
searchlevel
- Specifies the access level granted to the role for the custom field object through search results and reports.Possible access level values:
-
0 - None
-
1 - Run
-
2 - Edit
-
For more information about the supported fields and values for roleaccess
, see roleaccess.
Additionally, you can define role accesses to custom fields from a NetSuite account. For more information, see Restricting Access to Custom Fields.
Example of a roleaccess Structured Field
The following XML definition example is a roleaccess
structured field embedded within a itemcustomfield
object. In this example, the accesslevel
for the Accountant role equals 1
and the searchlevel
equals 1
. Therefore, the role’s access to the field is set to View and the access level through searching and reporting is set to Run.
<itemcustomfield scriptid="custitem_sample_itemcust">
<appliestoinventory>T</appliestoinventory>
<fieldtype>SELECT</fieldtype>
<label>SAMPLE ITEMCUSTOMFIELD</label>
<selectrecordtype>-112</selectrecordtype>
...
<roleaccesses>
<roleaccess>
<accesslevel>1</accesslevel>
<role>ACCOUNTANT</role>
<searchlevel>1</searchlevel>
</roleaccess>
</roleaccesses>
...
</itemcustomfield>
Example of an itemcustomfield SDF Custom Object
The following XML definition example is for an itemcustomfield
SDF custom object. After this SDF custom object is deployed to the target account, a custom item field labelled SAMPLE ITEMCUSTOMFIELD
appears on the Main tab of all item records that the object is applied to. In this example, the object applies to inventory item records. The fieldtype
equals SELECT
. Therefore, a value for selectrecordtype
is required.
<itemcustomfield scriptid="custitem_sample_itemcust">
<accesslevel>2</accesslevel>
<appliestogroup>F</appliestogroup>
<appliestoinventory>T</appliestoinventory>
<appliestokit>F</appliestokit>
<appliestononinventory>F</appliestononinventory>
<appliestoothercharge>F</appliestoothercharge>
<appliestopricelist>F</appliestopricelist>
<appliestoservice>F</appliestoservice>
<appliestospecificitems>F</appliestospecificitems>
<appliestosubplan>F</appliestosubplan>
<applyformatting>F</applyformatting>
<checkspelling>F</checkspelling>
<defaultchecked>F</defaultchecked>
<defaultselection></defaultselection>
<defaultvalue></defaultvalue>
<description>Sample description for field.</description>
<displayheight></displayheight>
<displaytype>NORMAL</displaytype>
<displaywidth></displaywidth>
<dynamicdefault></dynamicdefault>
<encryptatrest>F</encryptatrest>
<fieldtype>SELECT</fieldtype>
<globalsearch>F</globalsearch>
<help>Enter a brief explanation of the kind of information you want entered in this field.</help>
<includechilditems>F</includechilditems>
<isformula>F</isformula>
<ismandatory>F</ismandatory>
<isparent>F</isparent>
<itemmatrix>F</itemmatrix>
<itemsubtype>BOTH</itemsubtype>
<label>SAMPLE ITEMCUSTOMFIELD</label>
<linktext></linktext>
<maxlength></maxlength>
<maxvalue></maxvalue>
<minvalue></minvalue>
<onparentdelete>NO_ACTION</onparentdelete>
<parentsubtab></parentsubtab>
<searchcomparefield></searchcomparefield>
<searchdefault></searchdefault>
<searchlevel>2</searchlevel>
<selectrecordtype>-112</selectrecordtype>
<showhierarchy>T</showhierarchy>
<showinlist>F</showinlist>
<sourcefilterby></sourcefilterby>
<sourcefrom></sourcefrom>
<sourcelist></sourcelist>
<storevalue>T</storevalue>
<subtab>ITEMMAIN</subtab>
<customfieldfilters>
<customfieldfilter>
<fldcomparefield></fldcomparefield>
<fldfilter>STDRECORDACCOUNTACCTNAME</fldfilter>
<fldfilterchecked></fldfilterchecked>
<fldfiltercomparetype>LIKE</fldfiltercomparetype>
<fldfilternotnull>F</fldfilternotnull>
<fldfilternull>F</fldfilternull>
<fldfiltersel></fldfiltersel>
<fldfilterval>paid>
</customfieldfilter>
</customfieldfilters>
<roleaccesses>
<roleaccess>
<accesslevel>1</accesslevel>
<role>ACCOUNTANT</role>
<searchlevel>1</searchlevel>
</roleaccess>
</roleaccesses>
</itemcustomfield>
Related Topics
- Lists, Records, and Fields
- Custom Lists as XML Definitions
- Custom Other Record Fields as XML Definitions
- Custom CRM Fields as XML Definitions
- Custom Entity Fields as XML Definitions
- Custom Item Number Fields as XML Definitions
- Custom Transaction Body Fields as XML Definitions
- Custom Transaction Line Fields as XML Definitions
- Custom Transaction Item Option Fields as XML Definitions
- Custom Record Types as XML Definitions
- Custom Segments as XML Definitions
- Custom Transaction Record Types as XML Definitions