ANS-0387 · DéVELOPPEMENT SUITESCRIPT
Comment accéder aux valeurs des champs d’une fiche fournisseur dans SuiteScript 2.x après la soumission (« afterSubmit »)
Comprenez pourquoi l'accès direct aux enregistrements dans les scripts afterSubmit de SuiteScript 2.x peut s'avérer peu fiable et découvrez la méthode appropriée pour récupérer les données de champs persistantes.
Solution courte
Dans SuiteScript 2.x, l’objet `newRecord` d’un script d’événement utilisateur `afterSubmit` est en lecture seule. Pour accéder de manière fiable aux valeurs des champs de l’enregistrement persistant, en particulier pour les champs susceptibles d’être modifiés par d’autres scripts ou workflows lors de la soumission, utilisez N/search.lookupFields ou record.lookupFields afin de récupérer les données directement à partir de l’enregistrement sauvegardé.
Scénario
Lorsque vous tentez de récupérer les valeurs des champs d’un enregistrement « Fournisseur » dans un script d’événement utilisateur « afterSubmit » dans NetSuite, l’accès direct via record.getValue() sur l’objet context.newRecord peut ne pas toujours fournir les données persistantes les plus récentes ou les plus fiables. Cela s’explique par le fait que l’objet newRecord, dans ce contexte, est en lecture seule et représente l’enregistrement tel qu’il a été soumis, et non nécessairement son état final après l’exécution de tous les processus système et autres scripts.
Solution
Pour garantir une récupération précise des valeurs des champs d’un enregistrement « Fournisseur » (ou de tout autre type d’enregistrement) dans un script d’événement utilisateur « afterSubmit », il est recommandé d’effectuer une recherche sur l’enregistrement persisté plutôt que de se fier uniquement à l’objet « context.newRecord », qui est en lecture seule. Cette approche garantit que les valeurs récupérées reflètent l’état de l’enregistrement après qu’il a été entièrement enregistré et traité.
Récupérez l’identifiant interne de l’enregistrement à partir de
context.newRecord.Utilisez
N/search.lookupFields(ourecord.lookupFieldssi le type d’enregistrement est connu et que vous disposez de l’identifiant de l’enregistrement) pour interroger l’enregistrement persisté afin d’obtenir les valeurs de champ souhaitées.Exemple d’utilisation de N/search.lookupFields :
javascript
/**
* @NApiVersion 2.x
* @NScriptType UserEventScript
*/
define(['N/search', 'N/record'], function(search, record) {
function afterSubmit(context) {
if (context.type === context.UserEventType.CREATE || context.type === context.UserEventType.EDIT) {
var vendorId = context.newRecord.id;
var vendorType = context.newRecord.type;
// Lookup specific fields from the persisted record
var lookedUpFields = search.lookupFields({
type: vendorType,
id: vendorId,
columns: ['entityid', 'companyname', 'email'] // Replace with actual field IDs
});
var vendorName = lookedUpFields.entityid;
var companyName = lookedUpFields.companyname;
var vendorEmail = lookedUpFields.email;
// Further processing with the retrieved values
// log.debug('Vendor Name', vendorName);
// log.debug('Company Name', companyName);
// log.debug('Vendor Email', vendorEmail);
}
}
return {
afterSubmit: afterSubmit
};
});Cette méthode garantit que le script accède aux données les plus récentes et les plus fiables pour le traitement post-soumission.
Support expert NetSuite
Besoin d’aide pour cet enjeu NetSuite ?
Accompagnement-conseil et configuration pour Développement SuiteScript
