2017-02-25 43 views
1

我想知道如何基于“记录类型”(例如,记录类型)在创建项目时预先设置“定制表格”。库存项目,系列化的存货项目,不少编号存货项目等Netsuite根据记录类型动态设置条目表格

我有尝试:

  • nlapiSetFieldValue( 'customform''2')/record.setFieldValeu()在 “beforeLoad” 用户事件--->但不起作用
  • 检查记录类型并在“页面初始化”页面中重新设置“自定义表格”客户端脚本--->系统将首先加载首选表单,然后重新加载。但更改“自定义窗体”将触发再次调用“页面初始化”。需要用条件打破死循环。但是性能很差,因为我需要预先设置很多字段,并且至少需要加载两次表单。

所以我想知道是否有一种方法可以根据不同的项目记录类型预先设置表单?

非常感谢!

回答

1

这是测试,并在我的SDN帐户工作:

function beforeLoad() { 
    var formByType = { 
     "serializedinventoryitem": "33" 
    }; 

    var recordType = nlapiGetRecordType(); 
    var currentForm = nlapiGetFieldValue("customform"); 
    var desiredForm = formByType[recordType]; 

    if (desiredForm && (currentForm != desiredForm)) { 
     nlapiSetRedirectURL("RECORD", nlapiGetRecordType(), nlapiGetRecordId(), true, {"cf":desiredForm}); 
    } 
} 

只需填写的钥匙是记录类型和值是每种类型应该映射到形式formByType对象。

如果您从formByType中删除特定类型,则不会尝试重定向,并使用首选表单。

请注意,您需要多次部署此用户事件脚本,每个需要重定向的各种项目类型都需要一个脚本。

+0

非常感谢。这效果很好!请使用“nlapiSetRedirectURL”更改表单而不是“setFieldValue('customform','XX')”。并且在加载之前执行用户事件,而不是客户端脚本的页面初始化。 –