用于在NetSuite SS2.0中设置窗体上的字段的自定义按钮

用于在NetSuite SS2.0中设置窗体上的字段的自定义按钮,netsuite,suitescript,suitescript2.0,Netsuite,Suitescript,Suitescript2.0,我在NetSuite中有一个自定义按钮,我想知道是否有任何方法可以使用该按钮在表单上设置字段。基本上,我将有一个批准按钮,将锁定编辑,我想知道我是否可以通过按钮和javascript来做到这一点。据我所知,我无法访问脚本的上下文,因为我从用户事件脚本开始,然后转到客户端。我可能也错过了一些非常愚蠢的东西,但我对NetSuite还是相当陌生的。下面是我的用户事件脚本中的内容 function beforeLoad(context) { var form = context.for

我在NetSuite中有一个自定义按钮,我想知道是否有任何方法可以使用该按钮在表单上设置字段。基本上,我将有一个批准按钮,将锁定编辑,我想知道我是否可以通过按钮和javascript来做到这一点。据我所知,我无法访问脚本的上下文,因为我从用户事件脚本开始,然后转到客户端。我可能也错过了一些非常愚蠢的东西,但我对NetSuite还是相当陌生的。下面是我的用户事件脚本中的内容

function beforeLoad(context) {

        var form = context.form;
        form.clientScriptModulePath = './_kk_fc_cs_sd.js';

        form.addButton({
            id           : 'custpage_china_approve_btn', 
            label        : 'Approve - China', 
            functionName : 'chinaApproveFinalQuote'
        });
        form.addButton({
            id           : 'custpage_dallas_approve_btn', 
            label        : 'Approve - Dallas', 
            functionName : 'dallasApproveFinalQuote'
        })
}
对于我的客户端脚本,我有

function chinaApproveFinalQuote()
    {
        alert(record.id);
        var firstCost = context.currentRecord;

        firstCost.setValue('custrecord_kk_sd_fc_master_carton_cb', true);
    }

它几乎不知道上下文是什么。我尝试在用户事件脚本中传递它,也尝试使用record.id,但这两种方法都不起作用。有什么想法吗,或者我必须用另一种方式来实现吗?

尽管你可以这样做(看看客户端脚本和用户脚本之间的关系,这是一个工作流往往擅长的领域)


工作流具有锁定除特定用户外的记录的方法;为特定用户显示“批准/拒绝”按钮;在批准时设置字段等。

尽管您可以这样做(查看客户机脚本和用户脚本之间的关系,这是一个工作流擅长的领域)


工作流具有锁定除特定用户外的记录的方法;显示特定用户的批准/拒绝按钮;在批准时设置字段等。

您遇到的问题是,您需要在客户端脚本中使用currentRecord来设置/获取值。这里要注意的另一件事是,如果您只是引用g通过NetSuite文件夹位置(未实际部署到记录)删除客户端脚本,您仍然需要包含pageInit入口点函数(但它可以为空)。只是另一个SuiteScript 2.0警告

/**
 *@NApiVersion 2.x
 *@NScriptType ClientScript
 */
define(
    [
        'N/currentRecord'
    ],

    function (
        nsCurRec
    ) {

        function chinaApproveFinalQuote() {
            var btn;
            var rec = nsCurRec.get();

            alert(rec.id);
            btn = rec.getField('custpage_china_approve_btn');
            btn.isDisabled = true;
            rec.setValue({
                fieldId: 'custrecord_kk_sd_fc_master_carton_cb',
                value: true
            });
        }

        function pageInit(context) {

        }

        return {
            pageInit: pageInit,
            chinaApproveFinalQuote: chinaApproveFinalQuote
        };
    }
);

您遇到的问题是,为了设置/获取值,需要在客户端脚本中使用currentRecord。这里需要注意的另一件事是,如果您仅通过NetSuite文件夹位置(未实际部署到记录)引用客户端脚本,则仍然需要包含pageInit入口点函数(它可能是空的)。只是另一个SuiteScript2.0警告

/**
 *@NApiVersion 2.x
 *@NScriptType ClientScript
 */
define(
    [
        'N/currentRecord'
    ],

    function (
        nsCurRec
    ) {

        function chinaApproveFinalQuote() {
            var btn;
            var rec = nsCurRec.get();

            alert(rec.id);
            btn = rec.getField('custpage_china_approve_btn');
            btn.isDisabled = true;
            rec.setValue({
                fieldId: 'custrecord_kk_sd_fc_master_carton_cb',
                value: true
            });
        }

        function pageInit(context) {

        }

        return {
            pageInit: pageInit,
            chinaApproveFinalQuote: chinaApproveFinalQuote
        };
    }
);

谢谢!是的,我想我可能必须使用工作流。我会看看,但我也很感激其他选项!谢谢!是的,我想我可能必须使用工作流。我会看看,但我也很感激其他选项!