Instead of using simple field-level permissions, we can create a client script that dynamically shows or hides fields based on a user’s role.
define(['N/runtime', 'N/ui/message'], function(runtime, message) {
function fieldChanged(scriptContext) {
let currentUser = runtime.getCurrentUser();
if (currentUser.role !== 3) { // 3 = Administrator Role ID
scriptContext.currentRecord.getField({ fieldId: 'custbody_hidden_field' }).isDisplay = false;
}
}
return { fieldChanged: fieldChanged };
});