{"id":3997,"date":"2017-08-21T14:53:38","date_gmt":"2017-08-21T14:53:38","guid":{"rendered":"https:\/\/answers.gurussolutions.com\/answers\/how-to-retrieve-a-transaction-id-in-netsuite-after-submit-scripts-2\/"},"modified":"2026-07-28T18:26:18","modified_gmt":"2026-07-28T18:26:18","slug":"comment-recuperer-un-identifiant-de-transaction-dans-netsuite-apres-lexecution-de-scripts","status":"publish","type":"qa_entry","link":"https:\/\/answers.gurussolutions.com\/fr\/answers\/comment-recuperer-un-identifiant-de-transaction-dans-netsuite-apres-lexecution-de-scripts\/","title":{"rendered":"Comment r\u00e9cup\u00e9rer un identifiant de transaction dans NetSuite apr\u00e8s l&rsquo;ex\u00e9cution de scripts ?"},"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 pr\u00e9sente des strat\u00e9gies permettant de r\u00e9cup\u00e9rer l'identifiant de transaction dans les scripts afterSubmit de NetSuite, afin de r\u00e9soudre les probl\u00e8mes de synchronisation courants.","ga_short_answer":"Pour obtenir de mani\u00e8re fiable un identifiant de transaction dans un script afterSubmit, rechargez l'enregistrement \u00e0 l'aide de `record.load` ou recherchez le champ \u00e0 l'aide de `search.lookupFields`. Pour les sc\u00e9narios impliquant des ensembles de donn\u00e9es volumineux ou un traitement asynchrone complexe, envisagez de mettre en \u0153uvre un script planifi\u00e9 SuiteScript 2.x ou un script Map\/Reduce.","ga_scenario":"Lorsqu\u2019un e-mail est envoy\u00e9 ou qu\u2019une transaction est soumise dans NetSuite, l\u2019identifiant interne de la transaction (tranid) peut ne pas \u00eatre imm\u00e9diatement disponible dans le <a class=\"ga-interlink\" href=\"https:\/\/answers.gurussolutions.com\/fr\/answers\/how-do-netsuite-mass-updates-impact-user-event-script-execution\/\">contexte du script d\u2019\u00e9v\u00e9nement utilisateur<\/a> `afterSubmit`. Ce d\u00e9calage temporel peut emp\u00eacher les scripts de r\u00e9f\u00e9rencer correctement la transaction nouvellement cr\u00e9\u00e9e ou mise \u00e0 jour.","ga_solution":"Pour vous assurer que l\u2019identifiant de transaction est disponible dans un script `afterSubmit`\n\n, mettez en \u0153uvre l\u2019une des m\u00e9thodes suivantes :\n\n1.  **Recharger l\u2019enregistrement (SuiteScript 2.x) :**\n    L\u2019approche la plus directe consiste \u00e0 recharger l\u2019enregistrement au sein du script `afterSubmit`\n\n. Cela garantit que le script r\u00e9cup\u00e8re l\u2019\u00e9tat le plus r\u00e9cent de l\u2019enregistrement, y compris l\u2019identifiant de transaction g\u00e9n\u00e9r\u00e9.\n\n```\njavascript\n    \/**\n     * @NApiVersion 2.x\n     * @NScriptType UserEventScript\n     *\/\n    define(['N\/record'], function(record) {\n        function afterSubmit(scriptContext) {\n            var newRecord = scriptContext.newRecord;\n            var recordId = newRecord.id;\n            var recordType = newRecord.type;\n\n            \/\/ Reload the record to get the latest data, including the transaction ID\n            var loadedRecord = record.load({\n                type: recordType,\n                id: recordId\n            });\n\n            var transactionId = loadedRecord.getValue({ fieldId: 'tranid' });\n            log.debug('Transaction ID (reloaded)', transactionId);\n            \/\/ Further processing using transactionId\n        }\n        return { afterSubmit: afterSubmit };\n    });\n```\n\n\n\n2.  **Rechercher le champ (SuiteScript 2.x) :**\n    Vous pouvez \u00e9galement utiliser `search.lookupFields`\n\npour r\u00e9cup\u00e9rer des champs sp\u00e9cifiques, tels que l\u2019identifiant de transaction, \u00e0 partir de l\u2019enregistrement sauvegard\u00e9. Cette m\u00e9thode s\u2019av\u00e8re souvent plus efficace que le chargement de l\u2019enregistrement complet si seuls quelques champs sont n\u00e9cessaires.\n\n```\njavascript\n    \/**\n     * @NApiVersion 2.x\n     * @NScriptType UserEventScript\n     *\/\n    define(['N\/search'], function(search) {\n        function afterSubmit(scriptContext) {\n            var newRecord = scriptContext.newRecord;\n            var recordId = newRecord.id;\n            var recordType = newRecord.type;\n\n            \/\/ Look up the 'tranid' field from the saved record\n            var lookupResult = search.lookupFields({\n                type: recordType,\n                id: recordId,\n                columns: ['tranid']\n            });\n\n            var transactionId = lookupResult.tranid;\n            log.debug('Transaction ID (lookup)', transactionId);\n            \/\/ Further processing using transactionId\n        }\n        return { afterSubmit: afterSubmit };\n    });\n```\n\n3.  <a class=\"ga-interlink\" href=\"https:\/\/answers.gurussolutions.com\/fr\/answers\/can-a-scheduled-script-be-rescheduled-to-another-queue-without-multiple-deployments\/\">**Traitement asynchrone avec des scripts planifi\u00e9s ou Map\/Reduce<\/a>\n\n(SuiteScript 2.x) :**\n    Si la disponibilit\u00e9 imm\u00e9diate de l\u2019identifiant de transaction n\u2019est pas critique, ou si le traitement ult\u00e9rieur est gourmand en ressources ou implique des ensembles de donn\u00e9es volumineux, envisagez une approche asynchrone. Cela d\u00e9charge le traitement vers l\u2019ex\u00e9cution d\u2019un script distinct, \u00e9vitant ainsi les retards dans l\u2019interface utilisateur.\n\n    *   **Script planifi\u00e9 :** Pour les t\u00e2ches asynchrones g\u00e9n\u00e9rales, un script planifi\u00e9 SuiteScript 2.x peut \u00eatre d\u00e9clench\u00e9 afin de traiter l\u2019enregistrement une fois celui-ci enti\u00e8rement valid\u00e9. Le script `afterSubmit`\n\nse contenterait de mettre la t\u00e2che en file d\u2019attente pour le script planifi\u00e9.\n    *   **Script Map\/Reduce :** Pour le traitement de grands volumes de donn\u00e9es, un script Map\/Reduce est le framework SuiteScript 2.x recommand\u00e9. Le script `afterSubmit`\n\npourrait lancer une t\u00e2che Map\/Reduce en lui transmettant l\u2019ID de l\u2019enregistrement en vue d\u2019un traitement ult\u00e9rieur.","ga_source_author":"","ga_source_author_email":"","ga_date_original":"2017-08-21T16:53:38+02:00","ga_date_verified":"2026-07-05","ga_source_subject":"Transaction number generated after email send","ga_ans_id":"ANS-0338","ga_publish_decision":"publish_with_edits","ga_staleness_risk":"high","ga_review_priority":"spot_check","ga_tier2_verdict":"partially_outdated","ga_tier2_concerns":"The functions nlapiLoadRecord and nlapiLookupField are SuiteScript 1.0 APIs, which are still supported but no longer updated, and NetSuite recommends using their SuiteScript 2.x equivalents (record.load and search.lookupFields respectively) for new development.; While the concept of using a scheduled script for asynchronous processing remains valid, SuiteScript 2.x offers its own framework for scheduled scripts, and for large datasets, Map\/Reduce scripts are now recommended.","ga_final_category":"SuiteScript Development","footnotes":""},"ga_category":[108,23,108],"ga_audience":[10],"ga_difficulty":[92],"class_list":["post-3997","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\/3997","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\/3997\/revisions"}],"predecessor-version":[{"id":5918,"href":"https:\/\/answers.gurussolutions.com\/fr\/wp-json\/wp\/v2\/qa_entry\/3997\/revisions\/5918"}],"wp:attachment":[{"href":"https:\/\/answers.gurussolutions.com\/fr\/wp-json\/wp\/v2\/media?parent=3997"}],"wp:term":[{"taxonomy":"ga_category","embeddable":true,"href":"https:\/\/answers.gurussolutions.com\/fr\/wp-json\/wp\/v2\/ga_category?post=3997"},{"taxonomy":"ga_audience","embeddable":true,"href":"https:\/\/answers.gurussolutions.com\/fr\/wp-json\/wp\/v2\/ga_audience?post=3997"},{"taxonomy":"ga_difficulty","embeddable":true,"href":"https:\/\/answers.gurussolutions.com\/fr\/wp-json\/wp\/v2\/ga_difficulty?post=3997"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}