繁体   English   中英

Chrome异常中的调试脚本Netsuite suitescript

[英]Debugging script Netsuite suitescript in Chrome exception

因此,我试图在netsuite的“销售订单”表单中添加一个按钮,该按钮可根据您在先前字段中输入的内容来验证某些字段。 我在netsuite的谷歌浏览器中测试和调试此程序时遇到问题。 首先,这是我的代码:我在客户端脚本记录中添加了调用此函数的按钮。

   function vsoeValidate(){

    var calc = nlapiGetFieldValue('custbody_cv_vsoe_calculation');

    calc = nlapiGetFieldValue('custbody_cv_renewal_rev_amount') - (nlapiGetFieldValue('custbody_cv_vsoe_cola') * nlapiGetFieldValue(1-'custbody_cv_vsoe_partner_disc')) - (nlapiGetFieldValue('custbody_cv_vsoe_bts_fees') * (1-nlapiGetFieldValue('custbody_cv_vsoe_partner_disc'))) /  
           (nlapiGetFieldValue('custbody_cv_vsoe_software_amt') * (1- nlapiGetFieldValue('custbody_cv_vsoe_multiyear_disc')));

    nlapiSetFieldValue('custbody_cv_vsoe_calculation', calc);

    var display = nlapiGetFieldValue('custbody_cv_vsoe_calculation_disp');
    var bucket = nlapiGetFieldValue('custbody_cv_vsoe_bucket');

    if(bucket === 'X'){
        return false;
    }        
    if(calc > (nlapiGetFieldValue('custbody_cv_vsoe_bucket.custrecord_cv_vsoe_maintenance_rate') *1.15) || calc < ('custbody_cv_vsoe_bucket.custrecord_cv_vsoe_maintenance_rate'*0.85)){
        display = '<div style="; background-color:red; color:white;font-weight:bold;text-align:center">Out of bounds</div>';
        return true;
    } 
    else{ 
        display = '<div style="; background-color:green; color:white;font-weight:bold;text-align:center">In bounds</div>';
        return true; 
    }

}

当我单击按钮时,出现错误TypeError undefined不是函数。

我真的不确定从这里去哪里,是因为vsoeValidate内部的逻辑不正确,还是我使用了错误的函数类型? 任何帮助将是巨大的谢谢!

更新:这是我的脚本记录的屏幕截图!

在此处输入图片说明

在此处输入图片说明

尝试将函数名称作为字符串传递,即

form.addButton('custpage_validatevsoe', 'Validate VSOE', 'vsoeValidate');

您提到过将vsoeValidate设置为validateField函数。 您是否希望在用户单击按钮时或在NetSuite的valdiateField事件被触发时(在字段更改时,存储值之前)运行此函数?

如果要在NetSuite的validateField事件上运行此函数,则该函数必须返回truefalse 它不能返回void。 现在,按照您的逻辑,您有:

if (bucket = 'x') {
    return;
}

if (bucket = 'x')是分配操作,而不是相等性检查。 该赋值操作将返回“ x”,这是一个真实值,因此您的代码将输入该if块。 然后,您返回void( undefined ),所以我的猜测是NetSuite试图对函数返回的结果进行处理,但不能,因为它返回的是undefined。

validateField函数还传递了一个参数,该参数提供了要验证的字段的ID。

您还将需要在各个点注入一些控制台日志,以便您可以找出脚本失败的地方,而不仅仅是尝试猜测语法。

您能否为我们提供脚本记录设置的屏幕截图?

同样,由于您使用的是客户端脚本,因此不需要使用pageInit事件添加自定义按钮。

在NetSuite中创建脚本记录时,在“脚本”选项卡下有一个“按钮”子选项卡。 该子标签位于“库”子标签旁边。

这里有两列,“标签”和“功能”。

因此,在您的情况下,您只需在“标签”字段中输入“ Validate VSOE”,在“功能”字段中输入vsoeValidate。

请注意,如果以这种方式进行操作,则仅在创建或编辑记录时才会显示该按钮。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM