2016-06-29 15 views
1

Gibt es eine Möglichkeit, ein Array oder eine Liste bestimmter Inventarartikel in NetSuite mit einem Anruf abzurufen? Ich kann keine Dokumentation diesbezüglich finden. Ich habe den Trainingskurs von SuiteTalk durchlaufen und er enthält keine Informationen zum Abrufen einer Liste von Elementen ohne die interne ID.Liste der Inventarartikel von NetSuite abrufen

Auf Seite 73 von this document gibt es eine Funktion getInventoryItemList(itemKeysArray), die mit einem Array von Inventarartikel-IDs aufgerufen wird. Diese Funktion existiert jedoch nirgendwo und ich gehe davon aus, dass es sich um eine benutzerdefinierte Funktion handelt, aber sie zeigt niemals den Code dafür.

Die einzigen zwei Möglichkeiten, die ich dabei sehen könnte, wäre, jedes einzelne Inventarelement aus NetSuite zu ziehen und die internen IDs in unsere lokale Datenbank zu importieren, das scheint mir eine Menge zusätzlicher Arbeit zu sein. Eine weitere Option, die ich in Betracht gezogen habe, besteht darin, ein Array der Werbebuchungen zu durchlaufen und ein ItemSearchBasic für jedes Element auszuführen und die interne ID auf diese Weise zu erhalten. Dies scheint eine schlechtere Idee zu sein, als sie nur in der lokalen Datenbank zu speichern. Ich hoffe, dass jemand mich bestätigen und mir zeigen kann, wenn es einen viel einfacheren Weg gibt, zu tun, was ich brauche.

Antwort

1

Hier ist eine Version von dem, was ich verwende, wenn ich die Liste der Elemente (minus firmenspezifische Daten) bekommen muss. Ich habe gerade unsere Daten entfernt und sie auf build/return gesetzt. Dies ist in SuiteScript 2.0, nur FYI.

require(['N/search','N/record'],function(search,record){ 
    function buildItemArray(){ 
    var itemArray=[]; 
    searchItems(); 
    itemArray=runSearch(itemArray); 
    deleteSearch(); 
    log.debug(itemArray); 
    } 

    function searchItems(context){ 
    var itemSearch=search.create({ 
     type:search.Type.INVENTORY_ITEM, 
     title:'Inventory_Item_Search', 
     id:'customsearch_inventory_item_search', 
     columns:['internalid','itemid'], 
     filters:['isinactive','is','F'] 
    }); 
    itemSearch.save(); 
    } 

    function runSearch(itemArray){ 
    var mySearch=search.load({id:'customsearch_inventory_item_search'}); 
    mySearch.run().each(function(result){ 
     var item={}; 
     item.itemID=result.getValue({name:'itemid'}); 
     item.internalID=result.getValue({name:'internalid'}); 
     itemArray.push(item); 
     return true; 
    }); 
    return itemArray; 
    } 

    function deleteSearch(){ 
    search.delete({id:'customsearch_inventory_item_search'}); 
    } 

    buildItemArray(); 
}); 
1

Es gibt eine Reihe von Möglichkeiten, dies zu tun, aber die Idee, die Artikel-IDs aus den Werbebuchungen zu sammeln, ist diejenige, die ich normalerweise verwende.

Sie können GetList dann verwenden, um Details zu jedem Element abzurufen.

+0

Haben Sie ein Beispiel für einige der anderen Möglichkeiten? Ich werde wahrscheinlich nur die IDs in der lokalen Datenbank speichern, aber ich bin neugierig auf die anderen Methoden, die Sie erwähnt haben. – Yamaha32088

+0

Wenn Sie über Werbebuchungen geschrieben haben, ging ich davon aus, dass Sie einen Transaktionsdatensatz hatten. Zum Beispiel hat ein Kundenauftrag eine SalesOrderItemList, die SalesOrderItems enthält. Sie können durch diese gehen und den Artikel refs extrahieren. Dies gibt Ihnen eine Liste bestimmter Artikel. Sie können die GetList-Methode verwenden, um alle Details dieser Elemente in einem Aufruf abzurufen. Wie würde das Speichern der IDs Ihnen helfen? Vielleicht habe ich deinen Anwendungsfall nicht verstanden. – bknights

+0

Ich versuche eine neue SalesOrder zu erstellen. Ich brauche die internen IDs, um den SalesOrder-Werbebuchungen Inventarelemente hinzuzufügen, damit sie eingefügt werden können. Hoffnung, die Sinn macht. – Yamaha32088