# Règles d'enregistrement des fiches

Cette page explique, d'un point de vue fonctionnel, ce qui se passe à chaque enregistrement d'une [fiche](/user-documentation/documentation-utilisateur/components-concepts-terminology.md#fiche) — de la validation des champs aux transitions de workflow, en passant par le recalcul des formules, l'exécution des automatismes et les notifications.

Comprendre cette séquence vous aide à concevoir des formulaires, des automatismes et des workflows qui se comportent exactement comme vous l'attendez.

## FAQ

<details>

<summary>Lorsqu'un état de workflow change, quel état les conditions et les formules voient-elles — l'ancien ou le nouveau ?</summary>

**Toujours le nouvel état.** La transition est appliquée pendant l'enregistrement, avant les automatismes d'écriture, les formules, les conditions et les automatismes de lecture. À partir de là, chaque étape évalue la fiche avec son nouvel état. Une condition comme *« l'état du workflow est Approuvé »* est vraie durant l'enregistrement même qui a effectué la transition *Approuver*.

</details>

<details>

<summary>Un automatisme d'écriture peut-il voir les valeurs de formule calculées pendant le même enregistrement ?</summary>

**Non.** Les automatismes d'écriture s'exécutent avant le calcul des formules ; ils voient donc encore les valeurs de formule de l'enregistrement *précédent*. Si un automatisme doit réagir à un résultat de formule, utilisez plutôt un automatisme de lecture — ceux-ci s'exécutent après le recalcul des formules et voient les valeurs fraîches.

</details>

<details>

<summary>Un automatisme de lecture peut-il voir les valeurs de formule calculées pendant le même enregistrement ?</summary>

**Oui.** Les automatismes de lecture (rapports, webhooks, e-mails, notifications mobiles) s'exécutent après le recalcul des formules ; les données qu'ils reçoivent reflètent donc la fiche entièrement calculée, y compris tous les champs formule fraîchement calculés durant cet enregistrement.

</details>

<details>

<summary>Si un enregistrement échoue, qu'est-ce qui est annulé ?</summary>

Tout ce qui se trouve dans l'enregistrement protégé est annulé : les données de la fiche, les changements de relations et les effets des automatismes d'écriture ne sont pas enregistrés ; les fichiers téléversés ne sont pas déplacés vers le stockage définitif ; aucune tâche n'est créée. Le numéro séquentiel réservé avant l'enregistrement n'est *pas* réutilisé (les trous sont normaux). Les étapes qui s'exécutent après l'enregistrement — notifications, formules, automatismes de lecture — ne s'exécutent jamais si l'enregistrement échoue.

</details>

<details>

<summary>Les formules des fiches liées sont-elles recalculées à chaque enregistrement ?</summary>

Sur les enregistrements normaux (web, mobile, à l'unité), oui — les formules des fiches liées qui référencent la fiche courante sont recalculées, les grands graphes de relations étant traités en arrière-plan. Pour les mises à jour en masse, les imports et les migrations, ce calcul est différé vers une tâche d'arrière-plan qui s'exécute ensuite.

</details>

<details>

<summary>Qu'est-ce qu'une formule à « calcul unique » ?</summary>

Une formule à calcul unique calcule sa valeur une seule fois — généralement à la création — puis la conserve indéfiniment. Lors des enregistrements suivants, la valeur existante est préservée et n'est jamais réévaluée. Utilisez-la pour horodater une valeur qui ne doit jamais changer, comme une date de « réception ».

</details>

<details>

<summary>Les automatismes de lecture se déclenchent-ils lorsque je modifie une fiche clôturée ?</summary>

Cela dépend de l'enregistrement. Une simple modification sans transition de workflow sur une fiche déjà clôturée ignore les automatismes de lecture. Un enregistrement qui *fait passer* la fiche vers un état final exécute bien les automatismes de lecture pour cet enregistrement.

</details>

<details>

<summary>Qu'est-ce que le mode partiel, et quand est-il utilisé ?</summary>

Le mode partiel désactive la validation des champs obligatoires afin qu'une fiche puisse être enregistrée avec des champs obligatoires encore vides. Il est utilisé pour les enregistrements mobiles hors ligne (un agent de terrain enregistre une fiche partiellement remplie pour la synchroniser plus tard) et les imports de données (des lignes qui ne contiennent pas tous les champs obligatoires). Les transitions de workflow ne sont pas autorisées en mode partiel.

</details>

<details>

<summary>Si je modifie un champ dont dépend une formule, quand la formule se met-elle à jour ?</summary>

Les champs formule sont recalculés après la confirmation de l'enregistrement. La réponse renvoyée à l'écran après l'enregistrement contient déjà les valeurs fraîchement calculées : vous voyez donc la mise à jour immédiatement.

</details>

## Vue d'ensemble

Enregistrer une fiche n'est pas une opération instantanée unique. Cela se déroule en une séquence répartie en trois phases :

1. **Avant l'enregistrement** — préparation légère (numérotation, chargement de la définition du formulaire, prise en compte de l'assignation actuelle).
2. **L'enregistrement lui-même** — l'écriture principale, protégée selon le principe du tout ou rien : validation, transition de workflow et automatismes d'écriture. Si une étape échoue, l'enregistrement est entièrement annulé et rien n'est partiellement écrit.
3. **Après l'enregistrement** — l'enrichissement qui s'exécute une fois l'enregistrement confirmé : formules, conditions, automatismes de lecture, historique et notifications.

{% hint style="warning" %}
**L'enregistrement lui-même fonctionne en tout ou rien.** Si une étape échoue — un champ obligatoire manquant, une [relation](/user-documentation/documentation-utilisateur/components-concepts-terminology.md#relation) supprimée, une transition de workflow invalide — l'enregistrement est entièrement annulé et rien n'est enregistré.
{% endhint %}

## Phase 1 — Avant l'enregistrement

Ces étapes s'exécutent avant le début de l'enregistrement protégé.

| Étape                                     | Ce qui se passe                                                                                                                                                                                                                | Pourquoi c'est important                                                                                                                                                                  |
| ----------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Numéro séquentiel                         | Une nouvelle fiche reçoit un numéro unique et croissant au sein de son formulaire.                                                                                                                                             | Le numéro est permanent — il ne change jamais, même après modification. Si l'enregistrement échoue, le numéro réservé n'est pas réutilisé : les trous dans la séquence sont donc normaux. |
| Chargement de la définition du formulaire | La plateforme charge les champs, le workflow, les conditions et la configuration des formules pour la [version](/user-documentation/documentation-utilisateur/components-concepts-terminology.md#version) attachée à la fiche. | La validation applique toujours les règles de la version liée à la fiche.                                                                                                                 |
| État initial du workflow                  | Une nouvelle fiche dont le formulaire possède un workflow est automatiquement placée dans l'état initial.                                                                                                                      | Une nouvelle fiche commence toujours son cycle de vie dans le bon état initial, même si l'utilisateur n'en a pas choisi.                                                                  |
| Instantané de l'assignation               | Pour une fiche existante, la plateforme enregistre qui est actuellement assigné et abonné.                                                                                                                                     | Seuls les utilisateurs *nouvellement* assignés ou abonnés seront notifiés ensuite — pas ceux qui l'étaient déjà.                                                                          |

## Phase 2 — L'enregistrement lui-même

### Migration du formulaire

Si le formulaire a été mis à jour depuis la dernière ouverture de la fiche, celle-ci est automatiquement migrée vers la dernière version active avant la validation, afin que les règles les plus récentes s'appliquent toujours.

**Ce que vous constatez :** vous pouvez enregistrer une fiche même si le formulaire a changé depuis son ouverture — la plateforme l'adapte automatiquement. Si la migration est impossible, l'enregistrement est rejeté.

### Validation des champs

Chaque champ est validé :

* Les **champs simples** (texte, nombre, date, liste, utilisateur, fichiers…) sont vérifiés pour le type, les règles obligatoires et le format.
* Les **champs relation** sont vérifiés pour la cardinalité (nombre minimum / maximum de fiches liées) et l'existence des fiches liées.
* Les **champs système** ne peuvent pas être écrits par l'utilisateur et sont ignorés.
* En **mode partiel** (enregistrements mobiles hors ligne, imports), la règle de champ obligatoire est ignorée afin que des fiches incomplètes puissent être enregistrées progressivement.

{% hint style="info" %}
**Utilisateur inactif dans un champ utilisateur :** assigner un utilisateur inactif à un champ utilisateur est rejeté — sauf si ce même utilisateur inactif était déjà présent dans le champ avant l'enregistrement, auquel cas la valeur est préservée pour ne pas casser les données existantes.
{% endhint %}

### Transition de workflow

C'est ici que l'état du workflow change réellement. Lorsqu'un enregistrement inclut une action de workflow (l'utilisateur a cliqué sur une transition telle que *Soumettre pour validation* ou *Approuver*), la plateforme applique la transition à ce moment et recalcule les conditions de visibilité de la fiche par rapport au nouvel état.

**À partir de ce point, chaque étape suivante — automatismes d'écriture, formules, conditions, automatismes de lecture — voit le nouvel état du workflow.**

### Automatismes d'écriture

Les automatismes d'écriture modifient les données de la fiche dans le cadre de l'enregistrement. Ils s'exécutent juste après la transition de workflow et voient toujours le nouvel état. Comme ils s'exécutent à l'intérieur de l'enregistrement protégé, si l'un d'eux échoue, tout l'enregistrement est annulé.

| Automatisme d'écriture            | Ce qu'il fait                                                                                                  |
| --------------------------------- | -------------------------------------------------------------------------------------------------------------- |
| **Changer l'assignation**         | Assigne ou réassigne la fiche à un utilisateur ou un groupe selon des conditions.                              |
| **Changer l'état du workflow**    | Force automatiquement une seconde transition de workflow (par exemple, clôture automatique après approbation). |
| **Modifier la valeur d'un champ** | Définit ou efface la valeur de champs de la fiche.                                                             |

{% hint style="warning" %}
La condition d'un automatisme d'écriture est évaluée par rapport aux valeurs de champs enregistrées par l'utilisateur et au nouvel état du workflow. Elle ne voit **pas** encore les résultats des formules — celles-ci sont calculées plus tard, après l'enregistrement. Si votre automatisme doit réagir à une formule, utilisez plutôt un automatisme de lecture.
{% endhint %}

### Fichiers et tâches

Les fichiers téléversés ne sont déplacés vers leur stockage définitif qu'une fois l'enregistrement confirmé, afin qu'un enregistrement échoué ne laisse jamais de fichiers orphelins. Si le formulaire est configuré pour créer automatiquement une [tâche](/user-documentation/documentation-utilisateur/components-concepts-terminology.md#tache), celle-ci est créée et liée ici.

## Phase 3 — Après l'enregistrement

Une fois la fiche enregistrée en toute sécurité, une seconde séquence d'enrichissement et de notification s'exécute. Ces étapes n'annulent **pas** l'enregistrement si elles échouent — la fiche est déjà enregistrée.

### Notifications push

La plateforme compare la liste actuelle des assignés et abonnés avec l'instantané pris avant l'enregistrement. Tout utilisateur nouvellement assigné ou abonné reçoit une notification push mobile.

### Calcul des formules

Tous les champs formule sont recalculés ici, sur la fiche enregistrée — ils voient donc le nouvel état du workflow, les valeurs saisies par l'utilisateur et les modifications apportées par les automatismes d'écriture.

* Si la fiche est liée à d'autres fiches via des champs relation, les formules de ces fiches liées peuvent également être recalculées (par exemple, une formule d'agrégation sur une fiche parente). Pour les grands graphes de relations, ce calcul est effectué en arrière-plan afin de garder des enregistrements rapides.
* Pour les mises à jour en masse, les imports et les migrations, le recalcul sur les fiches liées est différé vers une tâche d'arrière-plan afin de ne pas surcharger la plateforme.
* Les **formules à calcul unique** calculent leur valeur une seule fois, puis la conservent indéfiniment — utile pour horodater une date de « réception » ou une valeur « créé par » qui ne doit jamais changer.

