ANS-0604 · DéVELOPPEMENT SUITESCRIPT

Pourquoi le « Post Sourcing » se déclenche-t-il plusieurs fois lors de la sélection d’un poste de commande dans NetSuite ?

Les colonnes personnalisées « Liste filtrée » / « Enregistrement » des sous-listes peuvent provoquer plusieurs déclenchements inattendus de l'événement « Post Sourcing » dans NetSuite.

Solution courte

L'événement `post_sourcing` de NetSuite se déclenche plusieurs fois lors de la sélection d'un poste existant en raison des colonnes personnalisées « Liste »/« Enregistrement » filtrées par la colonne « Article ». Ces champs personnalisés réévaluent les filtres et remplissent à nouveau les valeurs, ce qui redéclenche l'événement de sourcing. Une solution courante consiste à déplacer la logique associée vers l’événement `fieldChange`.

Scénario

Les utilisateurs constatent que l’événement `post_sourcing` est déclenché plusieurs fois lorsqu’un poste existant est sélectionné dans une sous-liste de transaction. Ce comportement peut entraîner des exécutions de script inattendues ou des problèmes de performances. Ce problème survient plus particulièrement lorsque la sous-liste contient des champs personnalisés.

Solution

Le support technique de NetSuite a confirmé que ce comportement est normal. L'événement « Post Sourcing » est déclenché plusieurs fois lorsqu'une ligne existante est sélectionnée, en raison de champs personnalisés configurés pour filtrer les valeurs qu'ils afficheront. Concrètement, en arrière-plan, après qu’un champ personnalisé a filtré les valeurs attendues qu’il va remplir, il attribue ensuite ces valeurs au champ de type « Liste/Enregistrement » ; comme ces champs font l’objet d’un sourcing, l’événement « Post Sourcing » est alors déclenché. Ainsi, dès qu’une ligne est sélectionnée, le champ personnalisé vérifie à nouveau ses filtres afin de déterminer les valeurs à afficher, ce qui entraîne des déclenchements répétés de l’événement post_sourcing. Bien que la suppression du filtrage sur ces colonnes personnalisées empêcherait ces déclenchements multiples, cela nécessiterait d’appeler plusieurs recherches enregistrées (une pour chaque colonne filtrée) à chaque fois qu’une ligne est sélectionnée afin de filtrer correctement les champs par script, ce qui pourrait entraîner une complexité importante ou une perte de performances. Une solution de contournement recommandée consiste actuellement à déplacer la logique associée de l’événement GA_KEEP_0002 vers l’événement fieldChange, car fieldChange n’est pas appelé plusieurs fois dans ce scénario. Cette approche peut comporter un risque de problèmes de synchronisation potentiels en fonction de la mise en œuvre spécifique.

Support expert NetSuite

Besoin d’aide pour cet enjeu NetSuite ?

Accompagnement-conseil et configuration pour Développement SuiteScript

Parler à un consultant