Code source wiki de Modifier par lot

Version 11.1 par Joséphine Ducruet le 2025/08/27 11:53

Afficher les derniers auteurs
1 (% class="mark small" %)**Version 3.5 et ultérieures**
2
3 |(% style="width:840px" %)(((
4 (((
5 = Points clés avant de se lancer =
6
7 La **modification globale (ou par lot)** est réservée aux professionnels habilités.
8 Elle permet de mettre à jour, en temps réel, un ensemble de notices issues d’une recherche, selon différents axes :
9
10 * remplacer partiellement ou totalement la valeur d’un champ,
11 * ajouter une valeur,
12 * supprimer le contenu d’un champ,
13 * échanger des autorités,
14 * supprimer des notices.
15
16 (% class="box warningmessage" %)
17 (((
18 **Attention** : une fois validées, les modifications sont irréversibles.
19 )))
20
21 (% class="box successmessage" %)
22 (((
23 **Bonnes pratiques :**
24
25 * **Toujours tester sur la base de formation** avant d’appliquer en production.
26 * Planifier les **grosses modifications en fin de journée**, lorsque les autres utilisateurs ne sont pas connectés, afin d’éviter les ralentissements.
27 )))
28
29 = Rechercher les notices à modifier =
30
31 Deux modes d’accès sont possibles (selon vos droits) :
32
33 == Depuis l’Administration ==
34
35 1. Espace de travail //Administration// → Menu **Données / Modification globale**.
36 1. Sélectionner la source, puis la table concernée.
37 1. Choisir l'index de recherche
38 1. Définir les critères de recherche.
39
40 [[Accès à la modification globale depuis l'administration>>image:1717771048889-896.png||data-xwiki-image-style-alignment="center" data-xwiki-image-style-border="true"]]
41
42
43 [[Interface de recherche de la modification globale>>image:1717771513301-161.png||data-xwiki-image-style-alignment="center" data-xwiki-image-style-border="true"]]
44
45 == Depuis une liste de résultats ==
46
47 1. À l’issue d’une recherche standard, **sélectionner les notices à modifier** (ou laisser vide pour traiter l’ensemble de la liste).
48 1. Cliquer sur le bouton de **modification par lot**.
49
50 [[Modification par lot depuis une liste de résultats>>image:1717771746741-695.png||data-xwiki-image-style-alignment="center" data-xwiki-image-style-border="true"]]
51
52
53 [[Modification par lot sans sélection de notices>>image:1717771855009-131.png||data-xwiki-image-style-alignment="center" data-xwiki-image-style-border="true"]]
54
55 = Remplacer une valeur =
56
57 Permet de **remplacer la valeur d’un champ par une autre**.
58
59 >(% class="small" %)Ex. remplacer la dénomination //table// par //chaise//.
60
61 == Définir la valeur à remplacer ==
62
63 La **source** et la **table** sur lesquelles effectuer les modifications sont pré-remplies par défaut.
64 Il faut ensuite choisir le **champ** concerné.
65
66 Par défaut, la case **Trier par libellé** est cochée : le champ apparaît sous la forme //Libellé (nom informatique)//, ce qui permet de distinguer des champs portant le même libellé.
67
68 Il suffit enfin de renseigner :
69
70 * la **valeur recherchée**,
71 * la **nouvelle valeur** souhaitée.
72
73 [[Exemple : remplacer la dénomination table par chaise>>image:1717772769570-868.png||data-xwiki-image-style-alignment="center" data-xwiki-image-style-border="true"]]
74
75 == Option Forcer ==
76
77 Cocher la case **Forcer** permet de ne pas spécifier de valeur recherchée : toutes les notices sélectionnées seront modifiées.
78
79 >(% class="small" %)**Exemple :**Notice A : Dénomination = //table//
80
81 >(% class="small" %)Notice B : Dénomination = //tabouret//
82
83 >(% class="small" %)**Action : Remplacer Dénomination → Nouvelle valeur = //chaise// + Forcer coché**
84
85 >(% class="small" %)**Résultat :**
86
87 >(% class="small" %)Notice A : Dénomination = //chaise//
88
89 >(% class="small" %)Notice B : Dénomination = //chaise//
90
91 (% class="box successmessage" %)
92 (((
93 **À retenir :**
94
95 * L’option **Forcer** écrase sans distinction toutes les valeurs présentes dans le champ sélectionné.
96 * Elle est **particulièrement utile** lorsque les notices sélectionnées comportent **des valeurs différentes** dans le champ à modifier, mais que l’on souhaite toutes les uniformiser avec une même donnée.
97 * C’est une action **radicale** à réserver aux cas où toutes les notices doivent avoir exactement la même donnée.
98 )))
99
100 == Options de remplacement ==
101
102 Ces options permettent d’affiner le comportement du remplacement. Elles apparaissent juste en dessous du champ //Nouvelle valeur//.
103
104 (% class="box warningmessage" %)
105 (((
106 **Important** : ces options ne concernent que les champs en **texte libre**.
107 Ne les utilisez pas sur les champs de type **liens, thésaurus ou listes**, car cela peut provoquer des pertes de données.
108 Si vous avez un doute, laissez les réglages par défaut : **Champ entier** + **Occurrence**.
109 )))
110
111 === Chercher ===
112
113 Cette option permet de **préciser le niveau de recherche de la valeur à remplacer**, selon qu’il s’agit d’une simple séquence de caractères, d’un mot complet ou de l’intégralité du champ.
114
115 * **Caractère** → recherche une simple suite de caractères
116 * **Mot entier** → recherche un mot complet
117 * **Champ entier** → recherche la valeur complète du champ
118
119 >(% class="small" %)Exemple :
120
121 >(% class="small" %)Texte de départ : Inventaire des peintures anciennes
122
123 >(% class="small" %)Caractère : Recherche de **tair** → prend en compte uniquement la suite de caractères dans //Inven**tair**e//.
124
125 >(% class="small" %)Mot entier : Recherche de **Inventaire** → prend en compte uniquement le mot complet **//Inventaire//**.
126
127 >(% class="small" %)Champ entier : Recherche de** Inventaire des peintures anciennes** → prend en compte le texte complet **Inventaire des peintures anciennes**
128
129 === Emplacement ===
130
131 Cette option permet de préciser **où** la nouvelle valeur sera appliquée dans le champ : uniquement à l’occurrence trouvée, à tout le champ, au début ou à la fin du texte.
132
133 * **Occurrence** → seule la partie identifiée est remplacée.
134 * **Champ entier** → tout le contenu du champ est remplacé (quelque soit la recherche)
135 * **Début de champ** → la nouvelle valeur est ajoutée au début du texte existant.
136 * **Fin de champ** → la nouvelle valeur est ajoutée à la fin du texte existant.
137
138 Elle se **combine** avec le réglage **Chercher** (Caractère, Mot entier, Champ entier).
139
140 >(% class="small" %)**Exemple**
141
142 >(% class="small" %)Texte de départ : Inventaire des peintures anciennes
143
144 >(% class="small" %)**Cas 1** Chercher = Caractère **pein** | Nouvelle valeur : **phot**
145
146 (((
147 |=(% style="text-align: center;" %)(% class="small" %)Chercher|=(% style="text-align: center;" %)(% class="small" %)Emplacement|=(% style="text-align: center;" %)(% class="small" %)Résultat
148 |(%%)(% class="small" %)Caractère|(%%)(% class="small" %)Occurrence|(%%)(% class="small" %)Inventaire des **phot**tures anciennes
149 |(%%)(% class="small" %)Caractère|(%%)(% class="small" %)Champ entier|(%%)(% class="small" %)**phot**
150 |(%%)(% class="small" %)Caractère|(%%)(% class="small" %)Début de champ|(%%)(% class="small" %)**phot**Inventaire des peintures anciennes
151 |(%%)(% class="small" %)Caractère|(%%)(% class="small" %)Fin de champ|(%%)(% class="small" %)Inventaire des peintures anciennes**phot**
152 )))
153
154 >(% class="small" %)**Cas 2** Chercher = Mot entier **peintures** | Nouvelle valeur : **dessins**
155
156 |=(% style="text-align: center;" %)(% class="small" %)Chercher|=(% style="text-align: center;" %)(% class="small" %)Emplacement|=(% style="text-align: center;" %)(% class="small" %)Résultat
157 |(%%)(% class="small" %)Mot entier|(%%)(% class="small" %)Occurrence|(%%)(% class="small" %)Inventaire des **dessins** anciennes
158 |(%%)(% class="small" %)Mot entier|(%%)(% class="small" %)Champ entier|(%%)(% class="small" %)**dessins**
159 |(%%)(% class="small" %)Mot entier|(%%)(% class="small" %)Début de champ|(%%)(% class="small" %)**dessins**Inventaire des peintures anciennes
160 |(%%)(% class="small" %)Mot entier|(%%)(% class="small" %)Fin de champ|(%%)(% class="small" %)Inventaire des peintures anciennes**dessins**
161
162 (% class="box warningmessage" %)
163 (((
164 **Attention :** cela ne fonctionnera pas si vous indiquez une **suite de caractères** au lieu d’un **mot complet**.
165 Par exemple, chercher (ou remplacer) « **pein** » en cochant l’option **Mot entier** ne donnera aucun résultat ; utilisez le mot complet « **peintures** ».
166 )))
167
168 >(% class="small" %)**Cas 3** Chercher = Champ entier **Inventaire des peintures anciennes** | Nouvelle valeur : **Catalogue des peintures**
169 )))
170
171 (((
172 |=(% class="small" %)Chercher|=(% class="small" %)Emplacement|=(% class="small" %)Résultat
173 |(%%)(% class="small" %)Champ entier|(%%)(% class="small" %)Occurrence|(%%)(% class="small" %)**Catalogue des peintures**
174 |(%%)(% class="small" %)Champ entier|(%%)(% class="small" %)Champ entier|(%%)(% class="small" %)**Catalogue des peintures**
175 |(%%)(% class="small" %)Champ entier|(%%)(% class="small" %)Début de champ|(%%)(% class="small" %)**Catalogue des peintures**Inventaire des peintures anciennes
176 |(%%)(% class="small" %)Champ entier|(%%)(% class="small" %)Fin de champ|(%%)(% class="small" %)Inventaire des peintures anciennes**Catalogue des peintures**
177
178 (% class="box warningmessage" %)
179 (((
180 Avec **Champ entier**, la valeur recherchée doit **correspondre exactement** au contenu du champ (pas seulement un mot ou un extrait).
181 )))
182
183 (% class="box successmessage" %)
184 (((
185 **A retenir : **
186
187 * **Chercher = quoi cibler** :
188 **Caractère** (séquence) · **Mot entier** (mot complet) · **Champ entier** (valeur exacte).
189 * **Emplacement = où appliquer** :
190 **Occurrence** (partie trouvée) · **Champ entier** (tout le champ) · **Début**/**Fin** (ajout en pré/suffixe).
191 * **Combinaison** : le résultat dépend **des deux** réglages (Chercher × Emplacement).
192 * Utile pour :
193 ** **Corriger une coquille**
194 ** **Remplacer un terme obsolète**
195 ** **Nettoyer la ponctuation et les espaces**
196 )))
197
198 == Respecter la casse ==
199
200 Active une recherche **strictement identique** à la valeur saisie : **majuscules, minuscules et accents** sont distingués.
201
202 (% class="box warningmessage" %)
203 (((
204 **Important** : ces options ne concernent que les champs en **texte libre**.
205 Ne les utilisez pas sur les champs de type **liens, thésaurus ou listes**, car cela peut provoquer des pertes de données.
206 Si vous avez un doute, laissez les réglages par défaut : **Champ entier** + **Occurrence**.
207 )))
208
209 >(% class="small" %)**Exemples :**
210
211 >(% class="small" %)**Majuscules**
212
213 >(% class="small" %)Champ : Catalogue Monet
214
215 >(% class="small" %)Recherche : monet avec **Respecter la casse** → **aucun résultat**
216
217 >(% class="small" %)(Décochez l’option ou recherchez Monet pour trouver la valeur.)
218
219 >(% class="small" %)**Accents**
220
221 >(% class="small" %)Champ : École de Paris
222
223 >(% class="small" %)Recherche : Ecole avec **Respecter la casse** → **aucun résultat**
224
225 >(% class="small" %)(Décochez l’option ou recherchez École pour trouver la valeur.)
226
227 (% class="box successmessage" %)
228 (((
229 **A retenir :
230 Effet** : correspondance **strictement identique** (majuscules/minuscules **et** accents pris en compte).
231 )))
232
233 == Remplacer toutes les occurrences présentes dans la valeur ==
234
235 Par défaut, **seule la première occurrence** trouvée dans le champ est remplacée.
236 En cochant **Remplacer toutes les occurrences présentes dans la valeur**, **toutes** les occurrences repérées dans ce même champ sont modifiées.
237
238 (% class="box warningmessage" %)
239 (((
240 **Important** : ces options ne concernent que les champs en **texte libre**.
241 Ne les utilisez pas sur les champs de type **liens, thésaurus ou listes**, car cela peut provoquer des pertes de données.
242 Si vous avez un doute, laissez les réglages par défaut : **Champ entier** + **Occurrence**.
243 )))
244
245 >(% class="small" %)**Exemple :**
246
247 >(% class="small" %)Champ (//Titre//) : Inventaire des peintures et des peintures anciennes
248
249 >(% class="small" %)Chercher = **Mot entier** peintures → Nouvelle valeur = dessins
250
251 >(% class="small" %)**Sans** l’option : Inventaire des ~*~*dessins~*~* et des peintures anciennes
252
253 >(% class="small" %)**Avec** l’option : Inventaire des ~*~*dessins~*~* et des ~*~*dessins~*~* anciennes
254
255 == Lancer le traitement ==
256
257 * **Lancer le test** : permet de vérifier que la modification globale va fonctionner.
258
259 (% class="box warningmessage" %)
260 (((
261 **Attention** : //Lancer le test ne permet pas de visualiser le résultat// (aucune donnée n’est modifiée).
262 )))
263
264 * **Lancer le traitement** : applique réellement la modification sur les notices sélectionnées.
265
266 = Ajouter une valeur =
267
268 == Définir la valeur à ajouter ==
269
270 1. La **source** et la **table** sont pré-remplies par défaut.
271 1. Sélectionnez le **champ** à modifier.
272 1. Par défaut, **Trier par libellé** est coché : le champ s’affiche sous la forme //Libellé (nom informatique)// pour distinguer les libellés identiques.
273 1. Renseignez la **nouvelle valeur** souhaitée.
274
275 [[Exemple : Ajoute du lieu d'utilisation Lyon>>image:1718002712583-345.png||data-xwiki-image-style-alignment="center" data-xwiki-image-style-border="true"]]
276
277 == Ajouter au champ parent existant ==
278
279 Ajoute la valeur **dans le champ déjà présent** sur la notice.
280
281 [[Ajout dans un champ parent existant>>image:1718004841774-374.png||data-xwiki-image-style-alignment="center" data-xwiki-image-style-border="true"]]
282
283
284 **Comportement selon le type de champ :**
285
286 * Champ **mono-valeur** vide → la valeur est **ajoutée**.
287 * Champ **mono-valeur** déjà renseigné → **aucun effet**.
288 * Champ **multi-valeur** vide → la valeur est **ajoutée**.
289 * Champ **multi-valeur** déjà renseigné → la valeur **complète** celles existantes.
290
291 == Créer un nouveau champ parent ==
292
293 **Duplique** le champ pour y ajouter la nouvelle valeur (uniquement pour les **champs duplicables**).
294
295 [[Duplication du champ lieu d'utilisation>>image:1718005071968-162.png||data-xwiki-image-style-alignment="center" data-xwiki-image-style-border="true"]]
296
297 == Lancer le traitement ==
298
299 * **Lancer le test** : permet de vérifier que la modification globale va fonctionner.
300
301 (% class="box warningmessage" %)
302 (((
303 **Attention** : //Lancer le test ne permet pas de visualiser le résultat// (aucune donnée n’est modifiée).
304 )))
305
306 * **Lancer le traitement** : applique réellement la modification sur les notices sélectionnées.
307
308 = Supprimer un champ =
309
310 Efface la **valeur d’un champ** sur les notices sélectionnées.
311
312 == Définir la suppression ==
313
314 1. La **source** et la **table** sont pré-remplies par défaut.
315 1. Sélectionnez le **champ** à nettoyer.
316 1. Par défaut, **Trier par libellé** est coché : le champ s’affiche sous la forme //Libellé (nom informatique)// pour distinguer les libellés identiques.
317 1. Renseignez la **valeur recherchée** (celle à supprimer).
318
319 (% class="box warningmessage" %)
320 (((
321 **Attention les options Chercher / Emplacement** **ne s’appliquent pas** à la suppression :
322 dès que la valeur recherchée est **présente** dans le champ, **l’occurrence du champ est supprimée en entier** (et pas seulement une partie du texte).
323 )))
324
325 [[Exemple : suppression du lieu d'utilisation Lyon>>image:1718005707106-758.png||data-xwiki-image-style-alignment="center" data-xwiki-image-style-border="true"]]
326
327
328 (% class="box successmessage" %)
329 (((
330 **Astuce :  Besoin de vider un champ sans spécifier de valeur recherchée ?**
331 Utilisez **Remplacer** plutôt que **Supprimer un champ.**
332 Sélectionnez le champ, activez **//Forcer//**, et **ne renseignez pas //Nouvelle valeur//**.
333
334 [[Vider le champ Date fin de collecte>>image:1718008933138-967.png||data-xwiki-image-style-alignment="center" data-xwiki-image-style-border="true"]]
335 )))
336
337 == Lancer le traitement ==
338
339 * **Lancer le test** : permet de vérifier que la modification globale va fonctionner.
340
341 (% class="box warningmessage" %)
342 (((
343 **Attention** : //Lancer le test ne permet pas de visualiser le résultat// (aucune donnée n’est modifiée).
344 )))
345
346 * **Lancer le traitement** : applique réellement la modification sur les notices sélectionnées.
347
348 = Echanger une autorité =
349
350 Permet de remplacer, dans les notices sélectionnées, une **autorité A** par une **autorité B** (personne, lieu, thésaurus, etc.) dans un **champ lié à une table d’autorités**.
351 )))
352
353 (((
354 == Définir l'échange ==
355
356 * La **source** et la **table** sont pré-remplies par défaut.
357 * Sélectionnez le **champ** à modifier (champ **lien** vers une autorité).
358 * Renseignez la **Table liée** (table d’autorité concernée : Personnes, Lieux...).
359 * Indiquez l’**Autorité à remplacer** (valeur recherchée) et l’**Autorité de remplacement** (nouvelle valeur).
360
361 (% class="box infomessage" %)
362 (((
363 Portée : si le champ accepte plusieurs valeurs, **seule l’occurrence** correspondant à l’autorité à remplacer est substituée ; les autres valeurs du champ sont **conservées**.
364 )))
365
366 [[Exemple : Echange de l'autorité Personnes Delacroix avec Botticelli>>image:1718007194775-136.png||data-xwiki-image-style-alignment="center" data-xwiki-image-style-border="true"]]
367
368 == Lancer le traitement ==
369
370 * **Lancer le test** : permet de vérifier que la modification globale va fonctionner.
371
372 (% class="box warningmessage" %)
373 (((
374 **Attention** : //Lancer le test ne permet pas de visualiser le résultat// (aucune donnée n’est modifiée).
375 )))
376
377 * **Lancer le traitement** : applique réellement la modification sur les notices sélectionnées.
378
379 = Supprimer des notices =
380
381 Supprime **définitivement** l’ensemble des notices sélectionnées.
382
383 (% class="box warningmessage" %)
384 (((
385 **Irréversible** : toute suppression de notice est **définitive**.
386 )))
387
388 [[Suppression de 59 notices>>image:1718007555125-860.png||data-xwiki-image-style-alignment="center" data-xwiki-image-style-border="true"]]
389
390
391 * **Ignorer les erreurs** : si l’option est cochée, la suppression se poursuit malgré les anomalies rencontrées ; si elle est décochée, le traitement s’interrompt dès la première erreur.
392 * **Lancer le test** : permet de vérifier que la modification globale va fonctionner.
393
394 (% class="box warningmessage" %)
395 (((
396 **Attention** : //Lancer le test ne permet pas de visualiser le résultat// (aucune donnée n’est modifiée).
397 )))
398
399 * **Lancer le traitement** : applique réellement la modification sur les notices sélectionnées.
400
401
402 )))
403 )))|(% style="width:300px" %)
404
405 == ==
406
407 = Lancer le traitement =
408
409
410 Une fois la modification paramétrée, cliquez sur Lancer le test pour tester le traitement (sans impact sur les données). Une page d'informations s'affiche en trois parties.
411
412 La première présente un résumé des informations de la modification. Le pourcentage de traitement réalisé apparaît en haut de l'écran.
413
414 [[image:1718007767433-901.png||data-xwiki-image-style-alignment="center" height="554" width="1184" class="img-thumbnail"]]
415
416 La seconde présente les informations remontées en cours de traitement ainsi que les clefs et digests des notices modifiées. En raison du nombre d’informations pouvant être remontées dans cette zone, son contenu est volatile. Si l’on quitte l’écran de modification globale et que l’on revient dessus, on ne verra plus les précédentes informations affichées. Le nombre de lignes pouvant être affiché dans cette zone est limité à 10000. Passé ce nombre, « ….. » s'affiche.
417
418 [[image:1718007797909-766.png||data-xwiki-image-style-alignment="center" height="552" width="1177" class="img-thumbnail"]]
419
420 La troisième zone est masquée. Elle apparaît lorsque des erreurs sont remontées. A l'inverse de la liste des enregistrements traités, les messages affichés dans cette zone restent jusque' à la fin du traitement : si l’on quitte cette page, on les retrouve lorsque l’on revient sur la modification en cours. Les erreurs sont détaillées, y compris les fiches impossibles à modifier à cause de droits insuffisants. (On peut disposer d'un droit de modification filtré, qui ne s'applique donc pas à toutes les notices d'une table.)
421
422 [[image:1718007901694-625.png||data-xwiki-image-style-alignment="center" height="375" width="1174" class="img-thumbnail"]]
423
424 (% class="box warningmessage" %)
425 (((
426 Il est conseillé de tester d'abord l'impact potentiel de votre modification globale, avant de lancer le traitement réel sur les données.
427 )))
428
429 Une fois la modification paramétrée et testée, deux possibilités sont offertes pour lancer le traitement effectif :
430
431 * A partir de l'écran de résultat de test (étape précédente) : cliquez sur Appliquer.
432 * A partir d'un des écrans de paramétrage de la modification globale : cliquez sur Lancer le traitement.
433
434 Une fois le traitement lancé, les informations associées s'affichent de la même manière que lors du test, sans la mention Exécution en mode test.
435
436
437 Une fois le test ou le traitement terminé, trois boutons se présentent en haut de la page :
438
439 [[image:1718007993541-975.png]]retour au formulaire de recherche
440
441 [[image:1718008006027-949.png]]retour à la liste résultat
442
443 [[image:1718008017305-150.png]] télécharger les rapports.
444
445 Ce dernier permet de récupérer les fichiers contenant la totalité des informations affichées. Il suffit de fournir le nom du fichier zip téléchargé.
446
447 [[image:1718008058300-626.png||data-xwiki-image-style-alignment="center" height="333" width="389" class="img-thumbnail"]]
448
449 (% class="imgpara" %)
450 Le fichier zip contient trois fichiers correspondant aux trois zones d'informations décrites ci-dessous.
451
452 (% class="imgpara" %)
453 Les noms de fichier sont composés :
454
455 * du code de l’action
456 * global_replace = Remplacement
457 * global_add = Ajout
458 * global_remove = Suppression de champ
459 * global_exchange = Echange d'autorité
460 * global_notice_delete = Suppression de notice
461 * CommitBatch = traitement effectif,
462 * du code de l’utilisateur connecté,
463 * de la date d’exécution de la modification,
464 * du type d'information
465 * err = erreurs rencontrées (contenu de la troisième partie de la page)
466 * out = liste de fiches impactées (contenu de la deuxième partie de la page)
467 * summary = récapitulatif (affiché dans la première partie de la page)