{"id":4133,"date":"2017-08-21T14:31:50","date_gmt":"2017-08-21T14:31:50","guid":{"rendered":"https:\/\/answers.gurussolutions.com\/answers\/how-to-implement-a-pop-up-suitelet-for-netsuite-record-interaction-2\/"},"modified":"2026-07-28T18:26:26","modified_gmt":"2026-07-28T18:26:26","slug":"comment-mettre-en-place-un-suitelet-contextuel-pour-interagir-avec-les-enregistrements-netsuite","status":"publish","type":"qa_entry","link":"https:\/\/answers.gurussolutions.com\/fr\/answers\/comment-mettre-en-place-un-suitelet-contextuel-pour-interagir-avec-les-enregistrements-netsuite\/","title":{"rendered":"Comment mettre en place un Suitelet contextuel pour interagir avec les enregistrements NetSuite ?"},"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":"Utilisez SuiteScript pour cr\u00e9er un Suitelet contextuel qui interagit avec les donn\u00e9es d'un enregistrement NetSuite parent et les met \u00e0 jour, am\u00e9liorant ainsi les flux de travail des utilisateurs.","ga_short_answer":"La solution comprend un script d\u2019\u00e9v\u00e9nement utilisateur pour ajouter un bouton, un script client pour ouvrir le Suitelet, ainsi qu\u2019un type de script Suitelet qui utilise \u00ab window.opener \u00bb pour interagir avec l\u2019enregistrement parent et \u00ab window.close() \u00bb pour se fermer. Cette architecture permet de mettre \u00e0 jour dynamiquement les enregistrements \u00e0 partir d\u2019une fen\u00eatre contextuelle.","ga_scenario":"Une exigence courante dans NetSuite consiste \u00e0 fournir aux utilisateurs une interface personnalis\u00e9e pour la saisie ou la s\u00e9lection de donn\u00e9es, capable de <a class=\"ga-interlink\" href=\"https:\/\/answers.gurussolutions.com\/fr\/answers\/how-netsuites-approve-button-triggers-scripts-and-handles-record-changes\/\">mettre \u00e0 jour dynamiquement les champs d\u2019un enregistrement existant<\/a> sans avoir \u00e0 quitter celui-ci. Cela implique souvent d\u2019ouvrir une fen\u00eatre secondaire, telle qu\u2019un Suitelet, pour effectuer des actions sp\u00e9cifiques, puis de renvoyer les r\u00e9sultats vers l\u2019enregistrement d\u2019origine.","ga_solution":"Pour permettre une interaction dynamique entre un Suitelet contextuel et un enregistrement parent NetSuite, mettez en \u0153uvre l\u2019architecture de script suivante : 1.  **Script d\u2019\u00e9v\u00e9nement utilisateur** : <a class=\"ga-interlink\" href=\"https:\/\/answers.gurussolutions.com\/fr\/answers\/how-do-scripted-buttons-function-in-netsuite-forms\/\">d\u00e9ployez un script d\u2019\u00e9v\u00e9nement utilisateur afin d\u2019ajouter un bouton personnalis\u00e9<\/a>\n\nau formulaire de l\u2019enregistrement parent (par exemple, une commande client). 2.  **Script client (enregistrement parent)** : associez un script client \u00e0 l\u2019enregistrement parent. Ce script g\u00e9rera l\u2019\u00e9v\u00e9nement de clic sur le bouton personnalis\u00e9. Dans ce script, utilisez \u00ab window.open(url) \u00bb pour lancer le Suitelet dans une nouvelle fen\u00eatre contextuelle, o\u00f9 \u00ab url \u00bb correspond \u00e0 l\u2019URL NetSuite du Suitelet d\u00e9ploy\u00e9.3.  **Type de script Suitelet** :    *   Cr\u00e9ez un type de script Suitelet.    *   Concevez le formulaire Suitelet sans inclure le bouton \u00ab Soumettre \u00bb standard.    *   Ajoutez au Suitelet un bouton personnalis\u00e9 qui appelle une fonction c\u00f4t\u00e9 client.    *   Cette fonction c\u00f4t\u00e9 client au sein du Suitelet peut interagir avec l\u2019\u00e9cran d\u2019origine de l\u2019enregistrement parent \u00e0 l\u2019aide de l\u2019objet \u00ab window.opener \u00bb. L\u2019objet \u00ab window.opener \u00bb permet l\u2019ex\u00e9cution d\u2019API c\u00f4t\u00e9 client afin de mettre \u00e0 jour l\u2019enregistrement parent ouvert.    *   Une fois le traitement termin\u00e9 et les mises \u00e0 jour n\u00e9cessaires effectu\u00e9es sur l\u2019enregistrement parent, fermez le Suitelet \u00e0 l\u2019aide de l\u2019extrait de code JavaScript suivant :\n\n```\njavascriptwindow.ischanged = false;window.close();\n```\n\nCette architecture offre une exp\u00e9rience utilisateur fluide, dans laquelle les donn\u00e9es peuvent \u00eatre manipul\u00e9es dans une fen\u00eatre secondaire et r\u00e9percut\u00e9es instantan\u00e9ment sur l\u2019enregistrement principal.\u00c0 titre de r\u00e9f\u00e9rence, vous trouverez des impl\u00e9mentations similaires dans des scripts tels que ST_CUE_OrderForm.js, ST_SSU_OrderForm.js et ST_SUE_CUE_OrderForm.js.","ga_source_author":"","ga_source_author_email":"","ga_date_original":"2017-08-21T10:31:50-04:00","ga_date_verified":"2026-07-05","ga_source_subject":"Interactions between a record and a suitelet (pop up)","ga_ans_id":"ANS-0474","ga_publish_decision":"publish_with_edits","ga_staleness_risk":"high","ga_review_priority":"spot_check","ga_tier2_verdict":"partially_outdated","ga_tier2_concerns":"The specific SuiteScript 1.0 API function 'window.opener.nlapiSelectNewLineItem('item')' is outdated; SuiteScript 2.x uses modular APIs (e.g., N\/record, N\/currentRecord) for record manipulation.; The terminology 'SSU suitelet' is not standard in current NetSuite SuiteScript 2.x documentation, which refers to 'Suitelet Script Type' and distinguishes between UI-generating and backend Suitelets.","ga_final_category":"SuiteScript Development","footnotes":""},"ga_category":[108,23,108],"ga_audience":[10],"ga_difficulty":[94],"class_list":["post-4133","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\/4133","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\/4133\/revisions"}],"predecessor-version":[{"id":6054,"href":"https:\/\/answers.gurussolutions.com\/fr\/wp-json\/wp\/v2\/qa_entry\/4133\/revisions\/6054"}],"wp:attachment":[{"href":"https:\/\/answers.gurussolutions.com\/fr\/wp-json\/wp\/v2\/media?parent=4133"}],"wp:term":[{"taxonomy":"ga_category","embeddable":true,"href":"https:\/\/answers.gurussolutions.com\/fr\/wp-json\/wp\/v2\/ga_category?post=4133"},{"taxonomy":"ga_audience","embeddable":true,"href":"https:\/\/answers.gurussolutions.com\/fr\/wp-json\/wp\/v2\/ga_audience?post=4133"},{"taxonomy":"ga_difficulty","embeddable":true,"href":"https:\/\/answers.gurussolutions.com\/fr\/wp-json\/wp\/v2\/ga_difficulty?post=4133"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}