[{"data":1,"prerenderedAt":358},["ShallowReactive",2],{"\u002Fnext\u002Fdodock\u002Finterface\u002Fsuppression-et-annulation-en-arriere-plan":3,"section:\u002Fnext\u002Fdodock\u002Finterface\u002Fsuppression-et-annulation-en-arriere-plan":357},{"id":4,"title":5,"body":6,"description":345,"extension":346,"meta":347,"navigation":348,"path":353,"seo":354,"stem":355,"__hash__":356},"docs\u002F2.next\u002F3.dodock\u002F02.interface\u002Fsuppression-et-annulation-en-arriere-plan.md","Suppression et annulation de documents en arrière-plan",{"type":7,"value":8,"toc":323},"minimark",[9,13,18,22,25,29,33,46,66,69,75,79,84,91,107,120,124,127,135,139,142,153,157,161,171,174,185,188,192,195,200,204,207,211,214,228,231,235,238,241,245,259,263],[10,11,5],"h1",{"id":12},"suppression-et-annulation-de-documents-en-arrière-plan",[14,15,17],"h2",{"id":16},"pourquoi-un-traitement-en-arrière-plan","Pourquoi un traitement en arrière-plan ?",[19,20,21],"p",{},"Lorsqu'un document est lié à un grand nombre d'autres documents (factures, écritures comptables, transactions diverses), sa suppression ou son annulation entraîne le traitement de toutes ces dépendances.",[19,23,24],{},"Une seule requête qui traite des centaines de documents risque de dépasser le délai d'attente du serveur. Tout le travail serait alors annulé. Dodock confie donc les opérations volumineuses à une file d'attente en arrière-plan.",[26,27,28],"mermaid",{},"\nflowchart LR\n  A[Demande de suppression\\nou d'annulation] --> B{Graphe de dépendances\\n≤ 50 documents ?}\n  B -- Oui --> C[Traitement synchrone\\nimmediat]\n  B -- Non --> D[Mise en file d'attente\\ntraitement en arrière-plan]\n  C --> E[Confirmation immédiate]\n  D --> F[Notification à la fin\\ndu traitement]\n",[14,30,32],{"id":31},"seuil-de-bascule","Seuil de bascule",[19,34,35,36,40,41,45],{},"Dokos utilise un seuil interne de ",[37,38,39],"strong",{},"50 documents"," (",[42,43,44],"code",{},"MAX_SYNCHRONOUS_LINKED_DOCS",") pour décider du mode de traitement :",[47,48,49,56],"ul",{},[50,51,52,55],"li",{},[37,53,54],{},"En dessous du seuil"," : la suppression ou l'annulation s'effectue immédiatement, de façon synchrone, et l'utilisateur voit le résultat tout de suite.",[50,57,58,61,62,65],{},[37,59,60],{},"Au-dessus du seuil"," : Dokos place le travail dans la file d'attente des traitements longs (",[42,63,64],{},"long",") et rend la main à l'utilisateur. Une notification confirme le résultat à la fin.",[19,67,68],{},"L'annulation passe aussi en arrière-plan, quel que soit le nombre de documents, si le type de document racine a l'option de mise en file d'attente en arrière-plan et que le planificateur est actif.",[70,71,72],"blockquote",{},[19,73,74],{},"Ce seuil n'est pas configurable. Il reflète la limite au-delà de laquelle une requête synchrone risque de dépasser le délai d'attente du serveur.",[14,76,78],{"id":77},"comportement-détaillé","Comportement détaillé",[80,81,83],"h3",{"id":82},"annulation-tout-annuler","Annulation (« Tout annuler »)",[19,85,86,87,90],{},"Lorsque vous cliquez sur ",[37,88,89],{},"Tout annuler"," depuis un document soumis (devis, commande, facture, etc.) :",[92,93,94,97,100],"ol",{},[50,95,96],{},"Dokos parcourt le graphe des documents liés à annuler.",[50,98,99],{},"Si le graphe contient moins de 50 documents, tous les documents — y compris le document racine — sont annulés dans une seule transaction. Si un échec survient, l'ensemble de l'opération est annulé (approche « tout ou rien »).",[50,101,102,103,106],{},"Si le graphe dépasse 50 documents, Dokos confie l'opération à la file d'attente en arrière-plan. Le document racine n'est ",[37,104,105],{},"pas"," annulé immédiatement : il le sera en même temps que ses dépendances, à la fin du traitement en arrière-plan.",[70,108,109],{},[19,110,111,112,115,116,119],{},"Les scripts d'événements ",[42,113,114],{},"before_cancel"," et ",[42,117,118],{},"after_cancel"," sont exécutés autour de l'annulation, que le traitement soit synchrone ou en arrière-plan.",[80,121,123],{"id":122},"suppression-tout-supprimer","Suppression (« Tout supprimer »)",[19,125,126],{},"Le comportement est identique à l'annulation :",[47,128,129,132],{},[50,130,131],{},"Le document racine est supprimé en dernier, dans la même transaction que ses dépendances.",[50,133,134],{},"En cas d'échec sur un document bloquant, l'ensemble de la transaction est annulé et aucun document n'est supprimé.",[80,136,138],{"id":137},"gestion-des-échecs","Gestion des échecs",[19,140,141],{},"Les traitements en arrière-plan sont protégés contre les échecs partiels :",[47,143,144,147,150],{},[50,145,146],{},"L'opération s'exécute sous un point de sauvegarde (savepoint). Si un document ne peut être annulé ou supprimé (verrouillage par un autre utilisateur, dépendance inattendue), Dokos annule l'ensemble de la transaction et signale le document bloquant.",[50,148,149],{},"En cas de verrouillage concurrent (deadlock), la transaction est entièrement annulée et l'utilisateur en est informé.",[50,151,152],{},"Le compte utilisateur à l'origine de la demande est vérifié : s'il a été désactivé entre la demande et le traitement, l'opération est abandonnée en silence.",[14,154,156],{"id":155},"liste-des-documents-bloquants","Liste des documents bloquants",[80,158,160],{"id":159},"jusquà-500-documents","Jusqu'à 500 documents",[19,162,163,164,40,167,170],{},"Lorsque vous demandez la suppression ou l'annulation d'un document, Dokos établit la liste des documents liés qui doivent être traités en premier. Cette liste est plafonnée à ",[37,165,166],{},"500 documents",[42,168,169],{},"MAX_LINKED_DOCUMENTS_LISTED",").",[19,172,173],{},"Si le nombre de documents liés est inférieur à ce plafond, la boîte de dialogue affiche :",[47,175,176,179,182],{},[50,177,178],{},"les types de documents concernés,",[50,180,181],{},"jusqu'à 10 noms par type de document,",[50,183,184],{},"la mention « et N de plus » au-delà de 10 noms pour un type.",[26,186,187],{},"\nflowchart TD\n  A[Ouverture de la boîte\\nde dialogue] --> B{Nombre de dépendances\\n≤ 500 ?}\n  B -- Oui --> C[Affichage de la liste\\ndes documents bloquants]\n  B -- Non --> D[Boîte de dialogue\\nsans liste]\n  D --> E[Confirmation par l'utilisateur]\n  C --> F[Confirmation par l'utilisateur]\n  F --> G{Dépendances réelles\\n≤ 50 ?}\n  E --> I\n  G -- Oui --> H[Traitement synchrone]\n  G -- Non --> I[Traitement en arrière-plan]\n",[80,189,191],{"id":190},"au-delà-de-500-documents","Au-delà de 500 documents",[19,193,194],{},"Si le graphe de dépendances dépasse le plafond d'affichage, la boîte de dialogue n'affiche plus de liste détaillée. Dokos demande une confirmation simple, sans énumérer les documents. Le traitement en arrière-plan découvre alors lui-même l'intégralité du graphe, sans limite de taille.",[70,196,197],{},[19,198,199],{},"Cette approche évite de surcharger l'interface avec des milliers de lignes tout en garantissant que tous les documents liés sont traités.",[80,201,203],{"id":202},"revalidation-au-moment-de-la-confirmation","Revalidation au moment de la confirmation",[19,205,206],{},"Lorsque vous confirmez l'opération, Dokos vérifie à nouveau le graphe de dépendances. Les documents qui ne sont plus liés au document racine sont retirés de la liste. Si le graphe dépasse maintenant 500 documents, Dokos bascule vers le traitement en arrière-plan, qui découvre lui-même tout le graphe.",[14,208,210],{"id":209},"notifications-de-fin-de-traitement","Notifications de fin de traitement",[19,212,213],{},"Pour les opérations traitées en arrière-plan, Dokos informe l'utilisateur de la fin du traitement par deux canaux :",[92,215,216,222],{},[50,217,218,221],{},[37,219,220],{},"Message en temps réel"," : une notification apparaît à l'écran si l'utilisateur est connecté au moment où le traitement se termine.",[50,223,224,227],{},[37,225,226],{},"Journal de notifications"," : une entrée est créée dans le journal de notifications, consultable à tout moment depuis la cloche de notifications de la barre d'icônes à gauche de l'écran.",[19,229,230],{},"Ces notifications ne sont envoyées qu'après la validation définitive de l'opération (après le commit en base de données), ce qui garantit qu'elles ne signalent que des opérations effectivement terminées.",[14,232,234],{"id":233},"limite-des-recherches-de-références","Limite des recherches de références",[19,236,237],{},"Les recherches de références permettant d'établir le graphe de dépendances sont elles-mêmes bornées. Si un document possède un très grand nombre de références directes (par exemple, un client référencé dans des milliers de factures), la recherche s'arrête à une limite interne et signale que la liste est tronquée.",[19,239,240],{},"Cette limite protège le serveur contre l'épuisement des ressources, tout en garantissant qu'aucun document bloquant ne reste masqué derrière la limite.",[14,242,244],{"id":243},"documents-sans-dépendances","Documents sans dépendances",[47,246,247,253],{},[50,248,249,252],{},[37,250,251],{},"Annulation"," : un document sans documents liés validés est annulé directement, sans liste.",[50,254,255,258],{},[37,256,257],{},"Suppression"," : un document sans documents liés est supprimé directement.",[14,260,262],{"id":261},"points-clés-à-retenir","Points-clés à retenir",[264,265,266,279],"table",{},[267,268,269],"thead",{},[270,271,272,276],"tr",{},[273,274,275],"th",{},"Aspect",[273,277,278],{},"Comportement",[280,281,282,291,299,307,315],"tbody",{},[270,283,284,288],{},[285,286,287],"td",{},"Seuil synchrone \u002F arrière-plan",[285,289,290],{},"50 documents liés",[270,292,293,296],{},[285,294,295],{},"Plafond d'affichage de la liste",[285,297,298],{},"500 documents liés",[270,300,301,304],{},[285,302,303],{},"Traitement",[285,305,306],{},"« Tout ou rien » : tout réussit ou tout est annulé",[270,308,309,312],{},[285,310,311],{},"Notification",[285,313,314],{},"Message temps réel + journal de notifications",[270,316,317,320],{},[285,318,319],{},"Revalidation à la confirmation",[285,321,322],{},"Documents plus liés retirés. Bascule en arrière-plan au-delà de 500 documents.",{"title":324,"searchDepth":325,"depth":326,"links":327},"",1,2,[328,329,330,336,341,342,343,344],{"id":16,"depth":326,"text":17},{"id":31,"depth":326,"text":32},{"id":77,"depth":326,"text":78,"children":331},[332,334,335],{"id":82,"depth":333,"text":83},3,{"id":122,"depth":333,"text":123},{"id":137,"depth":333,"text":138},{"id":155,"depth":326,"text":156,"children":337},[338,339,340],{"id":159,"depth":333,"text":160},{"id":190,"depth":333,"text":191},{"id":202,"depth":333,"text":203},{"id":209,"depth":326,"text":210},{"id":233,"depth":326,"text":234},{"id":243,"depth":326,"text":244},{"id":261,"depth":326,"text":262},"Gérez de grands ensembles de documents liés lors de la suppression ou de l'annulation sans risque de délai d'attente dépassé.","md",{"reviewed":348,"last_verified":349,"sources":350},true,"2026-11-03",[351,352],"frappe\u002Fdesk\u002Fform\u002Flinked_with.py","frappe\u002Fpublic\u002Fjs\u002Ffrappe\u002Fform\u002Fform.js","\u002Fnext\u002Fdodock\u002Finterface\u002Fsuppression-et-annulation-en-arriere-plan",{"title":5,"description":345},"2.next\u002F3.dodock\u002F02.interface\u002Fsuppression-et-annulation-en-arriere-plan","5u29EDKJ8ra8JpFoTT3SUQpEVaK7ynq6BDUyfTLAOZw",{},1793871791483]