从消息记录中查询附件

时间:2015-10-23 21:53:19

标签: netsuite suitescript

通过UI,我创建了几个附加到支持故障单记录的消息记录,其中两个记录具有文件附件。我已经能够检索票证,以及它在Suitescript中的相关消息 - 这些消息正确地报告了附件,因为' T' - 但我似乎无法访问附件本身。文档说明附件是一个名为' mediaitem'的子列表。 (或者' mediaitemlist',具体取决于您所查看的位置),但没有一个子列表API在这些名称上取得任何成功。

change

文档和其他在线信息非常稀少,因此非常感谢任何帮助。

3 个答案:

答案 0 :(得分:5)

是的,确实文档很差。而mediaitem子列表并没有帮助我提供任何有意义的结果。

然而,还有另一种解决方案。

  

在消息记录类型的UI上创建已保存的搜索。

     

确保添加搜索列附件:内部ID(即   使用附件字段...)

一旦完成,请在suitecript中按

运行
var res = nlapiSearchRecord('message', 'YOUR_UI_SEARCH_ID', ARRAY_OF_ADDITIONAL_FITLTERS);
res[i].getValue('internalid', 'attachments')

答案 1 :(得分:0)

您可以在 Suitescript 2.0 中执行此操作。首先搜索消息ID然后搜索与这些消息ID相关的附件。您可以即时创建搜索,因此无需保存搜索。

如果您希望根据您的方案保存治理点,则可以传递一组内部ID案例或消息。

注意:以下代码示例假定您已将搜索模块加载为SEARCHMODULE。

步骤1 - 这是如何从支持案例记录中获取带附件的消息ID(只需将类型更改为支持票证):

function getMessageIdsFromCase(supportCaseId){
    var supportcaseSearchObj = SEARCHMODULE.create({
       type: "supportcase", //Change if you  need to
       filters: [
          ["internalid","anyof",supportCaseId], 
          "AND", 
          ["messages.hasattachment","is","T"]
       ],
       columns: [
          SEARCHMODULE.createColumn({
             name: "internalid",
             join: "messages"
          })
       ]
    });

    var resultsSet = supportcaseSearchObj.run();
    var results = resultsSet.getRange(0, 999);

    var messages = [];
    for (var i in results) {
        var result = results[i];
        var message = result.getValue(result.columns[0]);
        messages.push(message);
    }
    return messages;
}

然后你只需要调用这个函数:

getMessageIdsFromCase(caseInternalId); //Returns an array of message ids

步骤2 - 然后使用带有此功能的消息内部ID搜索附件:

function getAttachmentIdsFromMessage(messageInternalId){
    var messageSearchObj = SEARCHMODULE.create({
       type: "message",
       filters: [
          ["internalid","anyof",messageInternalId]
       ],
       columns: [
          SEARCHMODULE.createColumn({
             name: "internalid",
             join: "attachments"
          })
       ]
    });
    var resultsSet = messageSearchObj.run();
    var results = resultsSet.getRange(0, 999);

    var attachments = [];
    for (var i in results) {
        var result = results[i];
        var attachment = result.getValue(result.columns[0]);
        attachments.push(attachment);
    }

    return attachments;
}

然后你只需要调用这个函数:

getAttachmentIdsFromMessage(messageInternalId); //Returns an array of attachment ids

答案 2 :(得分:-1)

更新:

提交案件后从NS听到。出现这种情况尚不支持:

  

Hi Shane,

     

我希望你今天做得很好。

     

经过检查,SuiteScript尚不支持访问附加到记录的文件的功能。您可以在SuiteAnswers ID 10511上查看SuiteScript记录浏览器,以获取SuiteScripts中所有可用记录的完整列表以及每个可访问的子列表。如果您还有其他问题,请与我们联系。

     

Caleb Francisco |客户支持   NetSuite:业务走向

将search.createColumn与连接一起使用是它的样子。我最终使用下面的快速代码来获取附加到$ transaction(returnauthorization)的任何$文件(html),这在我的情况下,应该是返回auth上的mediaitems,我无法通过ss2中的记录模块获取0.0

var getHtmlFilesOnReturnAuth = function (return_auth_id, file_type) {
    var filters = [
        search.createFilter({name: "internalid", operator: "is", values: [return_auth_id]}),
        search.createFilter({name: "filetype", join: "file", operator: "is", values: [file_type]}),
    ];
    var images = [];
    search.create({
        type: "returnauthorization",
        filters: filters,
        columns: [
            search.createColumn({name: "internalid", summary: "group"}),
            search.createColumn({name: "internalid", join: "file", summary: "group"}),
            search.createColumn({name: "filetype", join: "file", summary: "group"}),
            search.createColumn({name: "name", join: "file", summary: "group"}),
        ]
    }).run().each(function (result) {
        if (result) {
            images.push({
                id: result.getValue({name: "internalid", join: "file", summary: "group"}),
                file_name: result.getValue({name: "name", join: "file", summary: "group"}),
                file_type: result.getValue({name: "filetype", join: "file", summary: "group"}),
            });
        }
        return true;
    });

    return images;
};

var images = getHtmlFilesOnReturnAuth("2134404", "HTMLDOC");