2015-10-23 5 views
7

Tramite l'interfaccia utente, ho creato diversi record di messaggi allegati a un record di ticket di supporto, due dei quali con allegati. Sono stato in grado di recuperare il ticket e i relativi messaggi in Suitescript - che segnalano correttamente hasAttachment come 'T' - ma non riesco a visualizzare gli allegati stessi. La documentazione afferma che gli allegati sono un sottolista chiamato "mediaitem" (o "mediaitemlist", a seconda di dove si guarda), ma nessuna delle API di sottolista ha alcun successo su questi nomi.Query allegato da un record Messaggio

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

La documentazione e altre informazioni online sono piuttosto scarse, quindi qualsiasi aiuto sarebbe molto apprezzato.

risposta

5

Sì, in effetti c'è una documentazione scarsa. E la sublimazione di mediazione non mi ha aiutato né a dare alcun risultato significativo.

Tuttavia, esiste una soluzione alternativa.

Creare una ricerca salvata dall'interfaccia utente sul tipo di record del messaggio.

Assicurati di aggiungere una colonna di ricerca Attrezzatura: ID interno (cioè utilizzando i campi di fissaggio ...)

Una volta, questo è fatto, eseguire la ricerca in suitescript come

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

Sì, questo ha funzionato - sembra strano che questo sia l'unico modo per farlo, ma funziona, quindi grazie! –

+0

La stessa cosa, tuttavia, la creazione di una ricerca salvata non è la risposta poiché alcuni di noi hanno accesso API ma non accesso all'interfaccia utente (agenzia di terze parti). Sto presentando un ticket oggi su mediaitem in arrivo -1 (che è il valore predefinito per il campo sconosciuto) – Coldstar

-1

Ecco come puoi farlo in Suitescript 2.0. Prima cerca gli id ​​dei messaggi e poi cerca gli allegati relativi a quei messaggi. È possibile creare le ricerche al volo, quindi non è necessario per le ricerche salvate.

È possibile passare una matrice di ID interni di casi o messaggi se si desidera salvare i punti di governance in base al proprio scenario.

Nota: i seguenti esempi di codice presuppongono che sia stato caricato il modulo di ricerca come SEARCHMODULE.


Fase 1 - Questo è come ottenere gli ID dei messaggi con allegati da un record di caso di supporto (basta cambiare il tipo di supportare biglietto):

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; 
} 

Poi basta chiamare la funzione come questo:

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

Fase 2 - Poi si cerca gli allegati utilizzando il messaggio interno id con questa funzione:

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; 
} 

Poi basta chiamare la funzione in questo modo:

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

UPDATE:

sentito da NS dopo la presentazione di un caso.Appare questo non è ancora supportato:

Hi Shane,

Spero che si sta facendo bene oggi.

Dopo aver controllato, la possibilità di accedere ai file allegati ai record non è ancora supportata in SuiteScript. Puoi controllare SuiteScript Records Browser all'indirizzo SuiteAnswers ID 10511 per l'elenco completo di tutti i record disponibili in SuiteScripts e ciascuna sottolista accessibile. Fammi sapere se hai altre domande.

Caleb Francisco | Assistenza Clienti NetSuite: Dove business sta

Utilizzando search.createColumn con unisce è la chiave che sembra. Ho finito per usare un codice veloce sotto questo per ottenere qualsiasi file $ (html) collegato a $ transaction (returnauthorization), che nel mio caso, si supponeva fosse mediaitems su un'autenticazione di ritorno che non potevo ottenere tramite il modulo record in 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");