Les formulaires dans Dokos permettent de saisir et modifier des données de manière structurée. Cette page explique les fonctionnalités avancées liées à la gestion des formulaires, notamment la personnalisation des champs et le comportement des commits.
Chaque champ dans un formulaire peut être configuré pour répondre à des besoins spécifiques. Voici les éléments clés à connaître :
Pour configurer un champ de type Table dans un formulaire de commande client :
Depuis la version 5 de Dokos, un nouveau mécanisme de commit a été introduit pour améliorer la réactivité et la précision des formulaires. Voici ce qui change :
change lorsqu'une modification est validée (par exemple, après avoir quitté le champ ou appuyé sur Entrée).__row_id) est généré côté client. Cet identifiant est remplacé par un name côté serveur lors de l'enregistrement.Prenons l'exemple d'un formulaire de Commande Client avec une table d'articles :
__row_id) est généré pour cette ligne.qty et l'identifiant de la ligne concernée.name permanent.commit plutôt que de surveiller les changements globaux du document.__row_id) pour suivre les modifications côté client avant l'enregistrement.| Problème | Cause possible | Solution |
|---|---|---|
| Les modifications dans une table ne sont pas enregistrées | Le champ n'a pas émis de commit | Vérifiez que le champ a bien été quitté ou validé avant l'enregistrement |
| Les sélections de lignes sont perdues après enregistrement | Première sauvegarde d'une ligne ajoutée dans la session | Ce comportement est normal pour la première sauvegarde. Les sélections seront conservées lors des enregistrements suivants |
| Les valeurs par défaut ne sont pas appliquées | Configuration incorrecte des valeurs par défaut | Vérifiez la configuration des champs enfants dans le doctype |
Pour déboguer les commits émis par les champs, vous pouvez activer la journalisation dans la console du navigateur :
// Activer la journalisation des commits
frappe.ui.form.on('Commande Client', {
refresh: function(frm) {
frm.fields.forEach(field => {
if (field.df.fieldtype === 'Table') {
field.grid.grid_rows.forEach(row => {
row.docfields.forEach(docfield => {
frappe.model.on('commit', docfield.fieldname, (fieldname, value) => {
console.log(`Commit émis pour ${fieldname}:`, value);
});
});
});
} else {
frappe.model.on('commit', field.df.fieldname, (fieldname, value) => {
console.log(`Commit émis pour ${fieldname}:`, value);
});
}
});
}
});
Le nouveau mécanisme de commit des champs dans Dokos v5 améliore la précision et la réactivité des formulaires, notamment pour les tables. En suivant les bonnes pratiques décrites ici, les utilisateurs et développeurs peuvent tirer pleinement parti de ces améliorations.
Pour plus d'informations sur la personnalisation des formulaires, consultez la section Personnalisation de l'interface.