J’utilisais $id pour créer des codes (plus courts que les libellés) et uniques (comme le font les outils Jira, Mantis etc.).
Exemple:
A0001 pour l’action n° 1
R0004 pour le risque n°4
Cette colonne $Code était une colonne de formule qui concatène une lettre (fonction de la table) et du $id. ça fonctionne bien et c’est simple.
Mais lorsque je copie / colle les données de mon document (depuis les données sources) vers dans une nouvelle version du document pour bénéficier des dernières évolutions de ce dernier, j’ai parfois des soucis. Dans le cas ou des lignes ont été supprimées dans le document, les id sont différents.
Dans tous les cas, je trouve pratique de maitriser ce $Code qui doit toutefois rester unique.
J’ai donc créé une colonne de données nommée $PK de type Entier avec la formule d’initialisation suivante :
(MAX(PEEK(MaTable.all.PK)) or 0) + 1
Il faut appliquer la formule :
- Au nouvelles lignes,
- Lors de la modification de la colonne $Code : ceci permet d’incrémenter l’id lors de la duplication de ligne native Grist.
Puis la colonne $Code est de type texte et de nature ‹ formule › (ou ‹ donnée › avec formule d’init pour améliorer les perfos) et concatène la lettre avec $PK au lieu de $id:
« A »+str(f"{$PK:04d}"