# Exemple de mise en oeuvre

Exemple de mise en place d’une source de données externe alimentant un modèle OpenProd à partir d’une table SQL distante contenant des clients ou des tiers.

# Exemple

1. **Créer la configuration de connexion**  
    Créer une configuration nommée par exemple <span class="_inlineMarkdown_x0d1c_75 inline-markdown text-size-chat-sm font-mono blend bg-token-text-code-block-background rounded-sm px-1.5 py-0.5 leading-none extension:bg-token-foreground/10 electron:bg-token-list-hover-background/60">ERP secondaire - PostgreSQL ou SQL Server</span> avec :

- Connecteur : <span class="_inlineMarkdown_x0d1c_75 inline-markdown text-size-chat-sm font-mono blend bg-token-text-code-block-background rounded-sm px-1.5 py-0.5 leading-none extension:bg-token-foreground/10 electron:bg-token-list-hover-background/60">PostgreSQL</span>
- Serveur : <span class="_inlineMarkdown_x0d1c_75 inline-markdown text-size-chat-sm font-mono blend bg-token-text-code-block-background rounded-sm px-1.5 py-0.5 leading-none extension:bg-token-foreground/10 electron:bg-token-list-hover-background/60">10.0.0.15</span>
- Port : <span class="_inlineMarkdown_x0d1c_75 inline-markdown text-size-chat-sm font-mono blend bg-token-text-code-block-background rounded-sm px-1.5 py-0.5 leading-none extension:bg-token-foreground/10 electron:bg-token-list-hover-background/60">5432</span>
- Base : <span class="_inlineMarkdown_x0d1c_75 inline-markdown text-size-chat-sm font-mono blend bg-token-text-code-block-background rounded-sm px-1.5 py-0.5 leading-none extension:bg-token-foreground/10 electron:bg-token-list-hover-background/60">erp\_reporting</span>
- Utilisateur : compte de lecture dédié

- Connecteur : <span class="_inlineMarkdown_x0d1c_75 inline-markdown text-size-chat-sm font-mono blend bg-token-text-code-block-background rounded-sm px-1.5 py-0.5 leading-none extension:bg-token-foreground/10 electron:bg-token-list-hover-background/60">SQL Server</span>
- Serveur : <span class="_inlineMarkdown_x0d1c_75 inline-markdown text-size-chat-sm font-mono blend bg-token-text-code-block-background rounded-sm px-1.5 py-0.5 leading-none extension:bg-token-foreground/10 electron:bg-token-list-hover-background/60">10.0.0.16</span>
- Port : 1433
- Base : <span class="_inlineMarkdown_x0d1c_75 inline-markdown text-size-chat-sm font-mono blend bg-token-text-code-block-background rounded-sm px-1.5 py-0.5 leading-none extension:bg-token-foreground/10 electron:bg-token-list-hover-background/60">erp\_exemple</span>
- Utilisateur : compte de lecture dédié

**2. Créer la source de données**  
Créer une source nommée <span class="_inlineMarkdown_x0d1c_75 inline-markdown text-size-chat-sm font-mono blend bg-token-text-code-block-background rounded-sm px-1.5 py-0.5 leading-none extension:bg-token-foreground/10 electron:bg-token-list-hover-background/60">Clients externes</span> puis associer la configuration précédente.

**3. Saisir la requête SQL**  
Exemple :  
<span class="_inlineMarkdown_x0d1c_75 inline-markdown text-size-chat-sm font-mono blend bg-token-text-code-block-background rounded-sm px-1.5 py-0.5 leading-none extension:bg-token-foreground/10 electron:bg-token-list-hover-background/60">SELECT customer\_name AS Name, customer\_code AS test, city AS test2, last\_update FROM customer\_export WHERE active = true</span>

Dans cet exemple, la colonne <span class="_inlineMarkdown_x0d1c_75 inline-markdown text-size-chat-sm font-mono blend bg-token-text-code-block-background rounded-sm px-1.5 py-0.5 leading-none extension:bg-token-foreground/10 electron:bg-token-list-hover-background/60">Name</span> alimente automatiquement le champ <span class="_inlineMarkdown_x0d1c_75 inline-markdown text-size-chat-sm font-mono blend bg-token-text-code-block-background rounded-sm px-1.5 py-0.5 leading-none extension:bg-token-foreground/10 electron:bg-token-list-hover-background/60">x\_name</span> du modèle généré.  
Les colonnes <span class="_inlineMarkdown_x0d1c_75 inline-markdown text-size-chat-sm font-mono blend bg-token-text-code-block-background rounded-sm px-1.5 py-0.5 leading-none extension:bg-token-foreground/10 electron:bg-token-list-hover-background/60">test</span> et <span class="_inlineMarkdown_x0d1c_75 inline-markdown text-size-chat-sm font-mono blend bg-token-text-code-block-background rounded-sm px-1.5 py-0.5 leading-none extension:bg-token-foreground/10 electron:bg-token-list-hover-background/60">test2</span> deviendront respectivement <span class="_inlineMarkdown_x0d1c_75 inline-markdown text-size-chat-sm font-mono blend bg-token-text-code-block-background rounded-sm px-1.5 py-0.5 leading-none extension:bg-token-foreground/10 electron:bg-token-list-hover-background/60">x\_test</span> et <span class="_inlineMarkdown_x0d1c_75 inline-markdown text-size-chat-sm font-mono blend bg-token-text-code-block-background rounded-sm px-1.5 py-0.5 leading-none extension:bg-token-foreground/10 electron:bg-token-list-hover-background/60">x\_test2</span>.

