获取Netsuite SuiteScript中的实体类型

获取Netsuite SuiteScript中的实体类型,netsuite,suitescript,suitescript2.0,Netsuite,Suitescript,Suitescript2.0,我对NetSuite非常陌生,我不知道这是否有意义。我需要在NetSuite中创建发票时发送rest调用 我发现使用SuiteScript和NLAPIRestURL方法是可以实现的 define(['N/record'], function(record) { function afterSubmit(context) { var url = 'myURLHere'; var payload = 'myBodyHere';

我对NetSuite非常陌生,我不知道这是否有意义。我需要在NetSuite中创建发票时发送rest调用

我发现使用SuiteScript和NLAPIRestURL方法是可以实现的

define(['N/record'],
function(record)
{
        function afterSubmit(context) 
        {
        var url = 'myURLHere';
        var payload = 'myBodyHere';      
        var response = nlapiRequestURL(url, payload);
        }

        return {                             
           afterSubmit: afterSubmit
        };
 }
这对我来说像是个触发器。但它何时被调用?如何指定仅在插入发票记录时运行此操作


提前谢谢

您的代码是针对SuiteScript2.0的,NLAPIRestURL是针对SuiteScript1.0的。 你可以在下面试试

function afterSubmit(scriptContext) {
    var type = scriptContext.type;
    if(type == 'create'){ //Only when a new record is created in system
        var myUrl = 'http://www.google.com';
        var payload = 'myBodyHere';
        var response = http.get({ url: myUrl }); //Try exploring more methods here
    }
    log.debug({title: 'response ', details: response });
}

我使用脚本SuiteScript1.0执行此操作,该脚本如下所示:

function notifySubmit() {
    // build request url, headers, and post data...
    ...
    // when I'm sending the submit notification to my API, I want to know
    // what record is being submitted and who is submitting, so some of the
    // data I'll add to by postData object is:
    var recordType = nlapiGetRecordType();
    var internalId = nlapiGetRecordId();
    var requestUser = nlapiGetUser();
    ...

    // send the request
    return nlapiRequestURL(url, JSON.stringify(postData), headers);
}
我上传的文件中有这个函数。然后,我在Customization>Scripting>Scripts>new中创建了一个新的脚本记录,并附加到该文件,其中包含一种类型的用户事件

在该脚本记录上,Netsuite具有表单字段,用于指定加载前、提交前和提交后要调用的函数。由于我只有一个函数,并且我希望在提交记录后调用该函数,因此我将after Submit函数字段的值设置为notifySubmit

脚本通过脚本部署附加到记录类型。保存脚本记录后,点击部署脚本。这将带您进入脚本部署的新页面,在“应用于”字段中选择“发票”。您可能还需要设置部署的状态、日志记录级别和访问群体

脚本到脚本部署的关系是一对多。因此,如果以后您决定在创建销售订单和采购订单时发送通知,您仍然只有一个脚本记录,但该单个脚本记录将有3个脚本部署—一个用于发票,一个用于销售订单,一个用于采购订单


SuiteAnswer 29246更详细地解释了整个脚本创建和部署过程。

如何执行此操作取决于脚本何时运行。因为您有一个名为afterSubmit的方法,所以这看起来像一个用户事件脚本——如果是,请将此脚本设置为在创建发票时运行。您可以通过创建一个新脚本来实现这一点:自定义->脚本->脚本->新脚本

选择您创建的脚本文件并创建脚本记录。选择用户事件作为脚本类型。部署此脚本时,将部署应用于发票记录并创建事件

我的脚本应用于采购订单,只需将其应用于发票。请参见下面的屏幕截图:

感谢您的回复!我要试试这个。。但是,我们如何指定仅在创建发票而不是销售订单时才执行此操作?这是通过配置实现的吗?对不起,如果我说不通的话!实际上,我知道了如何将其部署到应用于的实体。但现在我得到的“http”是未定义的错误。我在谷歌上搜索了一下,了解到我需要在“N/record”中加上“N/http”。但错误依然存在。有什么想法吗?我得到“http”没有定义错误->您需要将https模块作为依赖项导入。定义['N/record','N/https'],functionrecord,https注意,我指定了https而不是http,https模块必须用于https调用。@playalpha有效!!非常感谢!我导入了模块,但没有将其作为参数添加到函数中。@NetSuiteGuru之前我正在执行此操作->定义['N/record','N/https',functionrecord。。现在我把它改为定义['N/record','N/https'],functionrecord,httpsThanks,这对部署部分来说非常有用!这是有道理的。然而,我更喜欢用2.0来实现这一点。我当前收到的“http”未定义错误。我在谷歌上搜索了一下,了解到我需要在“N/record”中加上“N/http”。但错误依然存在。有什么想法吗?