ANS-0264 · DéVELOPPEMENT SUITESCRIPT

Comment faire en sorte que la fonction nlapiSetLineItemValue déclenche des événements de modification de champ dans NetSuite ?

Découvrez comment déclencher correctement les événements de modification de champ sur les lignes des sous-listes dans NetSuite à l'aide de scripts côté client afin de garantir une exécution correcte des scripts.

Solution courte

Pour vous assurer que les événements de modification de champ se déclenchent lors de la définition par programmation des valeurs des lignes de sous-liste dans NetSuite, utilisez nlapiSelectLineItem pour sélectionner la ligne spécifique, puis nlapiSetCurrentLineItemValue. Il est essentiel de définir le paramètre fireFieldChange de nlapiSetCurrentLineItemValue sur « true ». Cette séquence simule correctement l’interaction de l’utilisateur.

Scénario

Les développeurs NetSuite sont souvent confrontés à des situations où la méthode `nlapiSetLineItemValue` ne déclenche pas les événements de modification de champ attendus sur les lignes des sous-listes. Ce comportement peut empêcher les scriptsde s’exécuter comme prévu, en particulier lorsque la logique dépendante s’appuie sur ces événements pour mettre à jour d’autres champs ou effectuer des validations. Ce problème survient car la méthode `nlapiSetLineItemValue` définit directement la valeur sans simuler d’interaction utilisateur.

Solution

Pour vous assurer que les événements de modification de champ sont correctement déclenchés lors de la définition par programmation de valeurs sur les lignes de sous-liste dans NetSuite, utilisez une séquence spécifique de fonctions de l’API NetSuite.

  1. Commencez par sélectionner la ligne de sous-liste souhaitée à l’aide de la fonction nlapiSelectLineItem. Cette fonction fait de la ligne spécifiée la ligne active, ce qui permet d’effectuer les opérations suivantes.

  2. Ensuite, définissez la valeur du champ de la ligne actuellement sélectionnée à l’aide de la fonction nlapiSetCurrentLineItemValue. Il est essentiel de définir le paramètre fireFieldChange sur « true » lors de cet appel de fonction.

javascriptnlapiSelectLineItem('sublistid', linenumber);nlapiSetCurrentLineItemValue('sublistid', 'fieldid', 'newvalue', true);

Cette approche simule la modification manuelle d’un champ par un utilisateur, garantissant ainsi l’exécution de tous les scripts client associés conçus pour se déclencher lors de modifications de champ. Ce comportement diffère de celui de la fonction nlapiSetLineItemValue, qui contourne le déclenchement d’événements.

Support expert NetSuite

Besoin d’aide pour cet enjeu NetSuite ?

Accompagnement-conseil et configuration pour Développement SuiteScript

Parler à un consultant