# Onglet objets métiers
![](../../images/liste_objets_metier.png)
## 1. Définition
Un objet métier est une entité qui associe à un calque, les attributs
d’une table ou vue de base de données. De la sorte, les attributs
associés au calque sont affichables et éditables, dans le requêteur et
dans le formulaire de création d’objet, accessibles dans le mode Carte.
Un objet métier permet donc de gérer des données vectorielles stockées
en base.
Le mode Développement permet l’ajout, l’édition et la suppression
d’objets métier.
La création d’un objet métier s’opère en deux temps :
- La déclaration de l’objet et des paramètres d’affichage
du requêteur.
- La construction des formulaires d’affichage, de création, d’édition
et de recherche de l’objet métier via le studio.
## 2. Création d’un objet métier
![](../../images/creation_objet_metier.png)
Renseigner les champs suivants :
- **Titre :** nom de l’objet métier tel qu’il apparaîtra dans le requêteur
et dans le formulaire de création d’objet
![](../../images/lampe_requeteur.png)
![création d'objet](../../images/lampe_creation.png)
- **Titre des formulaires :** le titre qui va apparaître dans les formulaires,
vous pouvez y intégrer le résultat d'un des attributs du formulaire en le
mettant entre accolades (ex: Commune n°{{id_com}})
- **Titre des infobulles :** le titre qui va apparaître dans les infobulles,
vous pouvez y intégrer le résultat d'un des attributs de la requête SQL Summary
en le mettant entre accolades (ex: Commune n°{{ID commune}})
- **Champs id :** champ identifiant de la table.
- **Base de données :** nom de la base de données à laquelle se connecter
- **Schéma :** schéma de la base de données
- **Table :** table de la base de données
- **SQL Summary :** requête SQL pour définir les champs à afficher dans
l’infobulle d’un objet.
- **Images et liens** : Il est possible depuis la version 2018.01.00 d'intégrer des liens et des images en utilisant les balises HTML `` et ``
- **Dates** : Il est possible depuis la version 2018.03.00 de formater les dates en fonction de la configuration de l'utilisateur en utilisant la fonction SQL `s_vitis.format_date()` exemple : `SELECT s_vitis.format_date(date_maj) as "Date MAJ" FROM ...`
![](../../images/infobulle.png)
- **SQL List :** requête SQL pour définir les champs à afficher dans la
liste des objets sélectionnés du requêteur.
- **Images et liens** : Il est possible depuis la version 2018.01.00 d'intégrer des liens et des images en utilisant les balises HTML `` et ``
- **Dates** : Il est possible depuis la version 2018.03.00 de formater les dates en fonction de la configuration de l'utilisateur en utilisant la fonction SQL `s_vitis.format_date()` exemple : `SELECT s_vitis.format_date(date_maj) as "Date MAJ" FROM ...`
![](../../images/liste_requeteur.png)
### 2.1 Description de certains champs
#### Géométrie saisissable, modifiable
![](../../images/conf_bo/conf_bo_geom.png)
- Géométrie saisissable : Option disponible si le nom de la cononne géométrique est définie.
- Oui : Saisie d 'une nouvelle géométrie autorisée.
- Non : Impossibilité de saisir une nouvelle géométrie.
Ce paramétrage peut être utile si la table comporte un champ géométrique mais que la géométrie de l'objet est calculée dans un second temps (dans une vue par exemple).
Au moment de d'ajouter un objet ![](../../images/bouton_insertion.png), si l'option vaut non les éléments barrés n'apparaissent pas.
![](../../images/conf_bo/bo_geom_saisissable_non.png)
- Géométrie modifiable : Option disponible si le nom de la cononne géométrique est définie.
- Oui : Modification de la géométrie autorisée.
- Non : Impossibilité de modifier une géométrie.
Ce paramétrage peut être utile si la table comporte un champ géométrique mais que la géométrie de l'objet est modifiée dans un second temps (dans une vue par exemple).
Si l'option vaut non :
![](../../images/conf_bo/bo_geom_editable_non1.png)
![](../../images/conf_bo/bo_geom_editable_non2.png)
#### Mode de recherche du champ localisation
![](../../images/conf_bo/conf_bo_mode_recherche.png)
Les modes de recherche pour le champs localisation sont:
- Stricte
- Cherche exactement le texte
- Début de chaine
- Cherche le texte saisie (dans un seul bloc) en début de chaîne
- En sql, cela correspond à WHERE [le_champ] LIKE "texte_recherché%"
- Fin de chaine
- Cherche le texte saisie (dans un seul bloc) comme une fin de chaîne
- En sql, cela correspond à WHERE [le_champ] LIKE "%texte_recherché"
- Milieu de chaine
- Cherche le texte saisie (dans un seul bloc) dans tout la chaîne
- En sql, cela correspond à LIKE "%texte_recherché%"
- Texte plein
- Recherche un ou plusieurs mots de manière indépendante dans le texte.
- Corresponds à la recherche "plain text" de postgresql
- Le résultat d'une recherche "texte plein" sera prétraité, trié et retourné à l'utilisateur en fonction d'un "score". Les meilleurs résultats seront ceux dont le score sera le plus important.
Les avantages de la recherche texte plein sont:
- Une recherche plus large car chaque mot est cherché individuellement.
- Un tri plus pertinant grâce à un score attribué à chaque mot
Exemple:
Recherche en Debut de chaîne:
![](../../images/conf_bo/bo_recherche_milieu_chaine.png)
Recherche en Texte plein: La recheche texte plein cherche les mots individuellement.
![](../../images/conf_bo/bo_recherche_plein_text.png)
#### Objet localisable, sélectionnable et requêtable
![](../../images/conf_bo/conf_bo_loc_select_req.png)
![](../../images/conf_bo/conf_bo_generale.png)
- **Sélectionnable**: Affiche l'objet dans les listes des outils i et insertion
![](../../images/conf_bo/bo_selectionnable.png)
![](../../images/conf_bo/bo_insert.png)
- **Localisable**: Affiche l'objet dans la liste de l'outil de localisation
![](../../images/conf_bo/bo_localisable.png)
- **Requêtable**: Affiche l'objet dans les listes de l'outil i+
![](../../images/conf_bo/bo_requetable.png)
#### Objet disponible en édition multiple
![](../../images/conf_bo/conf_bo_multiple_edition.png)
- **Disponible en édition multiple**: Affiche dans le requêteur un bouton permettant de modifier plusieurs enregistrements
![](../../images/conf_bo/bo_multiple_edition.png)
Le bouton "modifier les enregistrements" ouvre le formulaire d'édition multiple.
## 3. Formulaires
### 3.1. Définitions
Pour chaque objet métier, plusieurs formulaires sont utilisables et
paramétrables :
#### 3.1.1. Formulaire de recherche de l’objet métier (search)
Utilisable dans le requêteur et disponible pour les utilisateurs ayant
des **droits en consultation** sur la table liée, il permet de faire des
recherches filtrées sur les enregistrements de l'objet métier.
![](../../images/formulaire_search.png)
#### 3.1.2. Formulaire d’affichage de l’objet métier (display)
Utilisable par les personnes ayant des **droits en consultation** sur la
table liée, il permet d'afficher des informations en consultation pour
l'enregistrement sélectionné.
![](../../images/formulaire_display.png)
#### 3.1.3. Formulaire de mise à jour de l’objet métier (update)
Utilisable par les personnes ayant des **droits de mise à jour** sur la
table liée, il permet de mettre à jour les attributs de l'enregistrement
en édition.
![](../../images/formulaire_update.png)
#### 3.1.4. Formulaire de création de l’objet métier (insert)
Utilisable par les personnes ayant des **droit en insertion** sur la
table liée et accessible par le bouton **"Éditer les attributs"**, il
permet à l'utilisateur de créer un objet et de renseigner ses attributs.
![](../../images/formulaire_insert.png)
### 3.2 Studio
Un studio a été developpé pour gérer graphiquement les différents
formulaires des objets métier.
Le studio est accessible via la section Formulaire après avoir édité un
objet métier.
![](../../images/creation_objet_metier.png)
#### 3.2.1. Génération automatique des formulaires
La première chose à faire lorsqu'on veut créer un ensemble de
formulaires est de demander à l'application de les générer en fonction
des colonnes présentes sur la table liée. Si le typage en base de
données est bien fait et que cela est possible, le type de champ affiché
dans le formulaire sera également implémenté (texte, nombre, date
etc...).
Pour cela, il suffit de cliquer sur **confirmer** lors de l'affichage du
message suivant :
![](../../images/formulaire_message_creation.png)
On peut également cliquer dans le **formulaire par défaut** sur
**Régénérer le formulaire par défaut**.
![](../../images/formulaire_reset_default_button.png)
La fenêtre suivante apparaît et l'utilisateur peut :
- Sélectionner les arguments à afficher
- Changer pour chaque champ, le nom qui sera affiché dans le
formulaire
![](../../images/formulaire_selection_colonnes.png)
#### 3.2.2. Utilisation du studio
Le studio est divisé en quatre principales zones de gestion des
formulaires :
![](../../images/studio_4_zones.png)
##### 3.2.2.1. La zone d'administration du fichier
Il s'agit d'une des zones fondamentales car elle permet la sauvegarde et
l'affichage des fichiers.
Il existe trois types de formulaires :
- le **formulaire par défaut**, formulaire généré automatiquement. Le
développeur peut choisir de conserver en l'état ce formulaire ou de
le personnaliser.
- le **formulaire publié**, formulaire en cours d'utilisation dans
l'application
- le **formulaire personnalisé**, formulaire en cours d'édition.
![](../../images/formulaire_zone_fichier.png)
Pour modifier un formulaire, l'administrateur clique sur le bouton
**Perso** puis sélectionne le type de formulaire sur lequel il veut
travailler (display, search, update, insert). Il édite ce dernier et
**publie le formulaire personnalisé** car sans cela les modifications ne
seraient pas visibles par les utilisateurs finaux.
Le menu déroulant **Fichier** permet de gérer les versions des
formulaires (publier le formulaire personnalisé, régénérer le formulaire
par défaut etc..)
Le menu déroulant **Édition> Gestion des onglets** permet d'agencer
le formulaire en répartissant les attributs sur plusieurs onglets.
##### 3.2.2.2. La zone de prévisualisation
La zone de prévisualisation permet à l'administrateur de visualiser en
direct le formulaire en cours.
![](../../images/formulaire_zone_previsualisation.png)
Le menu déroulant **Prévisualisation** permet l'affichage et la
modification de la définition du formulaire au format JSON ainsi que
l'ajout de JavaScript au formulaire.
> **note**
>
> Les onglets ne sont volontairement pas affichés dans cette zone. Ils
> sont affichés lors de l'utilisation réelle du formulaire.
##### 3.2.2.3. La zone de gestion de mise en page
Dans cette zone, l'administrateur peut modifier l'ordre d'affichage des
attributs, et via la case "Voir / modifier les lignes", il peut
regrouper plusieurs éléments sur une même ligne.
![](../../images/formulaire_zone_attributs.png)
Le bouton **Sources de données** en bas de zone, permet la configuration
des attributs de type liste.
##### 3.2.2.4. La zone de définition de l'attribut sélectionné
Dans cette zone, l'administrateur pourra gérer le type de saisie qui
sera faite, le libellé à afficher sur le formulaire, le nom de la
colonne auquel il est lié et bien d'autres paramètres en fonction du
type d'attribut.
![](../../images/formulaire_zone_definition.png)
Depuis la version 2020.02 de vMap, il est possible d'accéder aux informations de connexion de l'objet métier directement dans les formulaires (consultation, saisi, modification).
3 nouvelles variables sont ainsi disponibles :
- database
- schema
- table
Exemple:
![](../../images/vmap_bo_studio_database.png)
#### 3.2.3. Utilisation du studio
Pour comprendre comment utiliser le studio consulter les documents suivants
- [Utilisation du studio](../../../doc_module_studio/utilisation/index.html)
- [Exemples d’objets métier dans vMap](../guide_developpeur/exemples_objets_metier.html)