Personnaliser les champs
Personnaliser les champs
Vous pouvez ajouter ou modifier les champs d'un type de document sans écrire de code, avec Personnaliser un formulaire. Cette page couvre aussi la propriété « Filtres », qui restreint les choix d'un champ Lien.
Prérequis
- Vous avez le rôle System Manager.
Ajouter ou modifier un champ
- Ouvrez la barre de recherche (
Ctrl+K) et tapez « Personnaliser un formulaire ». - Choisissez le type de document, par exemple Facture de vente.
- Ajoutez une ligne dans la table des champs, ou ouvrez un champ existant.
- Renseignez les propriétés utiles :
- « Étiquette » : le nom affiché ;
- « Type » : Lien, Date, Sélection… ;
- « Options » : pour un champ Lien, le type de document cible (par exemple
Customer) ; - « Obligatoire » et « Masqué ».
- Cliquez sur Mettre à jour.
Filtrer les choix d'un champ Lien
La propriété « Filtres » d'un champ Lien limite les documents proposés dans sa liste déroulante. Elle existe aussi pour les champs Attachment Gallery, qui doivent alors filtrer le type File.
Format
« Filtres » contient une liste JSON. Chaque filtre est une liste de quatre valeurs :
[["Type de document", "champ", "opérateur", "valeur"]]
Plusieurs filtres se combinent par un ET. Il n'y a pas de OU.
Une valeur qui commence par eval: est calculée à chaque recherche, à partir du document en cours.
L'expression peut lire doc (le document ou la ligne de table) et parent (le document parent d'une ligne de table).
Enregistrement
À l'enregistrement du type de document ou de la personnalisation, Dodock vérifie le format :
| Cas | Exemple | Résultat |
|---|---|---|
| JSON invalide | [["Supplier", "disabled", "=", 0] | Refusé : « Filters must be valid JSON » |
| Filtre de moins ou de plus de quatre valeurs | [["Supplier", "disabled", "="]] | Refusé |
| Format valide | [["Supplier", "disabled", "=", 0]] | Accepté |
Exemples
Ne proposer que les fournisseurs actifs :
[["Supplier", "disabled", "=", 0]]
Ne proposer que les clients du groupe « Particuliers » et les fournisseurs basés en France (deux champs différents) :
[["Customer", "customer_group", "=", "Particuliers"]]
[["Supplier", "country", "=", "France"], ["Supplier", "disabled", "=", 0]]
Exemple fictif avec un champ personnalisé : le champ Lien custom_contact d'une commande ne propose que les contacts du client choisi, via un champ personnalisé custom_customer sur le contact.
[["Contact", "custom_customer", "=", "eval:doc.customer"]]
Définir les filtres dans le code
Dans le JSON d'un type de document, la propriété s'appelle link_filters. Sa valeur est la liste JSON sous forme de chaîne :
{
"fieldname": "supplier",
"fieldtype": "Link",
"options": "Supplier",
"link_filters": "[[\"Supplier\", \"disabled\", \"=\", 0]]"
}
Résoudre les problèmes courants
| Problème | Vérification |
|---|---|
| Le filtre ne s'applique pas | Le premier élément de chaque filtre est le type de document cible du champ. Le nom du champ est le nom technique, pas l'étiquette. |
La valeur eval: est vide | Le champ lu par l'expression est-il rempli avant d'ouvrir la liste ? |
| Erreur à l'enregistrement | Chaque filtre a exactement quatre valeurs. Le JSON est valide. |
Pages liées
- Champs de formulaire
- Personnaliser les requêtes de liens : filtres calculés par script