### Conditions

Toutes les conditions (visibilité des champs, surcharges de champs obligatoires, visibilité des sections) sont recalculées par rapport à l'état final de la fiche, formules déjà appliquées, et le résultat est mis en cache afin qu'au prochain affichage de la fiche, la bonne visibilité des champs soit immédiatement disponible.

### Automatismes de lecture

Les automatismes de lecture réagissent à l'enregistrement mais ne modifient pas les données de la fiche. Ils s'exécutent après les formules et les conditions, et voient donc la fiche entièrement enrichie.

| Automatisme de lecture  | Ce qu'il fait                                                                                                                                                |
| ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Rapport simple**      | Génère un [rapport](/user-documentation/documentation-utilisateur/components-concepts-terminology.md#rapport) à partir d'un modèle et l'attache ou l'envoie. |
| **Notification mobile** | Envoie une notification push ciblée à des utilisateurs ou groupes spécifiés.                                                                                 |
| **Webhook**             | Appelle un point de terminaison externe avec les données de la fiche, pour l'intégration avec des systèmes tiers.                                            |
| **Envoyer un e-mail**   | Envoie un e-mail formaté aux destinataires configurés.                                                                                                       |

{% hint style="warning" %}
**Fiches clôturées :** si une fiche est déjà dans un état final (clôturé) et que l'enregistrement n'inclut pas de transition de workflow, les automatismes de lecture sont ignorés — cela évite des notifications ou rapports intempestifs lors de modifications mineures sur des fiches clôturées. Si l'enregistrement est la transition qui *amène* la fiche vers un état final, les automatismes de lecture s'exécutent bien pour cet enregistrement.
{% endhint %}

### Historique de restauration

Un instantané des valeurs de champs de la fiche (telles qu'elles sont après l'enregistrement complet) est stocké dans le journal d'historique. C'est cet instantané qui permet aux administrateurs de restaurer une fiche à un état antérieur.

## Cas particuliers

| Scénario                                        | Ce qui change                                                                                                                                                                             |
| ----------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Mode partiel** (mobile hors ligne, import)    | Les minimums de champs obligatoires et de cardinalité ne sont pas appliqués. Les transitions de workflow ne sont pas autorisées.                                                          |
| **Pré-remplissage**                             | Tous les automatismes sont ignorés ; les formules ne renvoient que les valeurs de pré-remplissage. Utilisé pour pré-remplir une fiche avant sa création officielle.                       |
| **Mise à jour en masse / import / migration**   | Le recalcul des formules sur les fiches liées et la mise à jour des tâches planifiées sont différés afin de protéger la plateforme lorsque de nombreuses fiches changent en même temps.   |
| **Créée pour le compte d'un autre utilisateur** | La fiche est attribuée à l'utilisateur cible, et l'historique enregistre le changement de propriété.                                                                                      |
| **Restaurée depuis l'historique**               | Les données restaurées sont appliquées comme un enregistrement normal ; les automatismes et les formules s'exécutent comme d'habitude, et l'état de workflow de l'instantané est rétabli. |


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://www.center.daxium-air.com/user-documentation/documentation-utilisateur/support/admin-support/submission-saving-rules.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
