ANS-0338 · DéVELOPPEMENT SUITESCRIPT
Comment récupérer un identifiant de transaction dans NetSuite après l’exécution de scripts ?
Ce guide présente des stratégies permettant de récupérer l'identifiant de transaction dans les scripts afterSubmit de NetSuite, afin de résoudre les problèmes de synchronisation courants.
Solution courte
Pour obtenir de manière fiable un identifiant de transaction dans un script afterSubmit, rechargez l'enregistrement à l'aide de `record.load` ou recherchez le champ à l'aide de `search.lookupFields`. Pour les scénarios impliquant des ensembles de données volumineux ou un traitement asynchrone complexe, envisagez de mettre en œuvre un script planifié SuiteScript 2.x ou un script Map/Reduce.
Scénario
Lorsqu’un e-mail est envoyé ou qu’une transaction est soumise dans NetSuite, l’identifiant interne de la transaction (tranid) peut ne pas être immédiatement disponible dans le contexte du script d’événement utilisateur `afterSubmit`. Ce décalage temporel peut empêcher les scripts de référencer correctement la transaction nouvellement créée ou mise à jour.
Solution
Pour vous assurer que l’identifiant de transaction est disponible dans un script afterSubmit
, mettez en œuvre l’une des méthodes suivantes :
Recharger l’enregistrement (SuiteScript 2.x) :
L’approche la plus directe consiste à recharger l’enregistrement au sein du script
afterSubmit. Cela garantit que le script récupère l’état le plus récent de l’enregistrement, y compris l’identifiant de transaction généré.
javascript
/**
* @NApiVersion 2.x
* @NScriptType UserEventScript
*/
define(['N/record'], function(record) {
function afterSubmit(scriptContext) {
var newRecord = scriptContext.newRecord;
var recordId = newRecord.id;
var recordType = newRecord.type;
// Reload the record to get the latest data, including the transaction ID
var loadedRecord = record.load({
type: recordType,
id: recordId
});
var transactionId = loadedRecord.getValue({ fieldId: 'tranid' });
log.debug('Transaction ID (reloaded)', transactionId);
// Further processing using transactionId
}
return { afterSubmit: afterSubmit };
});Rechercher le champ (SuiteScript 2.x) :
Vous pouvez également utiliser
search.lookupFieldspour récupérer des champs spécifiques, tels que l’identifiant de transaction, à partir de l’enregistrement sauvegardé. Cette méthode s’avère souvent plus efficace que le chargement de l’enregistrement complet si seuls quelques champs sont nécessaires.
javascript
/**
* @NApiVersion 2.x
* @NScriptType UserEventScript
*/
define(['N/search'], function(search) {
function afterSubmit(scriptContext) {
var newRecord = scriptContext.newRecord;
var recordId = newRecord.id;
var recordType = newRecord.type;
// Look up the 'tranid' field from the saved record
var lookupResult = search.lookupFields({
type: recordType,
id: recordId,
columns: ['tranid']
});
var transactionId = lookupResult.tranid;
log.debug('Transaction ID (lookup)', transactionId);
// Further processing using transactionId
}
return { afterSubmit: afterSubmit };
});**Traitement asynchrone avec des scripts planifiés ou Map/Reduce
(SuiteScript 2.x) :**
Si la disponibilité immédiate de l’identifiant de transaction n’est pas critique, ou si le traitement ultérieur est gourmand en ressources ou implique des ensembles de données volumineux, envisagez une approche asynchrone. Cela décharge le traitement vers l’exécution d’un script distinct, évitant ainsi les retards dans l’interface utilisateur.
- Script planifié : Pour les tâches asynchrones générales, un script planifié SuiteScript 2.x peut être déclenché afin de traiter l’enregistrement une fois celui-ci entièrement validé. Le script
afterSubmit
se contenterait de mettre la tâche en file d’attente pour le script planifié.
- Script Map/Reduce : Pour le traitement de grands volumes de données, un script Map/Reduce est le framework SuiteScript 2.x recommandé. Le script
afterSubmit
pourrait lancer une tâche Map/Reduce en lui transmettant l’ID de l’enregistrement en vue d’un traitement ultérieur.
- Script planifié : Pour les tâches asynchrones générales, un script planifié SuiteScript 2.x peut être déclenché afin de traiter l’enregistrement une fois celui-ci entièrement validé. Le script
Support expert NetSuite
Besoin d’aide pour cet enjeu NetSuite ?
Accompagnement-conseil et configuration pour Développement SuiteScript
