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_rowsPas 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_rowsPas 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 SetterValeur
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.