{"id":3201,"date":"2017-08-21T15:02:45","date_gmt":"2017-08-21T15:02:45","guid":{"rendered":"https:\/\/answers.gurussolutions.com\/answers\/how-to-correctly-remove-all-line-items-from-a-netsuite-sublist-using-suitescript-2-x-2\/"},"modified":"2026-07-28T18:25:34","modified_gmt":"2026-07-28T18:25:34","slug":"comment-supprimer-correctement-toutes-les-lignes-dune-sous-liste-netsuite-a-laide-de-suitescript-2-x","status":"publish","type":"qa_entry","link":"https:\/\/answers.gurussolutions.com\/fr\/answers\/comment-supprimer-correctement-toutes-les-lignes-dune-sous-liste-netsuite-a-laide-de-suitescript-2-x\/","title":{"rendered":"Comment supprimer correctement toutes les lignes d&rsquo;une sous-liste NetSuite \u00e0 l&rsquo;aide de SuiteScript 2.x"},"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":"Identifiez les pi\u00e8ges courants li\u00e9s \u00e0 la parcourue et \u00e0 la suppression d\u2019entr\u00e9es de sous-listes, puis mettez en \u0153uvre une solution SuiteScript 2.x efficace.","ga_short_answer":"Pour supprimer de mani\u00e8re fiable toutes les lignes d\u2019une sous-liste NetSuite \u00e0 l\u2019aide de SuiteScript 2.x, \u00e9vitez d\u2019effectuer une it\u00e9ration vers l\u2019avant. Utilisez plut\u00f4t une boucle `while` qui supprime en continu la premi\u00e8re ligne (index 0) jusqu\u2019\u00e0 ce que la sous-liste soit vide. Cette m\u00e9thode permet d\u2019\u00e9viter les erreurs d\u2019indexation caus\u00e9es par la r\u00e9indexation de la sous-liste apr\u00e8s chaque suppression.","ga_scenario":"Les d\u00e9veloppeurs rencontrent souvent des difficult\u00e9s lorsqu\u2019ils tentent de supprimer par programmation tous les \u00e9l\u00e9ments d\u2019une sous-liste NetSuite. Une approche intuitive courante consiste \u00e0 parcourir la sous-liste et \u00e0 supprimer les \u00e9l\u00e9ments en fonction de leur index. Cependant, cette m\u00e9thode entra\u00eene fr\u00e9quemment des suppressions incompl\u00e8tes, car la sous-liste se r\u00e9indexe apr\u00e8s chaque suppression d\u2019\u00e9l\u00e9ment, ce qui fait que les it\u00e9rations suivantes sautent certains \u00e9l\u00e9ments.","ga_solution":"Observez les deux extraits de code ci-dessous, qui illustrent respectivement une approche incorrecte et une approche correcte pour supprimer des \u00e9l\u00e9ments d\u2019une sous-liste dans SuiteScript 2.x. La diff\u00e9rence essentielle r\u00e9side dans la mani\u00e8re dont l\u2019op\u00e9ration de suppression g\u00e8re la r\u00e9indexation dynamique des lignes de la sous-liste.\n\n**APPROCHE INCORRECTE**\n\n```\njavascript\nfor(var i = 0; i < currentRecord.getLineCount({ sublistId: 'item' }); i++){\n    currentRecord.removeLine({ sublistId: 'item', line: i });\n}\n```\n\nDans l\u2019extrait ci-dessus, qui illustre une approche courante et intuitive, le probl\u00e8me survient car, d\u00e8s qu\u2019un \u00e9l\u00e9ment de ligne est supprim\u00e9, la sous-liste est r\u00e9index\u00e9e. Cet ajustement entra\u00eene une modification du nombre de lignes et des indices des \u00e9l\u00e9ments restants. Par exemple, si une sous-liste comporte trois \u00e9l\u00e9ments (index\u00e9s 0, 1, 2) :\n\nLIGNE 1 [index 0] LIGNE 2 [index 1] LIGNE 3 [index 2]\n\n1. `currentRecord.removeLine({ sublistId: 'item', line: 0 })` supprime la LIGNE \n1.\n   R\u00e9sultat : LIGNE 2 [index 0] LIGNE 3 [index 1]\n2. La boucle incr\u00e9mente `i` \u00e0 1. `currentRecord.removeLine({ sublistId: 'item', line: 1 })` supprime LIGNE 3 (qui \u00e9tait \u00e0 l\u2019origine LIGNE 3, d\u00e9sormais \u00e0 l\u2019index 1).\n   R\u00e9sultat : LIGNE 2 [index 0]\n\nLa boucle s\u2019arr\u00eate alors, car `i` est d\u00e9sormais sup\u00e9rieur au nombre de lignes, laissant la LIGNE 2 intacte.\n\n**APPROCHE CORRECTE**\n\nUne m\u00e9thode simple et fiable pour r\u00e9soudre ce probl\u00e8me consiste \u00e0 supprimer syst\u00e9matiquement le premier \u00e9l\u00e9ment (index 0) jusqu\u2019\u00e0 ce qu\u2019il ne reste plus aucun \u00e9l\u00e9ment dans la sous-liste. Cette approche fonctionne car la suppression du premier \u00e9l\u00e9ment d\u00e9cale toujours les \u00e9l\u00e9ments suivants pour combler le vide, ce qui fait que le \u00ab nouveau \u00bb premier \u00e9l\u00e9ment est toujours disponible \u00e0 l\u2019index 0.\n\n```\njavascript\nwhile(currentRecord.getLineCount({ sublistId: 'item' }) > 0){\n    currentRecord.removeLine({ sublistId: 'item', line: 0 });\n}\n```\n\nCela donnera lieu \u00e0 l\u2019ex\u00e9cution suivante :\n\nConsid\u00e9rez la m\u00eame sous-liste initiale :\n\nLINE 1 [index 0] LINE 2 [index 1] LINE 3 [index 2]\n\n1. `currentRecord.removeLine({ sublistId: 'item', line: 0 })` supprime LINE \n1.\n   R\u00e9sultat : LINE 2 [index 0] LINE 3 [index 1]\n2. `currentRecord.removeLine({ sublistId: 'item', line: 0 })` supprime LIGNE \n2.\n   R\u00e9sultat : LIGNE 3 [index 0]\n3. `currentRecord.removeLine({ sublistId: 'item', line: 0 })` supprime LIGNE \n3.\n   R\u00e9sultat : (sous-liste vide)\n\nCela garantit que tous les \u00e9l\u00e9ments sont correctement supprim\u00e9s sans aucune complication li\u00e9e \u00e0 l'indexation.","ga_source_author":"Andrew Kefalas","ga_source_author_email":"","ga_date_original":"2017-08-21T11:02:45-04:00","ga_date_verified":"2026-07-05","ga_source_subject":"Deleting all members from a sublist","ga_ans_id":"ANS-1462","ga_publish_decision":"publish_with_edits","ga_staleness_risk":"high","ga_review_priority":"spot_check","ga_tier2_verdict":"partially_outdated","ga_tier2_concerns":"The function names 'nlapiGetLineItemCount' and 'nlapiRemoveLineItem' are specific to SuiteScript 1.0, which is considered a legacy version of NetSuite's scripting platform.; Current NetSuite development recommends SuiteScript 2.x, which uses different module-based APIs (e.g., N\/currentRecord, N\/record) and corresponding function names like 'getLineCount' and 'removeLine'.; SuiteScript 2.x uses 0-based indexing for sublist lines, whereas SuiteScript 1.0 used 1-based indexing, which impacts the 'line' parameter in removal operations.","ga_final_category":"SuiteScript Development","footnotes":""},"ga_category":[108,23,108],"ga_audience":[10],"ga_difficulty":[92],"class_list":["post-3201","qa_entry","type-qa_entry","status-publish","hentry","ga_category-developpement-suitescript","ga_category-suitescript-development","ga_audience-developer-suitescript","ga_difficulty-niveau-intermediaire"],"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":92,"label":"Niveau interm\u00e9diaire"}]},"featured_image_src_large":[],"author_info":[],"comment_info":"","_links":{"self":[{"href":"https:\/\/answers.gurussolutions.com\/fr\/wp-json\/wp\/v2\/qa_entry\/3201","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\/3201\/revisions"}],"predecessor-version":[{"id":5121,"href":"https:\/\/answers.gurussolutions.com\/fr\/wp-json\/wp\/v2\/qa_entry\/3201\/revisions\/5121"}],"wp:attachment":[{"href":"https:\/\/answers.gurussolutions.com\/fr\/wp-json\/wp\/v2\/media?parent=3201"}],"wp:term":[{"taxonomy":"ga_category","embeddable":true,"href":"https:\/\/answers.gurussolutions.com\/fr\/wp-json\/wp\/v2\/ga_category?post=3201"},{"taxonomy":"ga_audience","embeddable":true,"href":"https:\/\/answers.gurussolutions.com\/fr\/wp-json\/wp\/v2\/ga_audience?post=3201"},{"taxonomy":"ga_difficulty","embeddable":true,"href":"https:\/\/answers.gurussolutions.com\/fr\/wp-json\/wp\/v2\/ga_difficulty?post=3201"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}