Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Dexterity est conçu pour vous permettre de créer des applications qui peuvent être facilement traduites et personnalisées sans nécessiter de modifications ni d’accès au code source réel. Pour activer cette flexibilité, vous devez vous assurer que tout texte qu’un utilisateur peut voir n’est pas codé en dur dans des scripts.
S’applique à : Microsoft Dynamics GP
Numéro de la base de connaissances d’origine : 943178
Plus d’informations
Étant donné qu’une chaîne codée en dur dans un script ne peut pas être modifiée sans modifier le code source lui-même, Dexterity génère un message d’avertissement de compilateur de chaîne littérale lorsqu’une chaîne codée en dur est utilisée dans un script. Dexterity vous permet de créer une ressource de message distincte que vous pouvez utiliser au lieu d’une chaîne codée en dur ou d’une chaîne littérale. Vous trouverez des messages sous Ressources de base dans la fenêtre Explorateur de ressources Dexterity.
Lorsque vous créez un message, vous devez fournir un ID de message. Ensuite, vous devez fournir le texte du message. Pour vous assurer que les messages sont extraits lors de la création d’un fichier de bloc de distribution, l’ID de message doit être de 22 000 ou plus pour un produit tiers.
Vous pouvez récupérer des messages dans le code à l’aide de la getmsg()
fonction. Vous pouvez également incorporer des espaces réservés dans un message. Vous pouvez utiliser les espaces réservés pour remplacer les chaînes basées sur des données ou sur des valeurs calculées. Ces espaces réservés ou marqueurs de remplacement sont affichés sous la forme %1, %2, %3, et ainsi de suite. Lorsque vous utilisez les espaces réservés ou les marqueurs de remplacement, vous pouvez utiliser la commande de remplacement pour remplacer les espaces réservés par une ou plusieurs valeurs.
Vous pouvez également utiliser un jeton spécial avec des messages pour afficher automatiquement un nom de produit basé sur l’ID de produit qui apparaît dans le fichier de lancement Dynamics.set. Si vous incluez le @PROD<ProdID>@
jeton dans un message, le nom du produit apparaît dans le message. Par exemple, le code suivant utilise automatiquement ce type de jeton :
local string l_message;
l_message = getmsg(22000) {@PROD0@ cannot find customer %1.};
substitute l_message, 'Customer Number';
warning l_message;
Pour le premier client de la société de leçon, ce code entraîne l’affichage du message suivant :
Microsoft Dynamics GP ne peut pas trouver de AARONFIT0001 client.
Lorsque vous écrivez du code qui contient du code SQL direct, du code Dexterity SanScript compilé au runtime, des inscriptions de déclencheurs inter-dictionnaires, des fichiers macro créés par le runtime ou des messages d’avertissement pour le développeur, vous pouvez utiliser des chaînes codées en dur sans recevoir d’avertissements du compilateur sur les chaînes littérales. Dans ce cas, ces chaînes codées en dur ne sont pas traduites. L’utilisateur final ne voit pas ces chaînes.
Dans ce cas, vous pouvez utiliser une directive de pré-compilateur pragma spéciale pour activer et désactiver les avertissements. Pour ce faire, utilisez les lignes suivantes avant et après les chaînes littérales acceptables dans votre code :
pragma(disable warning LiteralStringUsed);
{turn off compiler generated string warnings}
if Trigger_RegisterProcedure(script 'Add_Successful_Login_Record', TRIGGER_AFTER_ORIGINAL, script Set_Environment) <> SY_NOERR then
warning "Log on procedure trigger registration failed.";
end if;
pragma(enable warning LiteralStringUsed);
{turn on compiler generated string warnings}
Remarque
Si vous n’activez pas les avertissements avant la fin du script, le compilateur affiche le message suivant :
Remarque : l’avertissement « LiteralStringUsed » a été désactivé sans être réactivé.
Si vous avez d’autres chaînes qui ne sont pas visibles par l’utilisateur et qui ne nécessitent pas de traduction, nous vous recommandons d’ajouter ces chaînes en tant que constantes au niveau du formulaire ou au niveau global. Ensuite, vous pouvez utiliser la constante dans le script sans générer d’avertissement.
Une option finale consiste à utiliser un paramètre Dex.ini pour désactiver les avertissements pour tous les scripts. Bien que cette option empêche les avertissements relatifs aux chaînes littérales, l’option n’encourage pas d’autres personnes à gérer les chaînes littérales dans des scripts en fonction des meilleures pratiques établies. Nous vous recommandons d’utiliser les autres techniques décrites par cet article au lieu d’utiliser ce paramètre. Voici le paramètre :
CompilerWarningLevel=2
références
Pour plus d’informations sur la getmsg()
commande et la commande de remplacement dans la référence SanScript Dexterity, consultez le chapitre 18 : Messages dans le volume 1 du Guide du programmeur de dexterity.
Pour plus d’informations sur l’utilisation de Dexterity pour écrire du code international et multilingue dans Microsoft Dynamics GP, consultez Instructions pour écrire du code qui peut être facilement traduit et qui peut être exécuté dans plusieurs langues dans Dexterity dans Microsoft Dynamics GP.