ANS-1845 · DéVELOPPEMENT SUITESCRIPT

Comment ajouter par programmation des lignes de commande aux enregistrements NetSuite dans SuiteScript 1.0

Ce guide traite des problèmes courants et présente l’approche recommandée avec SuiteScript 1.0 pour insérer de manière dynamique de nouvelles lignes dans les sous-listes des enregistrements NetSuite.

Solution courte

Lorsque vous ajoutez des lignes de commande à des enregistrements NetSuite dans SuiteScript 1.0, il est recommandé d’utiliser les méthodes nlapiSelectNewLineItem, nlapiSetCurrentLineItemValue et nlapiCommitLineItem. Cette approche reproduit le fonctionnement du bouton « Insérer » de l’interface utilisateur, garantissant ainsi la création correcte des lignes de commande et évitant les erreurs liées à une insertion directe à des numéros de ligne spécifiques.

Scénario

Un script NetSuite conçu pour ajouter des lignes à la sous-liste d’un enregistrement, telle que la sous-liste des articles d’une facture, rencontre des erreurs inattendues lorsqu’il tente d’utiliser la fonction nlapiInsertLineItem lors de l’événement beforeLoad. Ce problème survient souvent lorsque l’on tente d’insérer une ligne à la fin d’une sous-liste existante, ce qui entraîne des échecs du script.

Solution

La fonction nlapiInsertLineItem, bien que disponible dans SuiteScript 1.0, peut être source d’erreurs lorsque vous tentez d’insérer des lignes à des positions spécifiques, en particulier à la fin d’une sous-liste. Une méthode plus robuste et recommandée dans SuiteScript 1.0 pour ajouter de nouvelles lignes d’article consiste à simuler la fonctionnalité du bouton « Insérer » de l’interface utilisateur. L’approche problématique, qui tente d’insérer une ligne à une position calculée (en utilisant l’indexation à partir de 1, typique de SuiteScript 1.0), pourrait se présenter comme suit :

var lineNumber = nlapiGetLineItemCount('item') + 1;nlapiInsertLineItem('item', lineNumber);nlapiSetLineItemValue('item', 'fieldname', lineNumber, 'value');

L’approche recommandée en SuiteScript 1.0 pour ajouter de nouvelles lignes consiste à sélectionner une nouvelle ligne, à définir ses valeurs, puis à la valider. Cette méthode garantit que la ligne est correctement initialisée et ajoutée à la sous-liste.

  1. Sélectionnez une nouvelle ligne au sein de la sous-liste spécifiée.

  2. Définissez les valeurs des champs obligatoires pour la ligne nouvellement sélectionnée.

  3. Validez la nouvelle ligne dans l’enregistrement. Voici l’extrait de code SuiteScript 1.0 corrigé et recommandé :

nlapiSelectNewLineItem('item');nlapiSetCurrentLineItemValue('item', 'fieldname', 'value');nlapiCommitLineItem('item');

Cette méthode résout efficacement les problèmes liés à l’insertion de lignes par programmation.Remarque sur les versions de SuiteScript : les fonctions nlapiInsertLineItem, nlapiSelectNewLineItem, nlapiSetCurrentLineItemValue et nlapiCommitLineItem font partie de SuiteScript 1.

  1. Pour les nouveaux développements, NetSuite recommande vivement d’utiliser SuiteScript 2.x, qui offre une API modulaire et orientée objet (par exemple, les méthodes du module N/record) et utilise un indexage à partir de 0 pour les lignes des sous-listes.

Support expert NetSuite

Besoin d’aide pour cet enjeu NetSuite ?

Accompagnement-conseil et configuration pour Développement SuiteScript

Parler à un consultant