TypeError: Cannot call method "getField" of null User Event

TypeError: Cannot call method "getField" of null User Event

我在刚刚发布到生产环境的脚本中收到错误消息(在沙盒测试中未收到错误消息)

错误:类型错误:无法调用空用户事件的方法“getField”

-这很奇怪,因为据我所知,它不会导致我的解决方案出现问题(它完全按照预期的方式工作。)

代码如下:

/**
 * @NApiVersion 2.x
 * @NScriptType UserEventScript
 */
define(['N/record', 'N/ui/serverWidget', 'N/url', 'N/runtime', 'N/search'],

function(record, serverWidget, url, runtime, search) {
    function beforeLoad(context){
        var form = context.form;
        var sublist = form.getSublist({
            id : 'item'
        });

        var recObj = context.newRecord
        var recId = recObj.id;
        var currUser = runtime.getCurrentUser();
        var numLines = recObj.getLineCount({sublistId: 'item'});
        var sessionScope = runtime.getCurrentSession().get({  ////remove after debug
            name: 'scope'
        });
        log.debug('Tansaction: ' + recObj.getValue({fieldId: 'tranid'}))
        log.debug('runtime.executionContext: ' + runtime.executionContext)///remove after debug
        var isConnectedField = sublist.getField({id: 'custcol_isconnected'});//this is line 25
        var connectedPoField = sublist.getField({id: 'custcol_connected_po'});

这是日志:

调试 | runtime.executionContext:用户界面

系统 | org.mozilla.javascript.EcmaError: TypeError: 无法调用 null 的方法“getField” (/SuiteScripts/rei_userEvent_so.js#25) JS_EXCEPTION

如果能深入了解为什么会发生这种情况,我们将不胜感激。

我们需要更多地了解您针对哪些交易类型部署了此交易,但您提到了多种交易类型。简单的答案是并非所有交易都有 items 子列表。

例如vendorbill 和 deposit 都没有项目子列表

你可以这样短路:

var sublist = form.getSublist({
  id : 'item'
});

if(!sublist) return; // not one of the transactions of interest

可能还有一些事件类型的子列表不可用。您的代码没有显示类型过滤。您可以在引用表单之前尝试类似的操作。当我不对类型进行过滤时,我遇到了一些奇怪的 UserEvent 问题:

if (context.type != ctx.UserEventType.VIEW && context.type != ctx.UserEventType.EDIT && context.type != ctx.UserEventType.CREATE) return;