我是一名缺乏经验的技术开发人员,使用SuiteScript 1.0开发我的第一个SuiteScript。我收到SSS_MISSING_REQD_ARGUMENT
错误,但我确信我的代码中还有更多错误。该脚本的目的是在联合记录中填充费用记录行项目的部门字段。最终用户将在费用行上选择一个项目,脚本应在项目记录(自定义字段)中查找部门,并将值添加到本地部门字段。代码复制如下。
function ProjectSegment ()
{
var record = nlapiLoadRecord(nlapiGetRecordType(), nlapiGetRecordId());
var recordID = nlapiGetRecordId(record);
//internal ID of project record
var project = nlapiGetField ('custcol_nra_expense_project');
//load project record
var precord = nlapiLoadRecord('job', project);
//get department on project record (internal ID)
var pdepartment = precord.GetFieldValue('custentity_nra_dept_project');
//get project name from project record
var projectName = precord.GetFieldText('entityid');
//load existing search
var search = nlapiLoadSearch('job','customsearch161');
//add filter to include project name
search.addFilter(new nlobjSearchFilter('entityid',null,'is',projectName));
//run search
var resultSet = search.runSearch();
//get department line
var departmentResult = new nlobjSearchColumn('custentity_nra_dept_project');
//set value
nlapiSetFieldTexts('job','department',1,departmentResult)
//record.commitLineItem('department');
nlapiSubmitRecord(record, true);
}
//项目记录的内部ID var project = nlapiGetFieldValue('custcol_nra_expense_project');
Praveen Kumar的回答对于缺少必要的论证是正确的,但是你已经猜测了脚本还有许多其他问题。
附注:
你需要这样的东西:
var result = resultSet.getResults(0, 1);
if (result) {
var department = result.getValue('custentity_nra_dept_project');
// etc.
}
尽管如此,根据您的描述,我认为您无论如何都不需要搜索。一旦你有了pdepartment(再次使用precord.getFieldValue),我认为你需要的是:
record.setFieldValue('department', pdepartment);
或者,如果您要设置行级部门,则会有所不同。
这是什么样的剧本?我想提出更多建议,但这取决于发生了什么。