[{"data":1,"prerenderedAt":359},["ShallowReactive",2],{"\u002Fnext\u002Fdodock\u002Fdeveloppeurs\u002Frapport-requete-validation-filtres":3,"section:\u002Fnext\u002Fdodock\u002Fdeveloppeurs\u002Frapport-requete-validation-filtres":358},{"id":4,"title":5,"body":6,"description":344,"extension":345,"meta":346,"navigation":347,"path":354,"seo":355,"stem":356,"__hash__":357},"docs\u002F2.next\u002F3.dodock\u002F10.developpeurs\u002Frapport-requete-validation-filtres.md","Rapport requête : validation des filtres côté serveur",{"type":7,"value":8,"toc":333},"minimark",[9,13,22,50,55,61,104,107,111,120,156,159,199,203,206,238,242,278,282,303,307],[10,11,5],"h1",{"id":12},"rapport-requête-validation-des-filtres-côté-serveur",[14,15,16,17,21],"p",{},"Par défaut, les filtres d'un rapport requête sont définis uniquement dans le JavaScript du rapport (",[18,19,20],"code",{},"frappe.query_reports[\"Nom du rapport\"]","). Lorsque le rapport s'exécute sans le Desk — via l'API, un rapport préparé ou un envoi automatique de rapport — aucune validation des filtres obligatoires, des options ou des types n'est effectuée.",[14,23,24,25,29,30,33,34,37,38,41,42,45,46,49],{},"Cochez la case ",[26,27,28],"strong",{},"Valider les filtres"," (",[18,31,32],{},"validate_filters",", libellé non traduit) sur le document ",[26,35,36],{},"Rapport"," pour définir les filtres dans la table ",[26,39,40],{},"Filtres"," et les faire valider par le serveur avant l'exécution du rapport. Le JavaScript du rapport conserve uniquement des comportements comme ",[18,43,44],{},"get_query",", fusionnés avec les lignes du serveur par ",[18,47,48],{},"fieldname",".",[51,52,54],"h2",{"id":53},"comportement-lorsque-la-validation-est-activée","Comportement lorsque la validation est activée",[14,56,57,58,60],{},"Lorsque ",[26,59,28],{}," est coché, le serveur, avant d'exécuter le rapport :",[62,63,64,68,71,98,101],"ul",{},[65,66,67],"li",{},"applique les valeurs par défaut des filtres ;",[65,69,70],{},"vérifie que les filtres obligatoires ont une valeur ;",[65,72,73,74,77,78,81,82,85,86,89,90,93,94,97],{},"contrôle les valeurs : options des champs ",[26,75,76],{},"Select",", existence et permission de lecture (ou de sélection) des valeurs ",[26,79,80],{},"Link",", nombres valides pour ",[26,83,84],{},"Int",", ",[26,87,88],{},"Float"," et ",[26,91,92],{},"Currency",", 0 ou 1 pour ",[26,95,96],{},"Check",", dates, heures et plages de dates valides ;",[65,99,100],{},"rejette les clés de filtres inconnues (hors lignes de la table et hors clés réservées du framework) ;",[65,102,103],{},"convertit chaque valeur vers le type du champ avant l'exécution.",[14,105,106],{},"Sans la case cochée, les filtres ne sont pas validés côté serveur et le serveur exécute le rapport avec les filtres reçus.",[51,108,110],{"id":109},"types-de-filtres-disponibles","Types de filtres disponibles",[14,112,113,114,116,117,119],{},"Avec ",[26,115,28],{},", la table ",[26,118,40],{}," accepte notamment :",[62,121,122,131,147],{},[65,123,124,29,127,130],{},[26,125,126],{},"Autocomplétion",[18,128,129],{},"Autocomplete",") ;",[65,132,133,29,136,139,140,143,144,146],{},[26,134,135],{},"Liste à sélections multiples",[18,137,138],{},"MultiSelectList",") : chaque élément est vérifié comme une valeur Link. Le DocType peut être indiqué directement dans ",[26,141,142],{},"Options"," ou par le ",[18,145,48],{}," d'un autre filtre de la table, dont la valeur résolue est alors utilisée comme DocType ;",[65,148,149,29,152,155],{},[26,150,151],{},"Plage de dates",[18,153,154],{},"DateRange",") : la valeur doit être une liste de deux dates valides, la date de début ne devant pas être postérieure à la date de fin.",[14,157,158],{},"Règles de configuration des lignes :",[62,160,161,171,182,192],{},[65,162,163,164,167,168,170],{},"un filtre ",[26,165,166],{},"Lien"," doit avoir un DocType dans ",[26,169,142],{}," ;",[65,172,173,174,177,178,89,180,170],{},"l'option ",[26,175,176],{},"Filtre avec caractère générique"," est refusé pour les types ",[26,179,135],{},[26,181,151],{},[65,183,184,185,89,187,189,190,170],{},"les types ",[26,186,135],{},[26,188,151],{}," ne sont disponibles qu'avec ",[26,191,28],{},[65,193,194,195,198],{},"les valeurs des filtres ",[26,196,197],{},"Lien dynamique"," ne sont pas vérifiées contre les enregistrements existants.",[51,200,202],{"id":201},"valeurs-par-défaut","Valeurs par défaut",[14,204,205],{},"Les valeurs par défaut des filtres suivent les règles des formulaires :",[62,207,208,214,217,226],{},[65,209,210,213],{},[18,211,212],{},"__user"," est remplacé par l'utilisateur de la session ;",[65,215,216],{},"« Aujourd'hui » et « Now » sont résolus en date \u002F heure courante du site ;",[65,218,219,220,222,223,170],{},"les valeurs par défaut enregistrées de l'utilisateur s'appliquent uniquement aux filtres ",[26,221,166],{}," sans valeur par défaut propre, et jamais aux liens vers le DocType ",[26,224,225],{},"User",[65,227,228,229,231,232,234,235,237],{},"une valeur par défaut de ",[26,230,135],{}," ou de ",[26,233,151],{}," est convertie en liste ; une date seule de ",[26,236,151],{}," est étendue en une plage allant de cette date à elle-même.",[51,239,241],{"id":240},"validation-des-valeurs-reçues","Validation des valeurs reçues",[62,243,244,250,256,263,275],{},[65,245,246,247,249],{},"une valeur vide (chaîne vide, liste vide ou valeur nulle) est acceptée pour un filtre facultatif, mais un filtre obligatoire sans valeur est rejeté, y compris une ",[26,248,135],{}," vide ;",[65,251,252,253,255],{},"les valeurs non textuelles correspondant à une option d'un champ ",[26,254,76],{}," sont acceptées ;",[65,257,258,259,262],{},"une valeur Link « fausse » comme ",[18,260,261],{},"0"," est bien vérifiée contre le DocType ;",[65,264,265,266,85,269,89,272,170],{},"les valeurs natives envoyées par l'API (date, datetime, heure) sont acceptées pour les filtres ",[26,267,268],{},"Date",[26,270,271],{},"Datetime",[26,273,274],{},"Time",[65,276,277],{},"les filtres non fournis reçoivent leur valeur par défaut avant la validation.",[51,279,281],{"id":280},"où-la-validation-sapplique","Où la validation s'applique",[62,283,284,290,293,300],{},[65,285,286,287,130],{},"exécution d'un rapport requête, y compris via l'API (",[18,288,289],{},"frappe.desk.query_report",[65,291,292],{},"ouverture d'un rapport préparé par son nom : les filtres enregistrés sont validés, même lorsqu'ils sont vides ;",[65,294,295,296,299],{},"enregistrement d'un ",[26,297,298],{},"Envoi programmé de rapports"," : les filtres obligatoires du rapport validé sont vérifiés à l'enregistrement ;",[65,301,302],{},"dans le Desk, les filtres des rapports validés sont initialisés avec les valeurs par défaut résolues par le serveur, et les boîtes de dialogue de filtres enregistrés (rapport automatique, graphiques, cartes de nombre) conservent les valeurs effacées des filtres des rapports validés.",[51,304,306],{"id":305},"exemple","Exemple",[14,308,309,310,313,314,85,317,89,320,323,324,326,327,329,330,332],{},"Le rapport standard ",[26,311,312],{},"Permitted Documents For User"," (« Documents autorisés par utilisateur ») utilise cette validation : ses filtres ",[18,315,316],{},"user",[18,318,319],{},"doctype",[18,321,322],{},"show_permissions"," sont définis dans les lignes du document ",[26,325,36],{},", et seul le ",[18,328,44],{}," du filtre ",[18,331,319],{}," reste dans le fichier JavaScript du rapport.",{"title":334,"searchDepth":335,"depth":336,"links":337},"",1,2,[338,339,340,341,342,343],{"id":53,"depth":336,"text":54},{"id":109,"depth":336,"text":110},{"id":201,"depth":336,"text":202},{"id":240,"depth":336,"text":241},{"id":280,"depth":336,"text":281},{"id":305,"depth":336,"text":306},"Définir les filtres d'un rapport dans le DocType Report et activer Validate Filters pour les contrôler côté serveur avant l'exécution.","md",{"reviewed":347,"last_verified":348,"sources":349},true,"2026-11-04",[350,351,352,353],"dodock@develop:frappe\u002Fcore\u002Fdoctype\u002Freport\u002Freport.json","dodock@develop:frappe\u002Fcore\u002Fdoctype\u002Freport_filter\u002Freport_filter.json","dodock@develop:frappe\u002Fdesk\u002Fquery_report.py","dodock@develop:frappe\u002Fcore\u002Freport\u002Fpermitted_documents_for_user\u002Fpermitted_documents_for_user.json","\u002Fnext\u002Fdodock\u002Fdeveloppeurs\u002Frapport-requete-validation-filtres",{"title":5,"description":344},"2.next\u002F3.dodock\u002F10.developpeurs\u002Frapport-requete-validation-filtres","3_8frT1tXvrkqOM0gSn6CumWnjrsBD-viH4tfTqdi7o",{},1793871749848]