ANS-1387 · DéVELOPPEMENT SUITESCRIPT
Comment renvoyer correctement des enregistrements NetSuite après un premier échec du script ?
Les scripts NetSuite peuvent rencontrer des problèmes lorsqu’ils tentent de modifier et de renvoyer un enregistrement après un échec de soumission initial, ce qui nécessite souvent la création d’une nouvelle instance d’enregistrement afin de contourner d’éventuels problèmes de mise en cache ou de conservation d’état.
Solution courte
Lorsqu’une soumission d’enregistrement NetSuite échoue via un script, les tentatives ultérieures de modification et de resoumission du même objet d’enregistrement peuvent ne pas aboutir en raison de la mise en cache interne. L'approche recommandée consiste à créer une nouvelle instance d'enregistrement à l'aide de la fonction GA_KEEP_0001 de SuiteScript 2.x, à la remplir avec les données nécessaires, puis à soumettre ce nouvel objet à l'aide de `record.save()` afin de garantir la réussite du traitement.
Scénario
Lorsque vous tentez de modifier et de renvoyer un enregistrement NetSuite à l’aide d’un script après un échec de soumission initial, le système peut conserver l’erreur d’origine, même si les propriétés de l’enregistrement semblent avoir été mises à jour dans le débogueur. Ce comportement suggère l’existence d’un mécanisme de mise en cache sous-jacent ou d’un problème d’état empêchant le traitement correct de l’enregistrement modifié.
Solution
Lorsqu’un script tente de modifier et de renvoyer un enregistrement après un échec de soumission précédent, le simple fait de remplacer les propriétés de l’objet d’enregistrement existant peut s’avérer insuffisant. Le traitement interne de NetSuite, pouvant impliquer la mise en cache, peut entraîner la persistance de l’erreur d’origine dans le système. Pour garantir le succès de la nouvelle soumission, il est nécessaire de créer une nouvelle instance d’enregistrement.
L’approche recommandée consiste à :
Charger le module
N/recorddans votre script SuiteScript 2.x.
Créer un nouvel objet d’enregistrement à l’aide de
record.create(). Cela garantit une nouvelle instance d’enregistrement, en contournant tout état mis en cache issu de tentatives précédentes ayant échoué.
Remplir ce nouvel objet d’enregistrement avec toutes les données nécessaires.
Soumettre le nouvel enregistrement à l’aide de
record.save(). Cette opération consomme des unités de gouvernance, dont le coût varie en fonction du type d’enregistrement (par exemple, enregistrements de transaction personnalisés ou standard).
Exemple de création et d’enregistrement d’un nouvel enregistrement à l’aide de SuiteScript 2.x :
javascript
// Ensure the 'record' module is loaded, e.g., define(['N/record'], function(record) { ... });
// Create a new record instance
var newSurvey = record.create({
type: SURVEY_TYPE
});
// Populate newSurvey with necessary field values from the original failed record or new data
// For example: newSurvey.setValue({ fieldId: 'name', value: 'New Survey Name' });
// Submit the new record
var newSurveyId = newSurvey.save();Il est également recommandé de vérifier l’existence et le statut actif des enregistrements associés (tels que les contacts ou les clients) avant de tenter de soumettre l’enregistrement principal, ce qui permet d’éviter les échecs de soumission courants.
Support expert NetSuite
Besoin d’aide pour cet enjeu NetSuite ?
Accompagnement-conseil et configuration pour Développement SuiteScript
