2017-04-23 40 views
8

Chcę ustawić wartość dla wielokrotnego wyboru z istniejącymi wartościami w tym polu. (tj.) Jeśli Filed ma wartości "A, B" oznacza, że ​​chcę dodać nową wartość "c" z Istniejącymi wartościami Tak, Wynik będzie "A, B, C".Jak ustawić wartość dla pola wielokrotnego wyboru przy użyciu wersji netsuite suitescript 2.0?

użyłem „N/nagrywanie” moduły SubmitFields API, aby ustawić wartość dla Multi-select Polu jak ten

KOD: SuiteScript 2.0 Wersja:

Początkowa Kod:

var strArrayValue = new Array(); 
    strArrayValue [0] = "A"; 
    strArrayValue [1] = "B"; 
    strArrayValue [2] = "C"; 


record.submitFields({ 
     type:'purchaseorder', 
     id:56, 
     values:{ 

     custbody_multiselectfield: strArrayValue 

     }, 
     options: { 
      enableSourcing: false, 
      ignoreMandatoryFields : true 
      } 

}); 

Pokazuje błąd: "Podałeś argument dotyczący nieprawidłowego typu: arg 4"

Updated Kod:

var strArrayValue = new Array(); 
     strArrayValue [0] = "A"; 
     strArrayValue [1] = "B"; 
     strArrayValue [2] = "C"; 

    var PORec = record.load({    // Loading Purchase Order Recod 

       type:"purchaseorder", 
       id:56, 
       isDynamic: true 

       )}; 

     PORec.setValue('custbody_multiselectfield',strArrayValue); // Setting Value (Array List) for Multi-Select Fields 

     PORec.save(); // Saving Loaded Record 

Jest również pokazując błąd: "Nieprawidłowy custbody_multiselectfield'reference klucz 31567,31568"

Ale jeśli dodać wartość jako ciąg znaków, zamiast String Array ustawia tylko pojedynczą wartość (tj.) Przesłaniając poprzednie wartości. Ex: Opcja wielokrotnego wyboru ma tylko wartość "C" zamiast wartości "A, B, C".

Czy ktoś może pomóc w odniesieniu do tego pytania.

Odpowiedz

6

Zgodnie z dokumentacją NetSuite, nie można używać tej metody API do edycji lub przesyłania wybranych pól - tylko pola obsługujące bezpośrednią edycję (patrz SuiteAnswer ID: 45158). Być może trzeba będzie załadować rekord za pomocą record.load(), zmodyfikować wartości, a następnie przesłać za pomocą record.save().

EDYCJA: W odpowiedzi na zaktualizowane pytanie, jedyną rzeczą, która wydaje się tutaj niepoprawna jest to, że próbujesz ustawić wartości według wartości wyświetlanej pola, gdzie funkcja setValue() oczekuje wewnętrznego identyfikatora wartości. Można też zmienić wartości zapełnianych jesteś z odpowiednimi identyfikatorami wewnętrznych, czy można zmienić to na stosowanie metody setText() zamiast:

var strArrayValue = new Array(); 
     strArrayValue [0] = "A"; 
     strArrayValue [1] = "B"; 
     strArrayValue [2] = "C"; 

    var PORec = record.load({    // Loading Purchase Order Recod 

       type:"purchaseorder", 
       id:56, 
       isDynamic: true 

       }); 

     PORec.setText('custbody_multiselectfield',strArrayValue); // Setting Value (Array List) for Multi-Select Fields 

     PORec.save(); // Saving Loaded Record 

Testowałem oba te podejścia i jednocześnie pracować dla mnie.

+0

Dzięki Krypton, próbowałem ustawić wartość dla zbioru wielokrotnego wyboru za pomocą modułu ładującego "N/Record" i używanej metody setValue. i ustaw wartość jako typ tablicy, ale pokazuje błąd "nieprawidłowy custbody_multiselectfield" klucz odsyłający 31567,31568, ale zamiast listy tablic, jeśli użyłem pojedynczej zmiennej łańcuchowej, ustawiając wartość., ale chcę dodać nowe wartości przez dołączenie do istniejącej wartość w polu wielokrotnego wyboru. Czy jest jakikolwiek inny sposób, aby to osiągnąć? –

+0

Czy mogę polecić przesłanie nowego pytania wraz ze zaktualizowanym kodem? – Krypton

+0

To jest odpowiedź, że BTW powinna zostać zaakceptowana, a nagroda przyznana – bknights