Voulez-vous que cela fonctionne au moment de l'affichage ou de la modification de l'enregistrement? Ils ont des scripts légèrement différents. Je vais supposer que vous voulez que le bouton fonctionne lorsque l'enregistrement est en cours d'affichage, mais je l'écrirai pour que cela fonctionne même lorsque le document est en cours d'édition. La partie la plus difficile de la façon dont Netsuite l'a configuré est qu'il nécessite deux scripts, un script d'événement utilisateur et un script client. La façon dont @michoel suggère peut fonctionner aussi ... Je n'ai jamais inséré le script par le texte avant personnellement cependant. Je vais essayer ça peut-être aujourd'hui.
Voici un événement utilisateur que vous pouvez utiliser (ne l'avez pas testé moi-même, donc vous devriez le faire passer par un test avant de le déployer pour tout le monde). Utilisez-le en tant que fichier Suitescript pour un script d'événement utilisateur. Définissez la fonction Avant chargement dans la page de script sur userEvent_beforeLoad. Assurez-vous de le déployer dans l'enregistrement sur lequel vous voulez l'exécuter.
Voici le script client qui va avec.
function openURL()
{
/*
nlapiGetFieldValue() gets the url client side in a changeable field, which nlapiLookupField (which looks it up server side) can't do
if your url is hidden/unchanging or you only care about view mode, you can just get rid of the below and use nlapiLookupField() instead
*/
var url = nlapiGetFieldValue('custbody_url');
/*
nlapiGetFieldValue() doesn't work in view mode (it returns null), so we need to use nlapiLookupField() instead
if you only care about edit mode, you don't need to use nlapiLookupField so you can ignore this
*/
if(url == null)
{
var myType = nlapiGetRecordType();
var myId = nlapiGetRecordId();
url = nlapiLookupField(myType, myId,'custbody_url');
}
//opening up the url
window.open(url);
}
Ajouter comme un script client, mais ne font pas de déploiements (l'utilisateur script d'événement se joindre à la forme pour vous). Assurez-vous que ce script a l'ID customscript_my_client_script (ou quel que soit l'ID de script utilisé dans le script d'événement utilisateur dans form.setScript()), sinon cela ne fonctionnera pas. Une autre chose à garder à l'esprit est que chaque enregistrement ne peut avoir qu'un seul script ajouté à l'aide de form.setScript() (je pense?) Donc vous pouvez intituler le script d'événement utilisateur et le script client quelque chose en relation avec le forme que vous déployez sur. L'utilisation de form.setScript est équivalente à la définition de la valeur du script lorsque vous vous trouvez dans le menu Personnaliser le formulaire. Si vous pouvez faire fonctionner la réponse de @ michoel, cela peut aller mieux parce que vous gardez la logique tout en un script qui (de mon point de vue) facilite la gestion de vos scripts.
Cela ouvre une page blanche pour moi.Même lorsque j'essaie d'ajouter: 'var rec = nlapiLoadRecord ('vendorbill', nlapiGetRecordId()); var url = rec.getFieldValue ('custbody_url'); ' et essayer d'ouvrir cette page, il ne fait rien et reste sur la page – bluejay92