我的公司运行几种不同类型的项目,并希望根据所选项目记录中正在运行的项目类型,以不同方式查看项目记录。
我有选择要使用的表单的字段,标题为"自定义表单" (这是一个选择字段)和我们的员工输入项目类型的字段" custentityjt_fie_pro_projecttype" (也是选择字段)。
我在加载用户事件脚本之前创建了以下内容以尝试实现此目的:
/**
* @NApiVersion 2.x
* @NScriptType UserEventScript
* @NModuleScope SameAccount
*/
define(["N/record"], function(r) {
function beforeLoad(context) {
var currentRecord = context.newRecord;
var projectType = currentRecord.getValue({
fieldId: "custentityjt_fie_pro_projecttype",
});
currentRecord.setValue({
fieldID: 'customform',
value: projectType
})
}
return {
beforeLoad: beforeLoad,
}
})
在编辑模式下加载项目记录时,自定义表单选择不会更改,在视图模式下加载项目记录时,我会得到以下结果:
{"type":"error.SuiteScriptError","name":"UNEXPECTED_ERROR","message":null,"stack":["anonymous(N/recordService)","beforeLoad(/SuiteScripts/setForm.js:13)"],"cause":{"type":"internal error","code":"UNEXPECTED_ERROR","details":null,"userEvent":"beforeload","stackTrace":["anonymous(N/recordService)","beforeLoad(/SuiteScripts/setForm.js:13)"],"notifyOff":false},"id":"","notifyOff":false}
我对Netsuite和编程很新,所以请温柔一点:)
答案 0 :(得分:1)
您需要使用客户端脚本才能更改自定义表单。最好的办法是在两个地方进行,即pageInit()和fieldChanged()。另一个潜在的问题是尝试将自定义表单值设置为在字段custentityjt_fie_pro_projecttype的getValue中检索的值。从示例中的currentRecord.getValue()返回的值将是在那里设置的Project Type的自定义列表值的内部id(返回到自定义列表,您将看到列出的内部id值)。这是一个问题,因为在设置自定义表单字段的值时,您需要引用要使用的自定义表单的内部标识。如果引用的项目类型的内部ID与自定义表单内部标识匹配,那将是非常值得注意的。我的建议是在代码中创建一个哈希表来存储引用(假设你的项目类型列表没有经常更改)。尝试一下(只需确保更新查找变量中的值,因为它们已经组成。
/**
*@NApiVersion 2.x
*@NScriptType ClientScript
*/
define([
'N/record'
],
function (
nsRecord
) {
//
// lookup table where the object property represents the internal IDs of the
// custom list values, and the value of each property represents the
// internal id's of the Custom Forms you wish to associate with each list value.
//
var lookup = {
1: 122,
2: 123,
3: 125,
4: 136
};
function fieldChanged(context) {
var field = context.fieldId;
var rec = context.currentRecord;
var projId;
if (field === 'custentityjt_fie_pro_projecttype' && rec.getValue('custentityjt_fie_pro_projecttype')) {
projId = rec.getValue('custentityjt_fie_pro_projecttype');
if (lookup[projId]) {
rec.setValue({
fieldId: 'customform',
value: lookup[projId],
ignoreFieldChange: true,
fireSlavingSync: true
});
}
}
}
function pageInit(context) {
var rec = context.currentRecord;
var mode = context.mode;
var projId;
var formId;
if (mode !== 'create') {
formId = rec.getValue('customform');
projId = rec.getValue('custentityjt_fie_pro_projecttype');
if (lookup[projId] && lookup[projId] !== formId) {
rec.setValue({
fieldId: 'customform',
value: lookup[projId],
ignoreFieldChange: true,
fireSlavingSync: true
});
}
}
}
return {
fieldChanged: fieldChanged,
pageInit: pageInit
};
});