**4. Prévisualiser**  
Utiliser le bouton <span class="_inlineMarkdown_x0d1c_75 inline-markdown text-size-chat-sm font-mono blend bg-token-text-code-block-background rounded-sm px-1.5 py-0.5 leading-none extension:bg-token-foreground/10 electron:bg-token-list-hover-background/60">Prévisualiser la requête</span> pour vérifier que les colonnes exposées, les libellés et les lignes retournées correspondent au besoin.

**5. Générer le modèle OpenProd**  
Cliquer sur <span class="_inlineMarkdown_x0d1c_75 inline-markdown text-size-chat-sm font-mono blend bg-token-text-code-block-background rounded-sm px-1.5 py-0.5 leading-none extension:bg-token-foreground/10 electron:bg-token-list-hover-background/60">Créer ou mettre à jour le modèle et l’interface</span>.  
Le module crée alors un modèle manuel du type <span class="_inlineMarkdown_x0d1c_75 inline-markdown text-size-chat-sm font-mono blend bg-token-text-code-block-background rounded-sm px-1.5 py-0.5 leading-none extension:bg-token-foreground/10 electron:bg-token-list-hover-background/60">x\_external\_clients\_externes</span> avec les champs nécessaires et l’interface OpenProd associée.

**6. Charger les données**  
Cliquer sur <span class="_inlineMarkdown_x0d1c_75 inline-markdown text-size-chat-sm font-mono blend bg-token-text-code-block-background rounded-sm px-1.5 py-0.5 leading-none extension:bg-token-foreground/10 electron:bg-token-list-hover-background/60">Charger ou recharger les données</span> pour importer les lignes dans le modèle généré, puis ouvrir la liste avec le bouton dédié.

**7. Variante incrémentale**  
Si la table source contient une date de modification, la requête peut être adaptée avec <span class="_inlineMarkdown_x0d1c_75 inline-markdown text-size-chat-sm font-mono blend bg-token-text-code-block-background rounded-sm px-1.5 py-0.5 leading-none extension:bg-token-foreground/10 electron:bg-token-list-hover-background/60">%date</span> après une première synchronisation réussie.

# Utilisation dans une action serveur

Il est possible d'utiliser un enregistrement du module directement dans une action serveur.

La méthode à utiliser est <span class="_inlineMarkdown_x0d1c_75 inline-markdown text-size-chat-sm font-mono blend bg-token-text-code-block-background rounded-sm px-1.5 py-0.5 leading-none extension:bg-token-foreground/10 electron:bg-token-list-hover-background/60">mf\_execute</span>, qui attend comme paramètres une requête SQL via <span class="_inlineMarkdown_x0d1c_75 inline-markdown text-size-chat-sm font-mono blend bg-token-text-code-block-background rounded-sm px-1.5 py-0.5 leading-none extension:bg-token-foreground/10 electron:bg-token-list-hover-background/60">query</span>, des paramètres d’exécution optionnels via <span class="_inlineMarkdown_x0d1c_75 inline-markdown text-size-chat-sm font-mono blend bg-token-text-code-block-background rounded-sm px-1.5 py-0.5 leading-none extension:bg-token-foreground/10 electron:bg-token-list-hover-background/60">execute\_params</span>, et un booléen <span class="_inlineMarkdown_x0d1c_75 inline-markdown text-size-chat-sm font-mono blend bg-token-text-code-block-background rounded-sm px-1.5 py-0.5 leading-none extension:bg-token-foreground/10 electron:bg-token-list-hover-background/60">metadata</span> permettant de préciser si le retour doit inclure uniquement les lignes ou également les métadonnées de colonnes.

[![image.png](https://docs.myfab.fr/uploads/images/gallery/2026-06/scaled-1680-/B65image.png)](https://docs.myfab.fr/uploads/images/gallery/2026-06/B65image.png)

Côté Openprod, pour faire de la lecture en test il est recommandé d'utiliser la méthode UserError qui permet d'afficher soit les noms des colonnes, soit leur contenu. Ici avec les variables cols et rows.

*Affichage de la variable 'cols' :*

[![image.png](https://docs.myfab.fr/uploads/images/gallery/2026-06/scaled-1680-/FuTimage.png)](https://docs.myfab.fr/uploads/images/gallery/2026-06/FuTimage.png)