{"id":3584,"date":"2017-08-21T14:45:28","date_gmt":"2017-08-21T14:45:28","guid":{"rendered":"https:\/\/answers.gurussolutions.com\/answers\/how-to-programmatically-add-line-items-to-netsuite-records-in-suitescript-1-0-2\/"},"modified":"2026-07-28T18:25:53","modified_gmt":"2026-07-28T18:25:53","slug":"comment-ajouter-par-programmation-des-lignes-de-commande-aux-enregistrements-netsuite-dans-suitescript-1-0","status":"publish","type":"qa_entry","link":"https:\/\/answers.gurussolutions.com\/fr\/answers\/comment-ajouter-par-programmation-des-lignes-de-commande-aux-enregistrements-netsuite-dans-suitescript-1-0\/","title":{"rendered":"Comment ajouter par programmation des lignes de commande aux enregistrements NetSuite dans SuiteScript 1.0"},"content":{"rendered":"","protected":false},"template":"","meta":{"_kad_blocks_custom_css":"","_kad_blocks_head_custom_js":"","_kad_blocks_body_custom_js":"","_kad_blocks_footer_custom_js":"","_kadence_starter_templates_imported_post":false,"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","ga_subtitle":"Ce guide traite des probl\u00e8mes courants et pr\u00e9sente l\u2019approche recommand\u00e9e avec SuiteScript 1.0 pour ins\u00e9rer de mani\u00e8re dynamique de nouvelles lignes dans les sous-listes des enregistrements NetSuite.","ga_short_answer":"Lorsque vous ajoutez des lignes de commande \u00e0 des enregistrements NetSuite dans SuiteScript 1.0, il est recommand\u00e9 d\u2019utiliser les m\u00e9thodes nlapiSelectNewLineItem, nlapiSetCurrentLineItemValue et nlapiCommitLineItem. Cette approche reproduit le fonctionnement du bouton \u00ab Ins\u00e9rer \u00bb de l\u2019interface utilisateur, garantissant ainsi la cr\u00e9ation correcte des lignes de commande et \u00e9vitant les erreurs li\u00e9es \u00e0 une insertion directe \u00e0 des num\u00e9ros de ligne sp\u00e9cifiques.","ga_scenario":"Un script NetSuite con\u00e7u pour ajouter des lignes \u00e0 la sous-liste d\u2019un enregistrement, telle que la sous-liste des articles d\u2019une facture, rencontre des erreurs inattendues lorsqu\u2019il tente d\u2019utiliser la fonction nlapiInsertLineItem lors de l\u2019\u00e9v\u00e9nement beforeLoad. Ce probl\u00e8me survient souvent lorsque l\u2019on tente d\u2019ins\u00e9rer une ligne \u00e0 la fin d\u2019une sous-liste existante, ce qui entra\u00eene des \u00e9checs du script.","ga_solution":"La fonction nlapiInsertLineItem, bien que disponible dans SuiteScript 1.0, peut \u00eatre source d\u2019erreurs lorsque vous tentez d\u2019ins\u00e9rer des lignes \u00e0 des positions sp\u00e9cifiques, en particulier \u00e0 la fin d\u2019une sous-liste. Une m\u00e9thode plus robuste et recommand\u00e9e dans SuiteScript 1.0 pour ajouter de nouvelles lignes d\u2019article consiste \u00e0 simuler la fonctionnalit\u00e9 du bouton \u00ab Ins\u00e9rer \u00bb de l\u2019interface utilisateur. L\u2019approche probl\u00e9matique, qui tente d\u2019ins\u00e9rer une ligne \u00e0 une position calcul\u00e9e (en utilisant l\u2019indexation \u00e0 partir de 1, typique de SuiteScript 1.0), pourrait se pr\u00e9senter comme suit :\n\n```\nvar lineNumber = nlapiGetLineItemCount('item') + 1;nlapiInsertLineItem('item', lineNumber);nlapiSetLineItemValue('item', 'fieldname', lineNumber, 'value');\n```\n\nL\u2019approche recommand\u00e9e en SuiteScript 1.0 pour ajouter de nouvelles lignes consiste \u00e0 s\u00e9lectionner une nouvelle ligne, \u00e0 d\u00e9finir ses valeurs, puis \u00e0 la valider. Cette m\u00e9thode garantit que la ligne est correctement initialis\u00e9e et ajout\u00e9e \u00e0 la sous-liste.\n1. S\u00e9lectionnez une nouvelle ligne au sein de la sous-liste sp\u00e9cifi\u00e9e.\n2. D\u00e9finissez les valeurs des champs obligatoires pour la ligne nouvellement s\u00e9lectionn\u00e9e.\n3. Validez la nouvelle ligne dans l\u2019enregistrement. Voici l\u2019extrait de code SuiteScript 1.0 corrig\u00e9 et recommand\u00e9 :\n\n```\nnlapiSelectNewLineItem('item');nlapiSetCurrentLineItemValue('item', 'fieldname', 'value');nlapiCommitLineItem('item');\n```\n\nCette m\u00e9thode r\u00e9sout efficacement les probl\u00e8mes li\u00e9s \u00e0 l\u2019insertion de lignes par programmation.Remarque sur les versions de SuiteScript : les fonctions nlapiInsertLineItem, nlapiSelectNewLineItem, nlapiSetCurrentLineItemValue et nlapiCommitLineItem font partie de SuiteScript 1.\n0. Pour les nouveaux d\u00e9veloppements, NetSuite recommande vivement d\u2019utiliser SuiteScript 2.x, qui offre une API modulaire et orient\u00e9e objet (par exemple, les m\u00e9thodes du module N\/record) et utilise un indexage \u00e0 partir de 0 pour les lignes des sous-listes.","ga_source_author":"","ga_source_author_email":"","ga_date_original":"2017-08-21T10:45:28-04:00","ga_date_verified":"2026-07-05","ga_source_subject":"nlapiInsertLineItem causes unexpected error on beforeload of an invoice","ga_ans_id":"ANS-1845","ga_publish_decision":"publish_with_edits","ga_staleness_risk":"high","ga_review_priority":"spot_check","ga_tier2_verdict":"partially_outdated","ga_tier2_concerns":"The `nlapiInsertLineItem`, `nlapiSelectNewLineItem`, `nlapiSetCurrentLineItemValue`, and `nlapiCommitLineItem` functions are part of SuiteScript 1.0, which is an older version of NetSuite's scripting language. NetSuite's current documentation strongly recommends using SuiteScript 2.x for new development, which uses a modular, object-oriented API (e.g., `N\/record` module methods) instead of the global `nlapi` functions.; The function `nlapiSetcurrentLineItemValue` in the original answer contains a capitalization error; the correct SuiteScript 1.0 function is `nlapiSetCurrentLineItemValue`.; The function `nlapiInsertLineItems` mentioned in the original answer text could not be verified in current documentation and is likely a typo for `nlapiInsertLineItem`.; SuiteScript 2.x uses 0-based indexing for sublist lines, whereas SuiteScript 1.0 uses 1-based indexing. This is a fundamental difference in how line numbers are handled.","ga_final_category":"SuiteScript Development","footnotes":""},"ga_category":[108,23,108],"ga_audience":[10],"ga_difficulty":[94],"class_list":["post-3584","qa_entry","type-qa_entry","status-publish","hentry","ga_category-developpement-suitescript","ga_category-suitescript-development","ga_audience-developer-suitescript","ga_difficulty-avance"],"taxonomy_info":{"ga_category":[{"value":108,"label":"D\u00e9veloppement SuiteScript"},{"value":23,"label":"SuiteScript Development"},{"value":108,"label":"D\u00e9veloppement SuiteScript"}],"ga_audience":[{"value":10,"label":"Developer\/SuiteScript"}],"ga_difficulty":[{"value":94,"label":"Avanc\u00e9"}]},"featured_image_src_large":[],"author_info":[],"comment_info":"","_links":{"self":[{"href":"https:\/\/answers.gurussolutions.com\/fr\/wp-json\/wp\/v2\/qa_entry\/3584","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/answers.gurussolutions.com\/fr\/wp-json\/wp\/v2\/qa_entry"}],"about":[{"href":"https:\/\/answers.gurussolutions.com\/fr\/wp-json\/wp\/v2\/types\/qa_entry"}],"version-history":[{"count":1,"href":"https:\/\/answers.gurussolutions.com\/fr\/wp-json\/wp\/v2\/qa_entry\/3584\/revisions"}],"predecessor-version":[{"id":5504,"href":"https:\/\/answers.gurussolutions.com\/fr\/wp-json\/wp\/v2\/qa_entry\/3584\/revisions\/5504"}],"wp:attachment":[{"href":"https:\/\/answers.gurussolutions.com\/fr\/wp-json\/wp\/v2\/media?parent=3584"}],"wp:term":[{"taxonomy":"ga_category","embeddable":true,"href":"https:\/\/answers.gurussolutions.com\/fr\/wp-json\/wp\/v2\/ga_category?post=3584"},{"taxonomy":"ga_audience","embeddable":true,"href":"https:\/\/answers.gurussolutions.com\/fr\/wp-json\/wp\/v2\/ga_audience?post=3584"},{"taxonomy":"ga_difficulty","embeddable":true,"href":"https:\/\/answers.gurussolutions.com\/fr\/wp-json\/wp\/v2\/ga_difficulty?post=3584"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}