2015-10-23 24 views
7

通過UI,我創建了幾個附加到支持票據記錄的消息記錄,其中兩個具有文件附件。我已經能夠檢索票據及其相關的消息在套件 - 這是正確報告hasAttachment爲'T' - 但我似乎無法訪問附件本身。該文檔指出,附件是一個名爲「mediaitem」(或「mediaitemlist」,取決於您看到的位置)的子列表,但沒有一個子列表API在這些名稱上取得任何成功。從郵件記錄查詢附件

var record = nlapiLoadRecord('message', 1092823, {recordmode: 'dynamic'}); 
    var itemCount = record.getLineItemCount('mediaitem'); 
    // returns -1 

文檔和其他在線信息相當稀少,所以任何幫助將不勝感激。

回答

5

是的,確實有一個很差的文檔。而mediaitem子列表也沒有幫助我給出任何有意義的結果。

但是,有一個替代解決方案。

從消息記錄類型的UI創建保存的搜索。

請務必添加一個搜索欄附件:內部ID(即 使用附件字段...)

一次,做到這一點,運行在suitescript搜索作爲

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

是的,這個工作 - 這似乎很瘋狂,這是唯一的方法來做到這一點,但它確實有效,所以謝謝! –

+0

然而,同樣的事情,創建一個保存的搜索不是答案,因爲我們有些人有API訪問,但不是UI訪問(第三方機構)。我今天提交一張關於mediaitem出票-1(這是未知字段的默認值) – Coldstar

-1

這是你如何做到這一點Suitescript 2.0。首先搜索消息標識,然後搜索與這些消息標識相關的附件。您可以即時創建搜索,因此無需保存搜索。

如果要根據您的方案保存治理點,則可以傳遞案例或消息的內部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 
-1

UPDATE:

從NS聽到提交案例後。這似乎不支持尚未:

嗨巴蒂爾,

我希望你今天做得很好。

檢查後,SuiteScript中尚不支持訪問附加到記錄的文件的能力。您可以在SuiteAnswers ID 10511處查看SuiteScript Records Browser,查看SuiteScripts中所有可用記錄的完整列表以及每個可訪問的子列表。如果您還有其他問題,請告訴我。

Caleb Francisco |客戶支持 NetSuite:哪裏業務要去

使用search.createColumn與連接是它的樣子。我最終使用下面的快速代碼來獲取任何附加到$ transaction(returnauthorization)的$文件(html),在我的情況下,它應該是一個返回auth上的mediaitems,我無法通過ss2中的記錄模塊.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");