L'attribut de méthode projet "Exécuter sur serveur" peut être défini dans la boîte de dialogue de modification globale des attributs ou dans la boîte de dialogue des propriétés de la méthode :
![](../../picture/69133/pict69133.fr.png)
Lorsque cette option est cochée, la méthode projet est toujours exécutée sur le serveur, quel que soit le mode d’appel de la méthode.
Note : Cet attribut est pris en compte uniquement dans le cadre d’une application 4D exécutée en client/serveur.
Lorsque cet attribut est coché, le contexte d’exécution de la méthode projet est comparable à celui des triggers (cf. section 4D Server et le langage 4D) : la méthode sur le serveur partage le même contexte de base de données que le contexte correspondant côté client pour le verrouillage d’enregistrements et les transactions, mais pas le même contexte de langage (variables process, ensembles, sélections courantes). Toutefois, à la différence d'un trigger, la méthode exécutée sur le serveur ne partage pas l'enregistrement courant avec le contexte du client.
Tous les paramètres de la méthode ($1, $2, etc.) sont envoyés sur le serveur et la valeur du paramètre $0, s’il est utilisé, est retournée sur le client.
A la différence de la commande Executer sur serveur, cette option ne provoque pas de création de process sur le serveur. 4D Server utilise le process "jumeau" du process client qui a demandé l’exécution.
En outre, cette option simplifie le principe de délégation de l’exécution d’une méthode sur le serveur car le transfert des paramètres s’effectue automatiquement dans les deux sens, comme pour un appel de méthode "normal".
La commande Executer sur serveur, elle, a un fonctionnement asynchrone et requiert donc davantage de programmation et le recours aux sémaphores pour la lecture des résultats.
Les méthodes ayant l'attribut "Exécuter sur serveur" sont soumises aux mêmes règles que les procédures stockées en matière d'usage des commandes du langage 4D. L'exécution de certaines commandes est interdite sur le serveur, d'autres sont déconseillées. Pour plus d'informations, reportez-vous au paragraphe "Que ne peut pas faire une procédure stockée (exécutée sur le serveur) ?" dans la section Procédures stockées.
Si vous passez un pointeur sur une variable (variable simple, tableau ou élément de tableau), la valeur pointée est également envoyée sur le serveur. Si la valeur pointée est modifiée sur le serveur par la méthode, la valeur modifiée est retournée sur le client pour mise à jour de la variable correspondante côté client.
Les pointeurs sur une table ou un champ sont envoyés sous forme de référence (numéro de table, numéro de champ). La valeur de l’enregistrement courant n’est pas échangée automatiquement.
Note : L’option fonctionne de la même manière en mode interprété et en mode compilé.
Voici le code la méthode projet Monappli ayant l’attribut "Exécuter sur serveur" :
Côté client, l’appel de la méthode s’effectue ainsi :
TABLEAU TEXTE(monTab;0)
$vlnombre :=MonAppli(->[Table_1] ;->[Table_1]Champ_1 ;->monTab;"à trouver")