ANS-1230 · DéVELOPPEMENT SUITESCRIPT
Comment résoudre l’erreur « Valeur de champ non valide » lors de la configuration de champs de date dans les scripts NetSuite ?
Ce guide explique comment définir correctement les valeurs de date et d'heure dans les enregistrements personnalisés de NetSuite à l'aide de SuiteScript 2.x, en évitant les erreurs de formatage courantes.
Solution courte
Pour résoudre l’erreur « Valeur de champ non valide » lors de la définition d’un champ de date dans NetSuite SuiteScript, veillez à utiliser formatModule.parse plutôt que formatModule.format lorsque vous convertissez un objet de date en chaîne de caractères pour l’affecter à un champ. La méthode format sert à l’affichage, tandis que la méthode parse sert à préparer les valeurs destinées aux champs d’enregistrement.
Scénario
Un utilisateur qui tente de définir un champ de date/heure dans un enregistrement personnalisé NetSuite via SuiteScript peut rencontrer une erreur « Valeur de champ non valide ». Cela se produit généralement lorsqu’un script tente d’attribuer une chaîne de caractères de date à un champ en utilisant une méthode de formatage incorrecte, ce qui entraîne une incompatibilité entre le type de champ attendu et la valeur fournie.
Solution
L'erreur « Valeur de champ non valide » survient lorsque la méthode formatModule.format est utilisée de manière incorrecte pour préparer une chaîne de date destinée à un champ d'enregistrement. La méthode format est destinée à l’affichage des dates, et non à la définition des valeurs de champ. Pour définir correctement un champ de date/heure, il convient d’utiliser à la place la méthode formatModule.parse. L’extrait de code problématique est présenté ci-dessous :
var formattedDateString = formatModule.format({value: new Date(), type: formatModule.Type.DATETIME});settlementRecord.setValue({fieldId: 'custrecord_gs_settlement_dateprocessed', value: formattedDateString});Cela entraîne l’erreur suivante :Vous avez saisi une valeur de champ non valide 28/11/2018 15 h 45 min 53 s pour le champ suivant : custrecord_gs_settlement_dateprocessed. La bonne approche consiste à utiliser formatModule.parse afin de garantir que la chaîne de date soit dans un format acceptable pour le champ NetSuite. La ligne corrigée doit être la suivante :
var formattedDateString = formatModule.parse({value: new Date(), type: formatModule.Type.DATETIME});En remplaçant .format par .parse, le script traitera correctement la valeur de date et l’attribuera au champ custrecord_gs_settlement_dateprocessed.
Support expert NetSuite
Besoin d’aide pour cet enjeu NetSuite ?
Accompagnement-conseil et configuration pour Développement SuiteScript
