ANS-0870 · DéVELOPPEMENT SUITESCRIPT

Comment définir la valeur d’un champ de date personnalisé dans NetSuite SuiteScript 2.x

Découvrez la méthode SuiteScript 2.x appropriée pour mettre à jour par programmation les champs de date personnalisés des enregistrements NetSuite et vous assurer que les modifications sont bien enregistrées.

Solution courte

Pour définir un champ de date personnalisé dans SuiteScript 2.x, utilisez `record.setValue({ fieldId: 'your_field_id', value: new Date() })` sur un objet d'enregistrement chargé ou créé. N'oubliez jamais d'enregistrer l'objet à l'aide de `record.save()` après avoir défini les valeurs des champs afin de conserver les modifications ; en effet, si vous oubliez de valider l'objet, les modifications ne seront pas appliquées.

Scénario

Un utilisateur doit mettre à jour par programmation un champ de date personnalisé dans un enregistrement NetSuite à l’aide de SuiteScript. Il rencontre des difficultés pour définir correctement la valeur du champ et s’assurer que les modifications sont bien enregistrées dans l’enregistrement.

Solution

La procédure permettant de définir la valeur d’un champ de date personnalisé dans SuiteScript 2.x consiste à charger ou à créer l’enregistrement cible, à utiliser la méthode record.setValue(options) avec le type de données approprié, puis à enregistrer l’enregistrement pour que les modifications soient prises en compte.

  1. Commencez par obtenir une référence à l’objet d’enregistrement. Pour ce faire, il suffit généralement de charger un enregistrement existant à l’aide de record.load() ou d’en créer un nouveau avec record.create() à partir du module N/record.

  2. Pour définir la valeur d’un champ de date personnalisé, utilisez la méthode record.setValue(). Il est essentiel de fournir un objet JavaScript Date comme valeur ; toute tentative d’attribuer une chaîne de caractères (par exemple, « hello ») à un champ de date entraînera une erreur INVALID_FLD_VALUE.

  3. Une fois la valeur du champ définie, l’enregistrement doit être explicitement enregistré à l’aide de record.save() pour que les modifications soient prises en compte dans NetSuite.L'exemple SuiteScript 2.x suivant montre comment charger un enregistrement, définir un champ de date personnalisé (custevent_assignee_email_date) sur la date du jour, puis enregistrer l'enregistrement :

javascript/** * @NApiVersion 2.x * @NScriptType UserEventScript */define(['N/record', 'N/log'], function(record, log) {    function afterSubmit(context) {        if (context.type === context.UserEventType.CREATE || context.type === context.UserEventType.EDIT) {            try {                // Load the current record in dynamic mode to easily set values                var currentRecord = record.load({                    type: context.newRecord.type,                    id: context.newRecord.id,                    isDynamic: true                });                // Set the custom date field 'custevent_assignee_email_date' with a Date object                // Note: Setting a string like 'hello' to a date field will cause an INVALID_FLD_VALUE error.                currentRecord.setValue({                    fieldId: 'custevent_assignee_email_date',                    value: new Date() // Sets the field to the current date and time                });                // Save the record to persist the changes                var recordId = currentRecord.save();                log.debug('Record Update', 'Record ID: ' + recordId + ' updated with new date for custevent_assignee_email_date.');            } catch (e) {                log.error('Error setting custom date field', e.toString());            }        }    }    return {        afterSubmit: afterSubmit    };});

Support expert NetSuite

Besoin d’aide pour cet enjeu NetSuite ?

Accompagnement-conseil et configuration pour Développement SuiteScript

Parler à un consultant