ANS-0881 · DéVELOPPEMENT SUITESCRIPT

La fonction nlapiYieldScript fonctionne-t-elle de manière fiable avec les blocs Try/Catch dans SuiteScript 1.0 ?

Lorsque vous utilisez nlapiYieldScript dans SuiteScript 1.0, les erreurs survenant au sein des blocs try...catch peuvent empêcher la replanification correcte du script en raison d'échecs de sérialisation.

Solution courte

Non, la fonction nlapiYieldScript de SuiteScript 1.0 peut ne pas réussir à replanifier l'exécution si une erreur est levée au sein d'un bloc try...catch, souvent en raison d'une impossibilité de sérialiser l'objet nlobjError. Pour garantir une gestion fiable des erreurs et une exécution différée, il est recommandé d’éviter d’utiliser nlapiYieldScript et de mettre en œuvre des mécanismes de reprogrammation standard, ou de passer aux scripts Map/Reduce de SuiteScript 2.x ou au module N/task.

Scénario

Les développeurs utilisant nlapiYieldScript dans des scripts planifiés sous SuiteScript 1.0 peuvent rencontrer des problèmes lorsqu’ils tentent de gérer les erreurs à l’aide de blocs try...catch. Plus précisément, si une erreur est levée pendant l’exécution du script, nlapiYieldScript peut ne pas parvenir à replanifier le script, ce qui entraîne l’affichage du message « ERREUR INATTENDUE : Échec de la sérialisation du script planifié : nlobjError ». Ce problème survient car le script ne parvient pas à sérialiser correctement l’objet d’erreur en vue de la replanification.

Solution

Pour remédier au manque de fiabilité de nlapiYieldScript avec les blocs try...catch dans SuiteScript 1.0, notamment en ce qui concerne la sérialisation des erreurs lors de la reprogrammation, la solution recommandée consiste à éviter d’utiliser nlapiYieldScript. Les développeurs doivent plutôt mettre en œuvre les pratiques standard de reprogrammation des scripts.Pour SuiteScript 1.0, cela signifie :

  1. Vérifiez manuellement l’utilisation de la gouvernance des scripts.

  2. Si les limites de gouvernance sont proches d’être atteintes, replanifiez explicitement le script à l’aide de nlapiScheduleScript afin de garantir une exécution correcte sans vous appuyer sur le mécanisme de cession de nlapiYieldScript, qui peut poser des problèmes en cas d’erreurs.Pour le développement NetSuite actuel, il est vivement recommandé de passer à SuiteScript 2.x, qui offre des méthodes plus robustes et plus fiables pour la gestion des grands ensembles de données et la cession de scripts :

  3. Type de script Map/Reduce

    Ce type de script est spécialement conçu pour traiter de grands volumes de données, en gérant automatiquement la cession et la replanification à chaque étape distincte.

  4. Module N/task

    Pour un contrôle plus fin de l’exécution et de la replanification des scripts, le module N/task fournit des fonctions permettant de créer et de soumettre des tâches de script planifiées, ce qui offre un contrôle explicite sur la poursuite de l’exécution du script et la gestion des erreurs.Ces approches de SuiteScript 2.x offrent un environnement plus stable pour la gestion des erreurs grâce aux blocs try...catch, atténuant ainsi les problèmes de sérialisation associés à nlapiYieldScript.

Support expert NetSuite

Besoin d’aide pour cet enjeu NetSuite ?

Accompagnement-conseil et configuration pour Développement SuiteScript

Parler à un consultant