Version de développement
Cette documentation décrit la version « next » (develop), non encore publiée. Pour la version stable, basculez sur « v5 » dans l'en-tête.
Développeurs
Champs Table (interface v2) : restreindre l'ajout et la suppression de lignes
Masquer l'ajout ou la suppression de lignes d'un champ Table dans les formulaires FormLayout avec les propriétés cannot_add_rows et cannot_delete_rows.
Champs Table (interface v2) : restreindre l'ajout et la suppression de lignes
Les formulaires de l'interface v2 (composant FormLayout) lisent deux propriétés d'un champ Table :
| Propriété | Effet dans la grille |
|---|---|
cannot_add_rows | Pas de bouton « Add Row ». Le menu d'une ligne garde seulement « Edit » : pas de « Insert Above », « Insert Below » ni « Duplicate ». Un collage ne crée pas de ligne. |
cannot_delete_rows | Pas de bouton « Delete (N) » quand des lignes sont sélectionnées. |
Avec les deux propriétés, la barre d'actions sous la grille disparaît. Les lignes existantes restent modifiables et le glisser-déposer pour les réordonner reste actif.
Définir les propriétés
Ces deux propriétés ne sont pas des champs de DocField. Définissez-les avec une propriété personnalisée (Property Setter) sur le champ Table du DocType parent :
| Champ du Property Setter | Valeur |
|---|---|
Applicable pour (doctype_or_field) | DocField |
DocType (doc_type) | DocType parent, par exemple Sales Order |
Nom du Champ (field_name) | Champ Table, par exemple items |
Propriété (property) | cannot_add_rows ou cannot_delete_rows |
Type de Propriété (property_type) | Check |
Définir la Valeur (value) | 1 |
Rechargez le formulaire après l'enregistrement.
Dans une application, ajoutez la personnalisation dans un fichier de fixtures ou un correctif :
from frappe.custom.doctype.property_setter.property_setter import make_property_setter
make_property_setter("Sales Order", "items", "cannot_add_rows", 1, "Check")
Dans le desk classique, un script client fait la même chose : frm.set_df_property("items", "cannot_add_rows", 1).
Limites
- Ces propriétés agissent sur l'interface seulement. Un script qui ajoute ou retire des lignes n'est pas bloqué.
- Les permissions côté serveur ne changent pas. Pour interdire une modification, utilisez les permissions du DocType.