> For the complete documentation index, see [llms.txt](https://ksaar.gitbook.io/ksaar-documentation/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://ksaar.gitbook.io/ksaar-documentation/laffichage-des-donnees/groupes-repetables.md).

# Groupes répétables

## 📕 Définition

Un groupe répétable est un élément bibliothèque répété et associé à des enregistrements de tables sources.

Au sein d’un groupe répétable il est possible d’ajouter autant d’éléments de page que nécessaire. Ceux-ci seront répétés pour chaque enregistrement de la table source.

Un groupe répétable peut être positionné sur toutes les pages d’un workflow privé, sur une fiche, un suivi ou sur l’espace personnel.

<figure><img src="/files/42LXUYDuSkGXHCXtZeEJ" alt="" width="563"><figcaption><p>Groupe répétable</p></figcaption></figure>

## 💡Intérêt

L’intérêt majeur des groupes répétables est le fait de pouvoir afficher, pour chaque enregistrement et de manière répétée, des éléments choisis. Il est possible d’ajouter à un groupe répétable n’importe quel élément qu’il est déjà possible de positionner ailleurs.

## ＋Créer un groupe répétable

Depuis l'onglet *Données* de la barre d'ajout d'un élément, cliquez sur **Ajouter un affichage** puis sur **Groupe répétable**. Vous pouvez ensuite cliquer sur le Groupe répétable placé dans votre page afin d’en modifier les paramètres.

## ⚙️ Paramétrage du groupe répétable

### Paramètres globaux

#### 🗂️ Sources

Dans un groupe répétable, il est possible d’ajouter **plusieurs sources de données**.

Pour chaque source :

1️⃣ Vous pouvez modifier le libellé de la source en cliquant dessus (un crayon s'affiche au survol).

2️⃣ Sélectionnez la table de laquelle viennent les enregistrements qui seront utilisés pour répéter le contenu.

3️⃣ Choisissez les enregistrements à afficher.

<details>

<summary>Choix des enregistrements</summary>

Vous pouvez choisir parmi les enregistrements :

👉🏼 De l'**Utilisateur connecté** : signifie que les réponses qui s'afficheront dans la liste seront issues des enregistrements remplis par l'utilisateur uniquement. Par exemple : si l'utilisateur a rempli 2 workflows de la table source, alors 2 lignes apparaîtront dans le groupe répétable. \
👉🏼 Des **Groupes auxquels appartient l'utilisateur** : signifie que les réponses qui s'afficheront dans le groupe répétable seront issues des enregistrements remplis par l'utilisateur ET des enregistrements remplis par les utilisateurs faisant partie du même groupe. Par exemple : si Marie et Paul font partie du même groupe et qu'ils ont renseignés 2 workflows de la table source chacun, alors 4 lignes s'afficheront dans le groupe répétable. \
👉🏼 **Tout le monde** : signifie que les réponses qui s'afficheront dans le groupe répétable seront issues des enregistrements remplis par tous les utilisateurs de l'application.

</details>

4️⃣ *(facultatif)* Ajoutez des filtres conditionnels permettant d’afficher uniquement les enregistrements souhaités. Par exemple : conditionnez votre source de manière à afficher uniquement les Articles ayant un prix inférieur ou égal à 35€.

<figure><img src="/files/3bCPPYuLezp4Y2jKAicD" alt="" width="375"><figcaption><p>Paramétrage d'une source</p></figcaption></figure>

#### 🔽 Tri

*(facultatif)* Configurez l’ordre d’apparition des enregistrements dans le groupe répétable quelle que soit leur source.

1️⃣ Choisissez le type de tri : Alphabétique, Numérique ou Chronologique

2️⃣ Définissez l’ordre de tri : Croissant ou Décroissant

3️⃣ Sélectionnez les champs des tables sources sur lesquels s’appliquera le tri.

### Paramètres spécifiques à cet emplacement

#### 🔎 Filtrage

Il est aussi possible de filtrer, via les filtres que l’on retrouve habituellement dans Ksaar, les enregistrements pris en compte dans un groupe répétable. Le filtre permet alors de ne visualiser qu’une partie des enregistrements.

#### 🔗 Liaisons

Quand on se situe dans un workflow, il est également possible de “N'afficher que les enregistrements liés à l'enregistrement en cours”. Cette option permet de n’afficher que les enregistrements liés par une liaison à l’enregistrement en cours. Nous allons voir plus bas comment cette option peut être utilisée.

Il faut ainsi choisir sur quelle liaison synchroniser ces changements.

<figure><img src="/files/u7zGmUK6gPVjiuWPNFZB" alt="" width="563"><figcaption><p>En rouge le paramétrage de liaisons, en vert le paramétrage du filtrage</p></figcaption></figure>

## ✏ Modifier les pages d’un groupe répétable

Chaque source ajoutée à un groupe répétable est associée à sa propre page de contenu. Pour modifier la page d’une source, accédez aux paramètres du groupe répétable puis cliquez sur le bouton de modification de la page associée à une source.

Chaque page est similaire à une page Ksaar classique. Une page configurée sera répétée pour chaque enregistrement de sa table source.

Il est possible de paramétrer entièrement la mise en page d’une page et d’ajouter n’importe quel contenu basique, nouveau champ ou élément bibliothèque. Il est aussi possible de rajouter les champs existants de la table source. Il n’est pas possible de rajouter des champs utilisateur.

Il est aussi possible d’imbriquer un groupe répétable dans un autre. Ceci permet un phénomène de poupées russes pour la modification, ce cas d’usage est exploré plus loin dans cette documentation.

## ❓Quand est-ce qu’un groupe répétable est utile?

### ✅ Bonnes pratiques

Les groupes répétables permettent en théorie beaucoup de choses et peuvent paraître redondants avec les éléments liste ou tableaux par exemple. La force des groupes répétables est leur capacité à modifier des données liées, pas seulement de les afficher.

Ainsi, si votre but est la consultation de données, il faut préférer les listes ou tableaux.

Si votre but est la modification de données (à travers une liaison), les groupes répétables sont faits pour vous.

### 🧑‍🎓 Cas d’usage possibles

Quelques cas d’usage typiques des groupes répétables sont les suivants :

* Un panier avec des sous paniers (utilisation de matrices dans un groupe répétable)
* Modifier les champs d’un enregistrement lié à un enregistrement
* Créer un bloc réutilisable dans toutes les fiches ou suivis de l’application
* Créer un historique d’interventions sur un chantier (avec sous-division du chantier par projets)
* Créer une galerie d’images (ou d’éléments) liées à un projet

Il existe évidemment d’autres cas d’usages possibles en fonction de votre utilisation de Ksaar.

## 🚧 Cas d'usage : Panier avec sous-paniers

Nous allons, dans cet exemple, créer un workflow de **création de devis** avec des catégories et des sous-catégories d’articles.

Chaque sous-catégorie d’article aura son propre sous-panier équivalent à sa propre matrice.

1️⃣ Créez un nouveau workflow **Création de devis** et y ajouter une matrice de catégories, cette matrice a un champ catégorie de type texte, single select ou autre. La matrice servira à créer toutes les catégories de sous-paniers.

<figure><img src="/files/3iAc4LldPIxK8Zbw1Ecv" alt=""><figcaption></figcaption></figure>

2️⃣ Sur une nouvelle page du workflow, créez un **groupe répétable**. La table source sera la matrice des catégories.

3️⃣ Cochez “N'afficher que les enregistrements liés à l'enregistrement en cours” en utilisant la liaison de la matrice des catégories vers la table **Création de devis**.

4️⃣ Paramétrez le groupe répétable avec :

* un champ texte avec le nom de la catégorie
* une matrice avec le nom de l’article, la quantité, le prix
* un calcul de ligne pour avoir le prix de chaque article
* un calcul de colonne pour calculer le prix total par sous-catégorie
* un champ texte pour afficher le calcul de colonne

<figure><img src="/files/WhM9sSGNyR8Ro9gzpPqm" alt=""><figcaption></figcaption></figure>

**(bonus : visualisation et modification du devis généré)**

5️⃣ Dans l’espace perso créez un tableau avec comme source la table création de devis et rajoutez une nouvelle fiche.

6️⃣ Dans cette fiche, mettre le même groupe répétable, activez “N'afficher que les enregistrements liés à l'enregistrement en cours” et cochez la case de la liaison entre la table de création de devis et la matrice des catégories.

Il est possible de faire la même chose pour un suivi.

## 🚧 Cas d'usage : Modifier les champs d’un enregistrement lié

Dans Ksaar, il est possible de consulter et modifier les informations d’un enregistrement. Toutefois, depuis un enregistrement parent, il n’était auparavant pas possible de modifier les données des enregistrements qui lui sont liés.\
Avec les groupes répétables, il devient possible de modifier directement les informations d’un enregistrement lié **depuis son enregistrement parent**.

1️⃣ Créer une table **Comité** avec les informations d’un comité de passage

<figure><img src="/files/OLOi3XFq2bDTKAk4VvE5" alt=""><figcaption></figcaption></figure>

2️⃣ Créer une table **Jalons** avec les informations de chaque jalon pendant le comité. Il y a donc une liaison simple de la table **Jalons** vers la table **Comité**.

<figure><img src="/files/83iya9H3wvvF8kPY92Q2" alt=""><figcaption></figcaption></figure>

3️⃣ Pour la table **Comité**, créer un tableau avec une fiche de modification des données d’un enregistrement .

<figure><img src="/files/NAR3aOSFKGUjXBnMP6sr" alt=""><figcaption></figcaption></figure>

4️⃣ Sur cette fiche, placer un groupe répétable qui a pour paramètres :

* paramètres globaux : une source de table **Évènement**
* spécifiques à cet emplacement : cocher “N'afficher que les enregistrements liés à l'enregistrement en cours” et choisir la liaison de la table **Jalons** vers **Comité**

5️⃣ Cliquer sur “Modifier la page du groupe répétable”, placer les champs existants de la table **Jalons** et organiser la mise en page à votre souhait.

<figure><img src="/files/63bhKu4wvhaA34GAgSwo" alt=""><figcaption></figcaption></figure>

6️⃣ En tant qu’utilisateur, ouvrir la fiche d’un enregistrement et modifier les jalons de chaque évènement au besoin.

<figure><img src="/files/5jdLLG3Su6Usbfq5Uf7I" alt=""><figcaption></figcaption></figure>

## 🚧 Cas d'usage : Template de contenu réutilisable

Nous allons créer un en-tête de haut de page réutilisable dans toute fiche de l’application via un groupe répétable. Ceci permet de configurer cet en-tête une seule fois.

1️⃣ Créer une table **Template** contenant un unique enregistrement

2️⃣ Ajouter les champs nécessaires (logo et url par exemple)

3️⃣ Créer un groupe répétable qui a comme source la table en-tête

4️⃣ Configurer votre en-tête avec les éléments voulus, lien externe, logo, texte, etc …

<figure><img src="/files/VNsBtYcM3KBsrcW2gEom" alt=""><figcaption></figcaption></figure>

5️⃣ Poser le groupe répétable sur les en-têtes de fiches, suivis, workflows

<figure><img src="/files/3y3wu6QXknv2IzcQdYPn" alt=""><figcaption></figcaption></figure>

## 🚧 Cas d'usage : Un groupe répétable dans un groupe répétable

L’objectif est de consulter et modifier les données de workflows en poupées russes en utilisant des groupes répétables imbriqués.

Nous allons aborder le sujet avec le cas d’usage suivant :

* un projet
* dans ce projet, plusieurs chantiers
* dans ces chantiers, plusieurs jalons

1️⃣ Commençons par créer la table de plus haut niveau. Créez la table **Projets** et ajoutez des champs d'informations globales du projet.

2️⃣ Ensuite la table de deuxième niveau. Créez la table **Chantiers**, créez les champs d'informations du chantiers ainsi qu’une liaison simple vers la table **Projets**.

3️⃣ Finalement la dernière table. Créez le workflow **Jalons** avec les informations que vous souhaitez et une liaison simple vers la table **Chantiers**.

4️⃣ Créons maintenant la page de consultation et de modification des données. Créez une fiche associée au workflow **Projets**. Ajouter un titre et un groupe répétable lié à la table **Projets**. Cochez la case “N'afficher que les enregistrements liés à l'enregistrement en cours” et utilisez la liaison de la table **Chantiers** vers **Projets**.

5️⃣ Sur la page du groupe répétable ajoutez les champs existants de la table **Projets** et **Configurez** la page à votre souhait.

<figure><img src="/files/4unaR3oZ0u7NchNKAPIF" alt=""><figcaption></figcaption></figure>

6️⃣ Sur cette même page de groupe répétable, ajoutez un nouveau groupe répétable. Celui-ci aura comme source la table de troisième niveau, la table **Jalons** dans notre cas. Cochez la même case “N'afficher que les enregistrements liés à l'enregistrement en cours” et utiliser la liaison de la table **Jalons** vers **Chantiers**.

7️⃣ Sur ce nouveau groupe répétable, configurer la page à votre souhait et ajouter les champs existants.

<figure><img src="/files/YjJ87mLYYcwKgPrTTouo" alt=""><figcaption></figcaption></figure>

8️⃣ Dans un tableau de source la table **Projets**, ajoutez la fiche que vous venez de créer. Profitez d’une fiche pour modifier toutes les informations ce projet.

<figure><img src="/files/HMns7vWDeFilMr5RF0Li" alt=""><figcaption></figcaption></figure>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

```
GET https://ksaar.gitbook.io/ksaar-documentation/laffichage-des-donnees/groupes-repetables.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
