Modifications pour le document Fonctions avancées : modification des exports tabulés paramétrables
Modifié par Nicolas Schreiber le 2026/01/12 15:46
Depuis la version 6.1
modifié par Nicolas Schreiber
sur 2025/08/05 09:55
sur 2025/08/05 09:55
Commentaire de modification :
Il n'y a aucun commentaire pour cette version
À la version 17.1
modifié par Nicolas Schreiber
sur 2026/01/12 15:46
sur 2026/01/12 15:46
Commentaire de modification :
Il n'y a aucun commentaire pour cette version
Résumé
-
Propriétés de la Page (2 modifications, 0 ajouts, 0 suppressions)
-
Pièces jointes (0 modifications, 10 ajouts, 0 suppressions)
Détails
- Propriétés de la Page
-
- Titre
-
... ... @@ -1,1 +1,1 @@ 1 -Fonctions avancées : paramétragedes exports tabulés paramétrables1 +Fonctions avancées : modification des exports tabulés paramétrables - Contenu
-
... ... @@ -2,7 +2,6 @@ 2 2 {{toc/}} 3 3 {{/box}} 4 4 5 -page en cours de construction 6 6 7 7 = A savoir avant de commencer = 8 8 ... ... @@ -128,7 +128,7 @@ 128 128 * **dataMultiValueSeparator : **separateur de champ multivalue (Si non defini c'est celui qui est defini dans l'attribut multiValueSeparator du tag 'table', ou si non defini c'est '/' slash par defaut) 129 129 * **dataAfter : **separateur apres la donnee du champ répété en cas de multivaluation (Chaine vide si non defini) 130 130 131 -**Exemple : <field name='INTERPRETATION' label='Interpretation' dataBefore="texte avant " dataAfter=" texte aprés" dataMultiValueSeparator=" ; "/>** 130 +**Exemple : <field name='INTERPRETATION' label='Interpretation' dataBefore="texte avant : " dataAfter=" (texte aprés)" dataMultiValueSeparator=" ; "/>** 132 132 133 133 [[image:1698221647528-156.png||data-xwiki-image-style-alignment="center" class="img-thumbnail"]] 134 134 ... ... @@ -229,6 +229,8 @@ 229 229 * de ne pas perdre les libellés de champs (on les indiquera dans **dataBefore**) 230 230 * de n'avoir des séparateurs de champs que si un au moins des champs précédents est non vide...sinon le contenu de la colonne commencera par un séparateur (on les indiquera dans **dataJoinSeparator**) 231 231 231 +La concat peut etre vue comme une "variable" que l'on va pouboir utiliser à sa guise 232 + 232 232 == A minima == 233 233 234 234 on va donc créer une "boite" qui va assembler les données de la colonne en concaténant les champs cités ... ... @@ -246,7 +246,7 @@ 246 246 247 247 == Ajout de données avant - aprés == 248 248 249 -Cette "boite" concat est vue comme un "groupe" de données. a ce titre il est possible de lui adjoindre les param étres suivants250 +Cette "boite" concat est vue comme un "groupe" de données. a ce titre il est possible de lui adjoindre les paramètres suivants 250 250 251 251 * **groupDataBefore **: donnee avant le groupe 252 252 * **groupDataAfter **: donnee apres le groupe ... ... @@ -265,11 +265,11 @@ 265 265 <field name='DESCRIPTION_INTRINSEQUE' dataJoinSeparator="\n"/> 266 266 **</concat>** 267 267 268 -//A noter les \n qui se transforment en retour à la ligne dans la colonne et le datajoinSeparator qui p oermet de choisir si on veut un point virgule ou un retour ligne entre chaque champs//269 +//A noter les \n qui se transforment en retour à la ligne dans la colonne et le datajoinSeparator qui permet de choisir si on veut un point virgule ou un retour ligne entre chaque champs// 269 269 270 270 [[image:1698235351939-869.png]] 271 271 272 -== Ajout de données par défaut entre les champs d ugroupe==273 +== Ajout de données par défaut entre les champs de la concat == 273 273 274 274 Dans l'exemple ci-aprés, on a positionnés les séparateurs de champs dans chacun des champs avec le DataJoinSeparator 275 275 ... ... @@ -298,7 +298,8 @@ 298 298 299 299 (% class="box infomessage" %) 300 300 ((( 301 -les notions de subGroupDataBefore et subGroupDataAfter peuvent aussi etre paramétrées mais n'ont pas grand intéret dans les concat, elles seront plutôt utilisées dans le cas des blocs répétables 302 +Les notions de subGroupDataBefore et subGroupDataAfter peuvent aussi etre paramétrées mais n'ont pas grand intéret dans les concat, elles seront plutôt utilisées dans le cas des blocs répétables. 303 +Les concat ont donc un comportement trés similiare aux groupes de groupDataType = "group", à la différence qu'on peut y mettre n'importe quel champ dedans 302 302 ))) 303 303 304 304 = Export des champs d'un bloc répétable = ... ... @@ -307,20 +307,40 @@ 307 307 308 308 Globalement il ressemblera beaucoup à un concat, à la différence prés qu'un concat ne se joue qu'une seule fois, alors que le bloc de champs se jouera dans l'export autant de fois qu'il y a de groupe saisis dans la notice courante 309 309 310 -(% class="box infomessage" %) 311 -((( 312 312 On peut se representer cela comme une boucle d'éxécution qui tournera tant qu'il existe encore un bloc répété à exporter 313 -))) 314 314 315 315 //Exemple avec un bloc de champ répétable contenant 3 champs avec une saisie lacunaire (il est rare que tous les champs soient remplis dans un bloc)// 316 316 317 -[[image:16 98249410427-526.png||data-xwiki-image-style-alignment="center" class="img-thumbnail"]]316 +[[image:1768226297481-108.png]] 318 318 319 - leparamétrage de l'export sera défini tel que:318 +== groupDataType~=group == 320 320 320 +On va boucler sur les blocs répétables en concaténant les champs qu'il contient, et chaque bloc sera concaténé au précédent (avec groupDataSubgroupSeparator). chaque "bloc" est vu comme un subGroup. 321 + 322 +Dans le cas des groupDataType=group, les subGroup sont regroupés dans une seule "variable" 323 + 324 +il sera possible de définir les data de concaténation ci dessous 325 + 326 + **groupDataBefore**=" données en début de groupe" 327 + 328 +* 329 +** subGroupDataBefore **= "données en début de chaque sous-group" 330 + **subGroupDataSeparator ** = "données entre chaque champ du sous-groupe"** 331 +** subGroupDataAfter** = "\données à la fin de chaque sous-groupe" 332 +\\ **groupDataSubGroupSeparator**=" donnée insérée entre chaque subgroup"** 333 + 334 + **groupDataAfter**="données en fin de groupe 335 + 336 +Cela permet donc un formatage plus fin car ion eput agir à tous les niveaux de la concatenation, notemment le **groupDataSubGroupSeparator **qui permet de gérér les séparateur entre les sous-groupes 337 +\\rappel : un sous-groupe correspond dans le MCD, un bloc répétable est un bloc type="set" posé dans un bloc type="selection" 338 + 339 +[[image:1768223007353-115.png]] 340 + 341 +Exemple avec juste deux retours lignes entre chaque sous-groupe 342 + 321 321 **~ <group_field name="INTERVENANT" 322 322 groupDataType = "group" 323 - label = "Intervenants" 345 + label = "Intervenants-group" 324 324 groupDataSubGroupSeparator = "\n\n" 325 325 \\> ** 326 326 ... ... @@ -331,7 +331,7 @@ 331 331 332 332 et génerera la colonne ci dessous 333 333 334 -[[image:16 98249964685-586.png||data-xwiki-image-style-alignment="center" class="img-thumbnail"]]356 +[[image:1768226409578-347.png||class="img-thumbnail"]] 335 335 336 336 (% class="box infomessage" %) 337 337 ((( ... ... @@ -346,11 +346,22 @@ 346 346 Un sous-groupe est un ensemble de champs qui appartiennent a la même entite : au meme bloc de champs (type=set), a la même notice liée ou a la même notice qui référence la notice courante 347 347 ))) 348 348 349 - Ilest possible de choisirun**type="sous groupe"**371 +== groupDataType~=subGroup == 350 350 373 +le fonctionnement est différent, car il n'y a pas "une seule variable" concaténant tous les sous-groupes, mais autant de "sous-variables" que de blocs. On ne peut donc poser que les séparateurs suivants 374 + 375 +**subGroupDataBefore **= "données en début de chaque sous-group" 376 + **subGroupDataSeparator ** = "données entre chaque champ du sous-groupe" 377 +**subGroupDataAfter** = "\données à la fin de chaque sous-groupe" 378 + 379 +Chaque sous-groupe sera ensuite "posé" dans la colonne avec le compressChar=" ; " définit dans l'entête du format 380 + 351 351 <group_field name="INTERVENANT" 352 -**groupDataType ** = **"SubGroup"** 353 - label = "Intervenants" 382 +**~ groupDataType ** = **"subGroup"** 383 + label = "Intervenants - uibgroup" 384 + 385 + subGroupDataBefore = "intervenant : " 386 + subGroupDataAfter = "\n" 354 354 ~> 355 355 356 356 <field name='PERSONNE_INTERVENANT' label='Intervenant'/> ... ... @@ -358,15 +358,81 @@ 358 358 <field name='PRECISION_INTERVENANT' label='Précisions intervenant ' dataJoinSeparator="\n"/> 359 359 </group_field> 360 360 361 -(% class="wikigeneratedid" %) 362 -Dans ce cas chaque élément du groupe générera sa propre colonne, donc ce n'est pas trés différent d'avoir positionné ces 3 champs directement dans le template etp, sans tenir compte du group_field, ou bien directement dans un concat, mais avec la contrainte de ne pouvoir y inclure que des champs du bloc répétable courant 363 363 395 +[[image:1768226447728-811.png||class="img-thumbnail"]] 364 364 365 - A noterque pour lestype=SUbGrouplelabeldugroup_field estignoré etquecesontles labelsde chaqueélémentqui sontprisencompte dans lesintitulédecolonne397 +le groupDataType="subgroup" est donc peu utilisé, sauf dans les exports au format xml car ils permettent de conserver la répétabilité des blocs, et donc de répéter les noeux dans le format xml de sortie 366 366 367 - [[image:1698308536947-443.png||data-xwiki-image-style-alignment="center"class="img-thumbnail"]]399 += sans groupDataType = 368 368 401 +SI on ne précise pas de groupDataType le moteur les considère comme ue arbre xml complet avec un noeud pour chaque sous-groupe et un noeud pour chaque champ. ça ne peut pas vraiment se matérialiser dans un export colonné, donc dans ce cas les données sont exportées "champ" par "champ", chaque champ étant regroupé dans une colonne avec le compressChar=" ; " définit dans l'entête du format. 402 +De facto on perd la lisibilité du bloc 369 369 404 +<group_field name="INTERVENANT" 405 + label = "Intervenants - sans groupDataType" 406 +~> 407 + 408 + <field name='PERSONNE_INTERVENANT' /> 409 + <field name='FONCTION_INTERVENANT' dataBefore=" (" dataAfter=")"/> 410 + <field name='PRECISION_INTERVENANT' dataJoinSeparator="\n"/> 411 +</group_field> 412 + 413 +[[image:1768227008672-422.png]] 414 + 415 +les groupes sans groupDataType seront essentiellement utilisés dans les exports OAI:LIDO pour ocnserver les imbrications de champs et blocs dans le format xml de sortie 416 + 417 +== Extraire un nombre défini de bloc chacun dans sa colonne == 418 + 419 +Dans certains cas il peut etre interessant d'éclater les blocs et les champs d'un bloc dans des colonnes séparées 420 + 421 +C'est possible avec le subGroupDataIndex mais il fauit prévoir le nombre de colonnes maximum 422 + 423 +Veiller aussi à l'unicité des name en indisuant le nom du bloc dans le fieldName 424 + 425 +<group_field name="INTERVENANT1" fieldName="INTERVENANT" 426 + label = "Intervenants - groupe 1" 427 + subGroupDataIndex ='1' 428 +~> 429 + 430 + <field name='PERSONNE_INTERVENANT' label="PERSONNE_INTERVENANT1"/> 431 + <field name='FONCTION_INTERVENANT' label="FONCTION_INTERVENANT1" /> 432 + <field name='PRECISION_INTERVENANT' label="PRECISION_INTERVENANT1"/> 433 +</group_field> 434 + 435 +<group_field name="INTERVENANT2" fieldName="INTERVENANT" 436 + label = "Intervenants - groupe 2" 437 + subGroupDataIndex = '2' 438 +~> 439 + 440 + <field name='PERSONNE_INTERVENANT' label="PERSONNE_INTERVENANT2"/> 441 + <field name='FONCTION_INTERVENANT' label="FONCTION_INTERVENANT2" /> 442 + <field name='PRECISION_INTERVENANT' label="PRECISION_INTERVENANT2"/> 443 +</group_field> 444 + 445 +<group_field name="INTERVENANT3" fieldName="INTERVENANT" 446 + label = "Intervenants - groupe 3" 447 + subGroupDataIndex ='3' 448 +~> 449 + 450 + <field name='PERSONNE_INTERVENANT' label="PERSONNE_INTERVENANT3"/> 451 + <field name='FONCTION_INTERVENANT' label="FONCTION_INTERVENANT3" /> 452 + <field name='PRECISION_INTERVENANT' label="PRECISION_INTERVENANT3"/> 453 +</group_field> 454 + 455 + 456 +[[image:1768228264778-201.png]] 457 + 458 +== Générer autant de lignes que de blocs répétables == 459 + 460 +Cette option est utilisée dans l'export e-recolnat pour générer une ligne d'export pour chaque bloc identification d'un specimen (FLO-4677) 461 + 462 +On définit le nom du bloc concernée (un seul par export) dans l'entéte du fichier via recordFromGroupFieldName 463 + 464 +[[image:1768228658052-477.png]] 465 + 466 +[[image:1768228710793-297.png]] 467 + 468 + 370 370 == Paramétrages complémentaires pour les blocs répétables == 371 371 372 372 il est possible d'inclure aussi dans un group_field ... ... @@ -375,39 +375,29 @@ 375 375 * des champs des notices liées a un des champs du bloc via le tag 'linked_field' 376 376 * des notices qui référencent la notice courante : tag 'reference' pour les liens parent/enfants. ce tag est étudié plus loin dans l'article 377 377 378 - ===Ajout de données avant - après chaque sous-groupe ===477 + 379 379 380 -* **subGroupDataBefore **: séparateur avant les données d'un sous-groupe (Chaine vide si non défini) 381 -* **subGroupDataSeparator **: séparateur entre les données d'un sous-groupe (Espace si non défini) 382 -* **subGroupDataAfter **: séparateur après les donnes d'un sous-groupe (Chaine vide si non défini) 383 - 384 -=== Ajout de données avant - après le groupe === 385 - 386 -Uniquement si groupDataType="group" car la colonne unique contiendra une concaténation de tous les sous-groupes en un seul groupe 387 - 388 -* **groupDataBefore **: séparateur avant les données du groupe (Chaine vide si non défini) 389 -* **groupDataSubGroupSeparator **: séparateur entre les sous-groupes (' / ' espace slash espace si non défini) 390 -* **groupDataAfter **: séparateur après les données du groupe (Chaine vide si non défini) 391 - 392 392 === Exemple global === 393 393 394 -<**group_field **name="INTERVENANT" 395 - groupDataType = "**group**" 396 - label = "Intervenants" 397 - groupDataBefore = "- texte avant le groupe -\n" 398 - groupDataSubGroupSeparator = "\n{séparateur par défaut entre les sous groupe}\n" 399 - groupDataAfter = "\n-texte aprés le groupe" 400 - subGroupDataBefore = "- texte avant le sousgroupe - " 401 - subGroupDataSeparator = " {séparateur par défaut dans le sous groupe} " 402 - subGroupDataAfter = " - texte aprés avant le sousgroupe -" 403 -\\> 404 -\\ <field name='PERSONNE_INTERVENANT' label='Intervenant'/> 481 +<group_field name="INTERVENANT" 482 + groupDataType = "group" 483 + label = "Intervenants" 484 + groupDataBefore = "groupDataBefore" 485 + groupDataSubGroupSeparator = "\ngroupDataSubGroupSeparator" 486 + subGroupDataBefore = "\nsubGroupDataBefore" 487 + subGroupDataSeparator = "\nsubGroupDataSeparator\n" 488 + subGroupDataAfter = "\nsubGroupDataAfter" 489 + groupDataAfter = "\ngroupDataAfter" 490 +~> 491 + 492 + <field name='PERSONNE_INTERVENANT' label='Intervenant'/> 405 405 <field name='FONCTION_INTERVENANT' label='Fonction ' dataBefore=" (" dataAfter=")"/> 406 406 <field name='PRECISION_INTERVENANT' label='Précisions intervenant ' dataJoinSeparator="\n"/> 407 407 </group_field> 408 408 409 -[[image:1698310122900-966.png||data-xwiki-image-style-alignment="center" class="img-thumbnail"]] 410 410 498 +[[image:1768229192168-268.png||class="img-thumbnail"]] 499 + 411 411 == Filtre sur les données du groupe == 412 412 413 413 D'un certaine manière un bloc répétable peut être considéré comme une table liée embarquée dans la notice courante ... ... @@ -610,7 +610,7 @@ 610 610 subGroupDataSeparator = ", " 611 611 subGroupDataAfter = "" > 612 612 613 -* 702 +* 614 614 ** <linked_field name='BIEN' label='Bien'> 615 615 **~ <field name='DISPLAY' label='Bien' display='true'/> 616 616 </linked_field> ... ... @@ -649,7 +649,7 @@ 649 649 documentTypes="Document-Photo" 650 650 subGroupDataFilter="(IDOC_ACCESSIBILITY = 1)" 651 651 subGroupDataMultMaxi="" 652 - **subGroupDataIndex="1">**741 + **subGroupDataIndex="1">** 653 653 <!~-~- champ de la table IDOCS ~-~-> 654 654 <field name="LABEL" label="Photo 1 : "/> 655 655 ... ... @@ -659,7 +659,7 @@ 659 659 inputRecordFilter="" 660 660 documentTypes="Document-Photo" 661 661 662 -* 751 +* 663 663 ** resolution="LOW" 664 664 dimImageXYInPixels="192"**/> 665 665 </linked_records_document_records>** ... ... @@ -679,7 +679,7 @@ 679 679 <linked_records_document_records name="PHOTO_INV" 680 680 documentTypes="Document-Photo" 681 681 subGroupDataFilter="(IDOC_ACCESSIBILITY = 1)" 682 - **subGroupDataIndex="1"**>771 + **subGroupDataIndex="1"**> 683 683 684 684 **~ 685 685 **<photo_document_file name="**_PHOTO1**" ... ... @@ -692,7 +692,7 @@ 692 692 <linked_records_document_records name="PHOTO_INV" 693 693 documentTypes="Document-Photo" 694 694 subGroupDataFilter="(IDOC_ACCESSIBILITY = 1)" 695 - **subGroupDataIndex="2"**>784 + **subGroupDataIndex="2"**> 696 696 697 697 **~ 698 698 **<photo_document_file name="**_PHOTO2**" ... ... @@ -705,7 +705,7 @@ 705 705 <linked_records_document_records name="PHOTO_INV" 706 706 documentTypes="Document-Photo" 707 707 subGroupDataFilter="(IDOC_ACCESSIBILITY = 1)" 708 - **subGroupDataIndex="3"**>797 + **subGroupDataIndex="3"**> 709 709 710 710 **~ 711 711 **<photo_document_file name="**_PHOTO3**" ... ... @@ -718,7 +718,7 @@ 718 718 <linked_records_document_records name="PHOTO_INV" 719 719 documentTypes="Document-Photo" 720 720 subGroupDataFilter="(IDOC_ACCESSIBILITY = 1)" 721 - **subGroupDataIndex="4"**>810 + **subGroupDataIndex="4"**> 722 722 723 723 **~ 724 724 **<photo_document_file name="**_PHOTO4**" ... ... @@ -736,11 +736,10 @@ 736 736 documentTypes="Document-Photo" 737 737 subGroupDataFilter="(IDOC_ACCESSIBILITY = 1)" 738 738 739 -* 828 +* 740 740 ** subGroupDataMultMaxi="4" 741 741 subGroupDataIndex=""> 742 - 743 - **<photo_document_file name="_PHOTO" 831 +\\**<photo_document_file name="_PHOTO" 744 744 label="Photo" 745 745 documentTypes="Document-Photo" 746 746 resolution="LOW" ... ... @@ -782,8 +782,7 @@ 782 782 subGroupdataMultiValueSeparator="|" 783 783 subGroupDataMultMaxi="1" 784 784 > 785 - 786 - <class_extractor 873 +\\ <class_extractor 787 787 extractorClassName="com.ezida.services.musee.extractor.MusPhotoArkExtractor" 788 788 name="PHOTO_INV_ARK" 789 789 label="" ... ... @@ -849,11 +849,24 @@ 849 849 [[image:1698311964289-353.png||data-xwiki-image-style-alignment="center" class="img-thumbnail"]] 850 850 851 851 852 -== == 853 853 940 +== Conversion données d'un champ en majuscules == 854 854 942 +<field name='TITRE' label='Titre' dataIsToMajus="true"/> 855 855 944 +== Masquer un contenu de champ en fonction d'un menu (champs sensibles) == 856 856 946 +ci dessous si le uiser n'a pas le menu musee_menu_masque_champs_sensibles il pourra voir le champ 857 857 948 +<field name='TITRE' label='Titre' dataIsToMajus="true" inputRecordFilter="('{user.hasMenu.musee_menu_masque_champs_sensibles}' = 'false')"/> 858 858 859 - 950 +== Ajouter le label du champ dans le contenu exporté == 951 + 952 +<field name='TITRE' label='Titre' dataBefore='{fieldLabel} : ' /> 953 + 954 +== Exporter des infos de paramétrage de champ == 955 + 956 +fieldInfoName pouura prendre les 3 options label, linkTable, linkSource 957 + 958 +<field_desc_info name="_collec_liee" fieldName="COLLEC_LIEE" 959 + fieldInfoName="linkTable"/>
- 1768223007353-115.png
-
- Auteur
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.NSR - Taille
-
... ... @@ -1,0 +1,1 @@ 1 +300.9 KB - Contenu
- 1768226297481-108.png
-
- Auteur
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.NSR - Taille
-
... ... @@ -1,0 +1,1 @@ 1 +47.9 KB - Contenu
- 1768226409578-347.png
-
- Auteur
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.NSR - Taille
-
... ... @@ -1,0 +1,1 @@ 1 +9.9 KB - Contenu
- 1768226447728-811.png
-
- Auteur
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.NSR - Taille
-
... ... @@ -1,0 +1,1 @@ 1 +11.6 KB - Contenu
- 1768227008672-422.png
-
- Auteur
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.NSR - Taille
-
... ... @@ -1,0 +1,1 @@ 1 +14.0 KB - Contenu
- 1768228264778-201.png
-
- Auteur
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.NSR - Taille
-
... ... @@ -1,0 +1,1 @@ 1 +10.9 KB - Contenu
- 1768228658052-477.png
-
- Auteur
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.NSR - Taille
-
... ... @@ -1,0 +1,1 @@ 1 +9.5 KB - Contenu
- 1768228710793-297.png
-
- Auteur
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.NSR - Taille
-
... ... @@ -1,0 +1,1 @@ 1 +10.6 KB - Contenu
- 1768229185769-507.png
-
- Auteur
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.NSR - Taille
-
... ... @@ -1,0 +1,1 @@ 1 +22.8 KB - Contenu
- 1768229192168-268.png
-
- Auteur
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.NSR - Taille
-
... ... @@ -1,0 +1,1 @@ 1 +22.8 KB - Contenu