Version 16.1 par Nicolas Schreiber le 2026/01/12 15:12

Masquer les derniers auteurs
admin admin 1.1 1 {{box title="**Sommaire**"}}
2 {{toc/}}
3 {{/box}}
4
5
6 = A savoir avant de commencer =
7
Nicolas Schreiber 6.1 8 L'export de données muséologiques vers un tableur (format csv ou excel natif) met en évidence la particularité de leur organisation technique.
admin admin 1.1 9
10 Pour pouvoir répondre aux exigence scientifiques de leur description, il n'est pas possible d'utiliser des grilles de saisie de type tableur, avec juste des lignes et des colonnes, il faudrait un nombre inifini de colonnes.
11
12 Les grilles de saisie dans Flora,s'appuient donc sur deux notions extrèmement puissantes : **les blocs répétables et les champs multivalués**
13
14 == //Comprendre les blocs répétables et les champs multivalués// ==
15
16 Ces deux notions sont fondamentales en informatique muséologique. Elles permettent de s'affranchir des limites techniques imposées par les bases de données traditionnelles (tables de jointures).
17 Historiquement on appelait cela des bases de données XML, aujourd'hui (entre informaticiens) on parlerait plutôt de NoSql
18
19 Ces notions sont fonctionnellement très puissantes en saisie, mais elles imposent quelques rêgles** quand on veut remettre  les données "à plat"** pour des affichages, des impressions, des exports.
20
21 (% class="box infomessage" %)
22 (((
23 Ces rêgles peuvent paraitre "exotiques" quand on a l'habitude de manipuler un tableur ou une base de donnée SQL. Cet article wiki a donc pour but d'expliciter tout ce qui peut etre exploité pour une **"remise à plat sans perte de sens" **de données muséologiques dans un tableur en lignes / colonnes
24 )))
25
26 //Exemple ~://
27
28 [[image:1698219762510-708.png]]
29
30
31 (% class="wikigeneratedid" %)
32 __**Dans un export CSV pour excel ou calc,:**__
33
34 * Par défaut **les champs multivaluées seront concaténés avec un séparateur virgule+espace entre chaque valeur.**.. donc ça marche tout seul
35 ** Exemple : si je demande à exporter juste le champ Auteuir-Exécutant, dans une colonne je récupererai les 4 auteurs ci dessus, séparés par virgule+espace, mais sans savoir de quel "type" ils dépendent
36 * Par contre, pour les blocs répétables, comme il n'est pas possible de générer un nombre de colonnes variables dans l'export, en général **on concaténera les champs d'un même blocs, puis les différentes occurences d'un même bloc dans une seule et unique Colonne**
37 ** Exemple : si je demande à exporter Le bloc "Création-exécution" dans une colonne ,je devrai paramétrer le mode de concaténation des différents champs qu'il contient, aisni que le mode de concaténation  de chaque occurence de bloc. de facto j'aurai besoin de pouvoir paramétrer des séparateurs, ajouter des libellés de champs....bref "formater" la conaténation des blocs
38
39 = Paramètres généraux d'un modele etp =
40
41 dans l'entête du fichier etp les paramétres suivants pourront etre défini
42
43 **<table**
44
45 **name="MUS_STRATIGRAPHIE"**
46 //nom interne de la table à exporter//
47
48 **charset="ISO-8859-1" **
49 //jeu de caractere du fichier résultat
50 Attention, il est préférable de conserver ce paramétre car les publications réalisées sont ensuiote déclarées avec un type mime et une extension CSV, de manière a étre ouvertes automatiquement dans Excel par un double clic sur le nom de fichier//
51
52 **separator="\t"**
53 //Le séparateur tabulation est préférable car il est certain qu'il n'a pas été saisi dans une des notices exportées, la publication génére **donc un fichier CSV mais dont les sépareurs de colonnes sont des tabulations**//
54
55 **compressChar=" ; "**
56 //caracteres utilisé lors de concaténation automatiques de données dans des blocs répétables//
57
58 **newLine="\r\n"**
59 //caracteres délimitant les changement d'enregistrement  \r=chr(13)  |n=chr(10)//
60
61 **multiValueSeparator=', '**
62 //caracteres utiliser pour concaténer les données des champs multivaluées virgule+espace//
63
64 **valueDelimiter='"'>**
65 //ne pas modifier, permet d'englober les contenus de colonne contenant des \n ou des apsotrophes pour éviter und écalage à l'oiuverture du fichier csv publié//
66
67
68 //Exemple ~://
69 [[image:1698143160183-538.png||class="img-thumbnail"]]
70
71
72 = Export d'un champ =
73
74 Les exemples ci aprés sont issus de l'export CSV de la table Stratigraphie, mais sont transposables dans toutes les tables de Flora
75
76 == Formatage automatique selon le mode de saisie ==
77
78 Par défaut, Flora mettra en forme l'export des champs en fonction de leur mode de saisie de la manière suivante
79
80 === Champs texte libre sur une seule ligne ===
81
82 //Exemple ~://
83
Nicolas Schreiber 2.1 84 [[image:1698221408368-344.png||data-xwiki-image-style-alignment="center" class="img-thumbnail"]]
admin admin 1.1 85
86 La ligne ci dessous génèrera une colonne dont le titre sera égal au label et les contenus alimentés par le champs cité dans name
87
88 **<field name='TYPE_UE'  label='Type Unité d_enregistrement '/> **
89
90 (% class="box warningmessage" %)
91 (((
92 //Attention ne pas mettre d'apostrophe ou guillemets à l'interieur d'un contenu de la balise label (cela génére une erreur bloquante à la publication)//
93 )))
94
95 * **name :** nom interne du champ dans la table Flora
96 * **label : **intitulé qu'aura la colonne dans le fichier csv
97
Nicolas Schreiber 2.1 98 [[image:1698233535559-410.png||data-xwiki-image-style-alignment="center" class="img-thumbnail"]]
admin admin 1.1 99
100 === Champs texte libre multiligne (avec retours à la ligne) ===
101
Nicolas Schreiber 2.1 102 [[image:1698220705279-359.png||data-xwiki-image-style-alignment="center" class="img-thumbnail"]]
admin admin 1.1 103
104 **<field name='PRECISION_UE'  label='Précisions UE '/> **aura pour résultat
105
Nicolas Schreiber 2.1 106 [[image:1698220966238-507.png||data-xwiki-image-style-alignment="center" class="img-thumbnail"]]
admin admin 1.1 107
108 === Champs multivalués liés à des listes, thésaurus ou table d'autorité ===
109
Nicolas Schreiber 2.1 110 [[image:1698220773700-234.png||data-xwiki-image-style-alignment="center" class="img-thumbnail"]]
admin admin 1.1 111
112 **<field name='INTERPRETATION'  label='Interpretation'/> **aura pour résultat
113
Nicolas Schreiber 2.1 114 [[image:1698221043701-405.png||data-xwiki-image-style-alignment="center" class="img-thumbnail"]]
admin admin 1.1 115
116 (% class="box infomessage" %)
117 (((
118 Par défaut Flora exporte la valeur "affichée" du champ. c'est à dire le même contenu textuel que ce qui s'affiche dans les vues.
119 Il est possible de demander l'export de la valeur "interne" du champ (code pour les listes, unique_key pour les tables d'autorité, recordId pour les thésaurus), dans ce cas il faut spécifier display=''false' dans le champs field
120 <field name='INTERPRETATION'  label='Interpretation '** display='false"/> **
121 )))
122
123
124 == Formatages personnalisés sur un champ ==
125
126 * **dataBefore :** separateur avant la donnee du champ, répété en cas de multivaluation     (Chaine vide si non defini)
127 * **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)
128 * **dataAfter : **separateur apres la donnee du champ répété en cas de multivaluation   (Chaine vide si non defini)
129
Nicolas Schreiber 14.1 130 **Exemple : <field name='INTERPRETATION'  label='Interpretation'  dataBefore="texte avant : " dataAfter=" (texte aprés)" dataMultiValueSeparator=" ; "/>**
admin admin 1.1 131
Nicolas Schreiber 2.1 132 [[image:1698221647528-156.png||data-xwiki-image-style-alignment="center" class="img-thumbnail"]]
admin admin 1.1 133
134 (% class="box infomessage" %)
135 (((
136 **Truc et astuce : **utiliser des retours lignes comme séparateur **avec \n **peut améliorer la lisibilité des données dans le tableur
137 )))
138
139 **<field name='INTERPRETATION'  label='Interpretation'  dataBefore="texte avant : " dataAfter=" (texte aprés)" dataMultiValueSeparator="\n"/>**
140
Nicolas Schreiber 2.1 141 [[image:1698221798735-336.png||data-xwiki-image-style-alignment="center" class="img-thumbnail"]]
admin admin 1.1 142
143 == Exporter une valeur constante ==
144
145 Toutes les lignes auront la même valeur dans la colonne
146
147 **<constant name="C1" label="Constante1"  dataDefValue="myConstante1" />**
148
Nicolas Schreiber 2.1 149 [[image:1698229509017-535.png||data-xwiki-image-style-alignment="center" class="img-thumbnail"]]
admin admin 1.1 150
151 == Exporter un ou plusieurs champs d'une table d'autorité liée ==
152
153 (% class="wikigeneratedid" %)
154 par défaut, les champs liés à des table d'autorité s'exportent avec la concaténation standard  des champs de la table liée (dans Flora on appelle ça le digest de la table, il est défini dans le fichierconf/local/musee/db/A.musee.xml  digest ou link-digest s'il est défini).
155 De facto, tout se retrouve dans une seule et même colonne
156
157 (% class="wikigeneratedid" %)
158 **Exemple avec le champ qui lie la Table Stratigraphie à la Table Opération**
159
160 (% class="box infomessage" %)
161 (((
162 pour la table Opération le link-digest est composé des champs suivants
163 <concat param1="TYPE_OPERATION,30/NOM,50, : /NUM_IDENTIFIANT,20, - /OPERATEUR,60,- /DATE_OPERATION_DEBUT,20, du /DATE_OPERATION_FIN,20, au  "/>
164 )))
165
166 (% class="wikigeneratedid" %)
167 A minima, l'export sera réalisé ainsi, avec le champ DISPLAY_OPERATION qui n'est pas répété ni multivalué. c'est un champ caché de Flora qui ne contient que la première de toutes les opérations potentiellement liées à la notice stratigraphie
168
169 (% class="wikigeneratedid" %)
170 **<field name='DISPLAY_OPERATION'  label='Opération1'/> **
171
172 (% class="wikigeneratedid" %)
173 [[image:1698222516214-545.png]]
174
175 (% class="wikigeneratedid" %)
176 il est donc possible "d'éclater" les champs de la table liée par colonne via le **linked_field. **Chaque champ exportée de la table liée sera positionné dans un colonne dédiée. de cette manière on n'est p^lus bridé par le digest ou le link-digest
177
178 (% class="wikigeneratedid" %)
179 **<linked_field name='DISPLAY_OPERATION'>
180 <field name='NUM_IDENTIFIANT' label="Identifiant Opération"  />
181 <field name='TYPE_OPERATION' label="Type opération" dataBefore="(" dataAfter=")" />
182 </linked_field>**
183
184 (% class="wikigeneratedid" %)
185 [[image:1698222350876-551.png]]
186
187
188 SI on utilise le champ OPERATION (dans le bloc découverte de la grille de saisie), IL est possible d'y saisir plusieurs Opérations liées
189 Dans ce cas, le découpage sera respecté dans chacune des colonnes, mais il ny' aura toujours que 2 colonnes
190
191 **<linked_field name='OPERATION'>
192 <field name='NUM_IDENTIFIANT' label="Identifiant(s) Opération"  />
193 <field name='TYPE_OPERATION' label="Type opération(s)" dataBefore="(" dataAfter=")" />
194 </linked_field>**
195
196 [[image:1698222944107-105.png]]
197
198
199 (% class="box infomessage" %)
200 (((
201 **Question : **pourquoi y a t'il parfois des virgule et des points virgules entre chaque valeur de la colonne Type opération.. d'ou viennent ces points virgules ?
202 **Réponse : **en fait L**e champ Opération(s) dans la table Stratigraphie n'est pas multivalué mais il est positionné dans un bloc répétable**
203
Nicolas Schreiber 2.1 204 [[image:1698226080684-439.png||data-xwiki-image-style-alignment="center" height="478" width="1071"]]
admin admin 1.1 205
206 **Rappel : **
207 Dans les paramétrages généraux du fichier etp on a défini **compressChar=" ; " **//caracteres utilisés lors de concaténation automatiques de données dans des blocs répétables. c'est donc lui qui est utilisé dans le cas présent . les points virgules marquent donc les séparations de blocs répétables//
208 Et on a aussi défini **multiValueSeparator=', ' **//caracteres utiliser pour concaténer les données des champs multivaluées virgule+espace c'est donc lui qui est utilisé dans le cas présent pour lexport du champ TYpe Opération de la table Opération..champ qui est multivaléu dans ladite table//
209
210
Nicolas Schreiber 2.1 211 [[image:1698226465622-838.png||data-xwiki-image-style-alignment="center" height="285" width="966"]]
admin admin 1.1 212
213
214 Cet exemple illustre la complexité de manipulation des données muséologique car les blocs répétables et champs multivalués y sont légion
215 Mais il faut retenir que le paramétrage par défaut des exports etp gére tout cela de manière transparente avec des réglages par défaut qui rendent les données lisibles à minima
216 )))
217
218 = Concaténation libre de champs dans une seule colonne =
219
220 Dans de nombreux  cas il sera nécéssaire de regrouper différents champs de la table dans une seule et même colonne
221
222 //Exemple : concaténer tous les champs de Données intrinsèque d'une notice Stratigraphie dans une seule colonne//
223
Nicolas Schreiber 2.1 224 [[image:1698234060502-846.png||data-xwiki-image-style-alignment="center"]]
admin admin 1.1 225
226 De facto il sera judicieux
227
228 * de ne pas perdre les libellés de champs (on les indiquera dans **dataBefore**)
229 * 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**)
230
Nicolas Schreiber 15.1 231 La concat peut etre vue comme une "variable" que l'on va pouboir utiliser à sa guise
232
admin admin 1.1 233 == A minima ==
234
235 on va donc créer une "boite" qui va assembler les données de la colonne en concaténant les champs cités
236
237 **<concat name="donnees_descr_intr label="Données descriptives intrinsèques">**
238 <field name='TEXTURE'  dataBefore='Texture '/> 
239 <field name='STRUCTURE' dataBefore='Structure ' dataJoinSeparator=" ; "/> 
240 <field name='COULEUR'  dataBefore='Couleur ' dataJoinSeparator=" ; "/> 
241 <field name='RISQUE_INTRUSION'  dataBefore='Risque d_intrusion ' dataJoinSeparator=", " />
242 <field name='DESCRIPTION_INTRINSEQUE'  dataJoinSeparator="\n"/>
243 **</concat>**
244
245
246 [[image:1698234916860-664.png]]
247
248 == Ajout de données avant - aprés ==
249
Nicolas Schreiber 14.1 250 Cette "boite" concat est vue comme un "groupe" de données. a ce titre il est possible de lui adjoindre les paramètres suivants
admin admin 1.1 251
252 * **groupDataBefore **: donnee avant le groupe
253 * **groupDataAfter **: donnee apres le groupe
254
255 **<concat name="donnees_descr_intr label="Données descriptives intrinsèques"**
256
257 **~ groupDataBefore="texte avant le groupe\n"**
258
259 **~ groupDataAfter="\ntexte aprés le groupe"**
260
261 **>**
262 <field name='TEXTURE'  dataBefore='Texture '/> 
263 <field name='STRUCTURE' dataBefore='Structure ' dataJoinSeparator=" ; "/> 
264 <field name='COULEUR'  dataBefore='Couleur ' dataJoinSeparator=" ; "/> 
265 <field name='RISQUE_INTRUSION'  dataBefore='Risque d_intrusion ' dataJoinSeparator=", " />
266 <field name='DESCRIPTION_INTRINSEQUE'  dataJoinSeparator="\n"/>
267 **</concat>**
268
Nicolas Schreiber 14.1 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//
admin admin 1.1 270
271 [[image:1698235351939-869.png]]
272
Nicolas Schreiber 15.1 273 == Ajout de données par défaut entre les champs de la concat ==
admin admin 1.1 274
275 Dans l'exemple ci-aprés, on a positionnés les séparateurs de champs dans chacun des champs avec le DataJoinSeparator
276
277 on pourrait aussi définir une valeur par défaut pour tous les champs du groupe, le **subGroupDataSeparator** ce qui simplifie le paramétrage
278
279 <concat name="donnees_descr_intr" label="Données descriptives intrinsèques"
280 groupDataBefore="texte avant le groupe\n"
281 groupDataAfter="\ntexte aprés le groupe"
282
283 **subGroupDataSeparator=" - champ suivant - "**
284
285 **~ >
286 **<field name='TEXTURE'  dataBefore='Texture '/> 
287 <field name='STRUCTURE' dataBefore='Structure ' /> 
288 <field name='COULEUR'  dataBefore='Couleur ' /> 
289 <field name='RISQUE_INTRUSION'  dataBefore='Risque d_intrusion '  />
290 <field name='DESCRIPTION_INTRINSEQUE'  **dataJoinSeparator="\n"/>**
291 **</concat>**
292
293 //**A noter : **comme on a conservé un DataJoinSeparator sur le dernier champ (car on voulait un retour ligne dans ce cas),le subGoupDAtaSeparator ne s'y applique pas car ce n'est qu'une valeur par dfaut//
294
295 //**résultat obtenu :** Nous avons mis en rouge le subGoupDataSeparator  pour bien comprendre qu'il s'applique "à chaque champ", mais pas à chaque valeur d'un champ multivalué.
296 Dans notre jargon technique on dira que le field dans un concat est un sous-groupoe//
297
298 [[image:1698235881598-485.png]]
299
300 (% class="box infomessage" %)
301 (((
Nicolas Schreiber 15.1 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
admin admin 1.1 304 )))
305
306 = Export des champs d'un bloc répétable =
307
308 Tout ce qui est décrit ci dessus sera exploitable dans les exports de bloc répétable.Un export de bloc répétable pourra contenir des fields, des linked_field, des concats, des constantes
309
310 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
311
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 //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)//
315
Nicolas Schreiber 15.1 316 [[image:1768226297481-108.png]]
admin admin 1.1 317
Nicolas Schreiber 15.1 318 == groupDataType~=group ==
admin admin 1.1 319
Nicolas Schreiber 15.1 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
Nicolas Schreiber 16.1 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"**
Nicolas Schreiber 15.1 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
admin admin 1.1 343 **~ <group_field name="INTERVENANT"
344 groupDataType              = "group"
Nicolas Schreiber 15.1 345 label                      = "Intervenants-group"
admin admin 1.1 346 groupDataSubGroupSeparator = "\n\n"
347 \\>  **
348
349 **~ <field name='PERSONNE_INTERVENANT'  label='Intervenant'/> 
350 <field name='FONCTION_INTERVENANT'  label='Fonction ' dataBefore=" (" dataAfter=")"/> 
351 <field name='PRECISION_INTERVENANT'  label='Précisions intervenant ' dataJoinSeparator="\n"/> 
352 </group_field>**
353
354 et génerera la colonne ci dessous
355
Nicolas Schreiber 15.1 356 [[image:1768226409578-347.png||class="img-thumbnail"]]
admin admin 1.1 357
358 (% class="box infomessage" %)
359 (((
360 Les labels des field dans un group_field de type group ne sont pas exportés, nous les conservons pour que le fichier etp soit plus lisible car on ne connait pas toujours les noms internes de champs (name)
361 Dans ce cas, les "Sous groupe" seront alimentés via une boucle tournant sur chaque occurence de bloc, générant au final une seule colonne
362 )))
363
364 La nouveauté ici c'est le **groupDataSubGroupSeparator **qui permet de définir le séparateur qui s'exporte **entre chaque sous-groupe** (deux sauts de ligne \n dans le cas présent)
365
366 (% class="box infomessage" %)
367 (((
368 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
369 )))
370
Nicolas Schreiber 15.1 371 == groupDataType~=subGroup ==
admin admin 1.1 372
Nicolas Schreiber 15.1 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"
Nicolas Schreiber 16.1 376 **subGroupDataSeparator ** = "données entre chaque champ du sous-groupe"
Nicolas Schreiber 15.1 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
admin admin 1.1 381 <group_field name="INTERVENANT"
Nicolas Schreiber 15.1 382 **~ groupDataType   ** = **"subGroup"**
383 label                      = "Intervenants - uibgroup"
384
385 subGroupDataBefore = "intervenant : "
386 subGroupDataAfter = "\n"
admin admin 1.1 387 ~> 
388
389 <field name='PERSONNE_INTERVENANT'  label='Intervenant'/> 
390 <field name='FONCTION_INTERVENANT'  label='Fonction ' dataBefore=" (" dataAfter=")"/> 
391 <field name='PRECISION_INTERVENANT'  label='Précisions intervenant ' dataJoinSeparator="\n"/> 
392 </group_field>
393
394
Nicolas Schreiber 15.1 395 [[image:1768226447728-811.png||class="img-thumbnail"]]
admin admin 1.1 396
Nicolas Schreiber 16.1 397 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
admin admin 1.1 398
Nicolas Schreiber 16.1 399 = sans groupDataType =
admin admin 1.1 400
Nicolas Schreiber 16.1 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
403
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
admin admin 1.1 417 == Paramétrages complémentaires pour les blocs répétables ==
418
419 il est possible d'inclure aussi dans un group_field
420
421 * une concaténation formalisée des champs du bloc répétable courant via le tag concat
422 * des champs des notices liées a un des champs du bloc via le tag 'linked_field'
423 * 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
424
425 === Ajout de données avant - après chaque sous-groupe ===
426
427 * **subGroupDataBefore **: séparateur avant les données d'un sous-groupe   (Chaine vide si non défini)
428 * **subGroupDataSeparator **: séparateur entre les données d'un sous-groupe   (Espace si non défini)
429 * **subGroupDataAfter **: séparateur après les donnes d'un sous-groupe    (Chaine vide si non défini)
430
431 === Ajout de données avant - après le groupe ===
432
433 Uniquement si groupDataType="group" car la colonne unique contiendra une concaténation de tous les  sous-groupes en un seul groupe
434
435 * **groupDataBefore **: séparateur avant les données du groupe    (Chaine vide si non défini)
436 * **groupDataSubGroupSeparator **: séparateur entre les sous-groupes   (' / ' espace slash espace si non défini)
437 * **groupDataAfter **: séparateur après les données du groupe   (Chaine vide si non défini)
438
439 === Exemple global ===
440
441 <**group_field **name="INTERVENANT"
442 groupDataType              = "**group**"
443 label                      = "Intervenants"
444 groupDataBefore            = "- texte avant le groupe -\n"
445 groupDataSubGroupSeparator = "\n{séparateur par défaut entre les sous groupe}\n"
446 groupDataAfter             = "\n-texte aprés le groupe"
447 subGroupDataBefore         = "- texte avant le sousgroupe - "
448 subGroupDataSeparator      = " {séparateur par défaut dans le sous groupe} "
449 subGroupDataAfter          = " - texte aprés avant le sousgroupe -"
450 \\>
451 \\ <field name='PERSONNE_INTERVENANT'  label='Intervenant'/> 
452 <field name='FONCTION_INTERVENANT'  label='Fonction ' dataBefore=" (" dataAfter=")"/> 
453 <field name='PRECISION_INTERVENANT'  label='Précisions intervenant ' dataJoinSeparator="\n"/> 
454 </group_field>
455
Nicolas Schreiber 2.1 456 [[image:1698310122900-966.png||data-xwiki-image-style-alignment="center" class="img-thumbnail"]]
admin admin 1.1 457
458 == Filtre sur les données du groupe ==
459
460 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
461
462 Il sera donc possible de filtrer les occurences d'un bloc répatable en fonction du contenu d'un ou de plusieurs de ces champs avec une syntaxe de type Sql [NOM_DU_CHAMP] opérateur [VALEUR]. De facto seuls les blocs répondant à cette condition seront exportés , les autres seront ignorés
463
464 === Masquer des sous-groupes ===
465
466 //Exemple : je voudrais n'exporter que les blocs Intervenants dont le champ Fonction est rempli//
467
468 <**group_field **name="INTERVENANT"
469 groupDataType              = "**group**"
470 label                      = "Intervenants"
471 **subGroupDataFilter         **= "(FONCTION_INTERVENANT != null)"
472 groupDataBefore            = "- texte avant le groupe -\n"
473 groupDataSubGroupSeparator = "\n{séparateur par défaut entre les sous groupe}\n"
474 groupDataAfter             = "\n-texte aprés le groupe"
475 subGroupDataBefore         = "- texte avant le sousgroupe - "
476 subGroupDataSeparator      = " {séparateur par défaut dans le sous groupe} "
477 subGroupDataAfter          = " - texte aprés avant le sousgroupe -"
478 \\>
479 <field name='PERSONNE_INTERVENANT'  label='Intervenant'/> 
480 <field name='FONCTION_INTERVENANT'  label='Fonction ' dataBefore=" (" dataAfter=")"/> 
481 <field name='PRECISION_INTERVENANT'  label='Précisions intervenant ' dataJoinSeparator="\n"/> 
482 </group_field>
483
484
485 Seul le bloc n° 2 est exporté
486
Nicolas Schreiber 2.1 487 [[image:1698310843667-475.png||data-xwiki-image-style-alignment="center" class="img-thumbnail"]]
admin admin 1.1 488
489 === Masquer des champs dans un sous-groupe ===
490
491 //Exemple : je voudrais n'exporter que les blocs Intervenants dont le champ Fonction est rempli//
492
493 <group_field name="INTERVENANT"
494 groupDataType              = "**group**"
495 label                      = "Intervenants"
496 groupDataBefore            = "- texte avant le groupe -\n"
497 groupDataSubGroupSeparator = "\n{séparateur par défaut entre les sous groupe}\n"
498 groupDataAfter             = "\n-texte aprés le groupe"
499 subGroupDataBefore         = "- texte avant le sousgroupe - "
500 subGroupDataSeparator      = " {séparateur par défaut dans le sous groupe} "
501 subGroupDataAfter          = " - texte aprés avant le sousgroupe -"
502 \\>
503 \\ <field name='PERSONNE_INTERVENANT'  label='Intervenant'/> 
504 <field name='FONCTION_INTERVENANT'  label='Fonction ' dataBefore=" (" dataAfter=")"/> 
505 <field name='PRECISION_INTERVENANT'  label='Précisions intervenant ' dataJoinSeparator="\n"  **inputGroupFieldFilter="(FONCTION_INTERVENANT is null)**"/> 
506 </group_field>
507
508 dans le lLoc n° 2  le cchamp PRECISIONS_INTERVENANT n'est pas exporté
509
Nicolas Schreiber 2.1 510 [[image:1698311103593-686.png||data-xwiki-image-style-alignment="center" class="img-thumbnail"]]
admin admin 1.1 511
512 === Limiter le nombre de sous-groupe exportés ===
513
514 (% class="wikigeneratedid" %)
515 **subGroupDataMultMaxi**="1" fera en sorte que seul le premier bloc sera exporté
516
517 (% class="wikigeneratedid" %)
518 **subGroupDataMultMaxi**="4" fera en sorte que seuls les 4 premiers blocs seront exportés
519
520 == Imbrication de groupes ==
521
522 Il n'y a pas de limite au nombre de niveaux imbriqués, il est donc possible de "suivre" la strucre hiérarchique d'un bloc répétable
523
524 Exemple avec les lots archéo
525
526 <group_field name="LOT_ELEMENT"
527 groupDataType              = "group"
528 label                      = "Archéo - lot"
529 groupDataSubGroupSeparator = "\n\n"
530 subGroupDataSeparator      = ""
531 >
532 <field name='DOMAINE_ELEMENT' />
533 <field name='DENOMINATION_ELEMENT' dataJoinSeparator=" ; " />
534 <field name='APPELLATION_ELEMENT' dataJoinSeparator=" ; " />
535 <field name='TYPOLOGIE_ELEMENT'  dataJoinSeparator=" ; " />
536
537 <group_field name="LOT_DENOMBREMENT"
538 groupDataType              = "group"
539 label                      = "Element - lot"
540 groupDataBefore ="\n"
541 groupDataSubGroupSeparator = " ; "
542 subGroupDataSeparator      = ""
543 >
544 <field name='LOT_TYPE_ELEMENT' dataBefore="" />
545 <field name='LOT_NB_FRAGMENTS' dataBefore=" (" dataAfter=")"/>
546 <field name='LOT_QTE_ESTIMEE' dataBefore=" (" dataAfter=")"/>
547 </group_field>
548
549 <field name='ELEMENT_NB_FRAGMENT'  dataJoinSeparator="\nNb Tot. " />
550 <field name='ELEMENT_NMI'  dataJoinSeparator="\nNMI " />
551 <field name='ELEMENT_POIDS'  dataJoinSeparator="\nPoids " dataAfter=" g" />
552 <field name='ELEMENT_PRECISION'  dataJoinSeparator="\n" />
553 </group_field>
554
Nicolas Schreiber 2.1 555 [[image:1719328382500-862.png||data-xwiki-image-style-alignment="center" class="img-thumbnail"]]
admin admin 1.1 556
557 = Export des via des liens par héritage (référence) =
558
559 Des notices qui référencent la notice courante : tag 'reference'
560
561 Actuellement ce tag s'appuie sur l'index Q des liens inverses entre table (sans précision du champ qui établit le lien).
562
563 ON ne pourra donc pas l'utiliser pour faire remonter la liste des notices filles liées à une notice méré car dans MUS_BIEN plusieurs champs sont liés à MUS_BIEN
564
565 (% class="box infomessage" %)
566 (((
567 A noter c'est **compressChar **en entete qui est utilisé comme séparateur  de notices liées
568 )))
569
570 il permettra par exemple de
571
572 == lister les notices récolement ou constat d'état liées à un bien dans un export des biens ==
573
574 <?xml version="1.0" encoding="ISO-8859-1"?>
575 <export-conf>
576 <table name="MUS_BIEN" charset="ISO-8859-1" separator="\t"** compressChar="\n" **newLine="\r\n" multiValueSeparator=', ' valueDelimiter='"'>
Nicolas Schreiber 2.1 577 \\<field name='UNIQUE_KEY'  label='Unique Key'/> 
admin admin 1.1 578 <field name='MUSEE'  label='Préfixe'/>
579 <field name='NUM_INVENTAIRE'  label='Numéro D'inventaire'/>
580
581 **<reference source='musee' table='MUS_RECOLEMENT'**
582 groupDataType         = "subGroup"
583 label                 = "Récolements et localisations"
584 subGroupDataBefore    = ""
585 subGroupDataSeparator = ", "
586 subGroupDataAfter     = "" >
587
588 <field name='ETAT_MODIFIE_LE'  label='Réalisé le/> 
589 <field name='ETAT_MODIFIE_PAR'  label='Réalisé par/> 
Nicolas Schreiber 3.1 590 **<linked_field name='EMPLACEMENT' label='Emplacement théorique'>**
admin admin 1.1 591 <field name='LABEL_PARENT' label='Empl. référence hiéra' display='true'/>
592 </linked_field>
593
594 **~ <linked_field name='EMPLACEMENT_NOUVEAU' label='Emplacement nouveau'>**
595 <field name='LABEL_PARENT' label='Empl. référence hiéra' display='true'/>
596 </linked_field>
597 </reference>
598
599
600 Il serait théoriquement possible de filtrer récolement
601
602 **subGroupDataFilter         **= "(ETAT_AVANCE_RECOL != '6')"
603
604 et relocalisations
605
606 **subGroupDataFilter         **= "(ETAT_AVANCE_RECOL = '6')"
607
608 == lister les notices exemplaires liées à une notice bib ==
609
610 <?xml version="1.0" encoding="ISO-8859-1"?>
611 <export-conf>
612 <table name="UNIMARC" charset="ISO-8859-1" separator="\t" compressChar="||" newLine="\r\n" >
613
614 ....
615
616 <linked_field name='712a'>
617 <field name='210a' label='712a-Nom' display='true'/>
618 <field name='210b' label='712a-Subdivision' display='true'/>
619 </linked_field>
Nicolas Schreiber 2.1 620 \\ <reference source='system' table='ICOMM_ITEM'
admin admin 1.1 621 groupDataType         = "subGroup"
622 label                 = "Exemplaires"
623 subGroupDataBefore    = "{ "
624 subGroupDataSeparator = ", "
625 subGroupDataAfter     = "}" >
626 <field name='STATUS' label='EX-STATUS_DISPLAY' display='true'/>
627 <field name='CODE'   label='Ex-CODE' display='false'/>
628 <field name='SITE'   label='Ex-Bibliothèque' display='true'/>
629 </reference>
630
631
632 == lister les biens liés à un colis ==
633
634 (% class="box infomessage" %)
635 (((
636 A noter : le tag reference peut imbrique des linked_field, ce qui permet de remonter jusqu'à MUS_BIEN en passant par MUS_JOIN_COLIS
637 )))
638
639 <?xml version="1.0" encoding="ISO-8859-1"?>
640 <export-conf>
641 <table name="MUS_COLIS" charset="ISO-8859-1" separator="\t" **compressChar="\n"** newLine="\r\n" multiValueSeparator=', ' valueDelimiter='"'>
Nicolas Schreiber 2.1 642 \\<field name='ETAT_MODIFIE_LE'  label='Etat modifié le'/>
admin admin 1.1 643 <field name='ETAT_AVANCE_COLIS'  label='Etat d_avancement'/>
644 <field name='UNIQUE_KEY'  label='Numéro de Code'/>
645
646 <linked_field name='LOCATION_REFERENCE' label='Emplacement de référence'>
647 <field name='LABEL_PARENT' label='Empl. référence hiéra' display='true'/>
648 </linked_field>
649 <linked_field name='LOCATION_CURRENT' label='Localisation actuelle '>
650 <field name='LABEL_PARENT' label='Loc. Actuelle hiéra' display='true'/>
651 </linked_field>
652
653 **<reference source='musee' table='MUS_JOIN_COLIS'**
654 groupDataType         = "subGroup"
655 label                 = "Biens liés"
656 subGroupDataBefore    = ""
657 subGroupDataSeparator = ", "
658 subGroupDataAfter     = "" >
659
Nicolas Schreiber 16.1 660 *
admin admin 1.1 661 ** <linked_field name='BIEN' label='Bien'>
662 **~ <field name='DISPLAY' label='Bien' display='true'/>
663 </linked_field>
Nicolas Schreiber 5.1 664 \\</reference>**
admin admin 1.1 665
666 **<reference source='musee' table='MUS_JOIN_COLIS_MOUV'**
667 groupDataType         = "subGroup"
668 label                 = "Biens en mvmnt liés"
669 subGroupDataBefore    = ""
670 subGroupDataSeparator = ", "
671 subGroupDataAfter     = "" >
Nicolas Schreiber 6.1 672 **<linked_field name='MOUVEMENT_BIEN' label='Bien'>**
admin admin 1.1 673 <field name='DISPLAY' label='Bien' display='true'/>
674 </linked_field>
675 </reference>
676
677
Nicolas Schreiber 3.1 678 = Exporter des images (uniquement en format de sortie excel natif) =
admin admin 1.1 679
Nicolas Schreiber 3.1 680 == Première image uniquement ==
admin admin 1.1 681
Nicolas Schreiber 3.1 682 Toutes les options de séparateurs, textes avant et aprés, fonctionnent. tous les cghampsd e IDOCS sont exportables
admin admin 1.1 683
Nicolas Schreiber 3.1 684 C'est l'option **subGroupDataIndex **qui permet de choisir l'image à exporter (premiere, deuxieme, troisieme...)
admin admin 1.1 685
Nicolas Schreiber 3.1 686 **Attention au choix de la résolution. **
687 //résolution=LOW// (imagette) sera suffisant pour excel. Si vous prenez MEDIUM ou HIGH le poids du fichier excel risque d'etre éxagéréent conséquent, ce qui compliquera la manipulation du document final
688 ne mettez pas une //dimImageXYInPixels// supérieurs à192, cela va ralentir le traitement et détérirore la qualité de l'imagette (192 est sa dimension par défaut dasn Flora)
admin admin 1.1 689
690
Nicolas Schreiber 3.1 691 **<linked_records_document_records** name="PHOTO_INV"
692 inputRecordFilter=""
693 linkedRecordFilter=""
admin admin 1.1 694
Nicolas Schreiber 3.1 695 groupDataType=""
696 documentTypes="Document-Photo"
697 subGroupDataFilter="(IDOC_ACCESSIBILITY = 1)"
698 subGroupDataMultMaxi=""
Nicolas Schreiber 16.1 699 **subGroupDataIndex="1">**
Nicolas Schreiber 3.1 700 <!~-~- champ de la table IDOCS ~-~->
701 <field name="LABEL" label="Photo 1 : "/>
admin admin 1.1 702
Nicolas Schreiber 3.1 703 <!~-~- Imagette ~-~->
704 <photo_document_file name="_PHOTO_1"
705 label="Photo 1"
706 inputRecordFilter=""
707 documentTypes="Document-Photo"
Nicolas Schreiber 4.1 708
Nicolas Schreiber 16.1 709 *
Nicolas Schreiber 4.1 710 ** resolution="LOW"
Nicolas Schreiber 3.1 711 dimImageXYInPixels="192"**/>
Nicolas Schreiber 4.1 712 </linked_records_document_records>**
admin admin 1.1 713
Nicolas Schreiber 3.1 714 == Plusieurs images ==
admin admin 1.1 715
Nicolas Schreiber 3.1 716 === sur plusieurs colonnes ===
admin admin 1.1 717
Nicolas Schreiber 3.1 718 Il est recommandé de positionner autant de colonnes que d'images à exporter, d'indiquer dans chque colonne le numéro de l'image (premiers, deuxieme, troisieme...) et de les positionner à la fin du tableau cara certaines colonnes seront forcéemnt vides
admin admin 1.1 719
Nicolas Schreiber 3.1 720 Pour cela il suffit de dupliquer le bloc ci dessus et de choisir le bon **subGroupDataIndex="?" **dans chaque colonne
admin admin 1.1 721
Nicolas Schreiber 3.1 722 Pour ne pas compliquer la lecture du fichier excel il est préférable de ne pas exporter le nom du fichier à chaque fois
admin admin 1.1 723
Nicolas Schreiber 3.1 724 Exemple avec 4 images
admin admin 1.1 725
Nicolas Schreiber 3.1 726 <linked_records_document_records name="PHOTO_INV"
727 documentTypes="Document-Photo"
728 subGroupDataFilter="(IDOC_ACCESSIBILITY = 1)"
Nicolas Schreiber 16.1 729 **subGroupDataIndex="1"**>
Nicolas Schreiber 4.1 730
731 **~
732 **<photo_document_file name="**_PHOTO1**"
733 label="**Photo1**"
Nicolas Schreiber 3.1 734 documentTypes="Document-Photo"
735 resolution="LOW"
736 dimImageXYInPixels="192"/>
737 </linked_records_document_records>
admin admin 1.1 738
Nicolas Schreiber 3.1 739 <linked_records_document_records name="PHOTO_INV"
740 documentTypes="Document-Photo"
741 subGroupDataFilter="(IDOC_ACCESSIBILITY = 1)"
Nicolas Schreiber 16.1 742 **subGroupDataIndex="2"**>
Nicolas Schreiber 4.1 743
744 **~
745 **<photo_document_file name="**_PHOTO2**"
746 label="**Photo2**"
Nicolas Schreiber 3.1 747 documentTypes="Document-Photo"
748 resolution="LOW"
749 dimImageXYInPixels="192"/>
750 </linked_records_document_records>
admin admin 1.1 751
Nicolas Schreiber 3.1 752 <linked_records_document_records name="PHOTO_INV"
753 documentTypes="Document-Photo"
754 subGroupDataFilter="(IDOC_ACCESSIBILITY = 1)"
Nicolas Schreiber 16.1 755 **subGroupDataIndex="3"**>
Nicolas Schreiber 4.1 756
757 **~
758 **<photo_document_file name="**_PHOTO3**"
759 label="**Photo3**"
Nicolas Schreiber 3.1 760 documentTypes="Document-Photo"
761 resolution="LOW"
762 dimImageXYInPixels="192"/>
763 </linked_records_document_records>
admin admin 1.1 764
Nicolas Schreiber 3.1 765 <linked_records_document_records name="PHOTO_INV"
766 documentTypes="Document-Photo"
767 subGroupDataFilter="(IDOC_ACCESSIBILITY = 1)"
Nicolas Schreiber 16.1 768 **subGroupDataIndex="4"**>
Nicolas Schreiber 4.1 769
770 **~
771 **<photo_document_file name="**_PHOTO4**"
772 label="**Photo4**"
Nicolas Schreiber 3.1 773 documentTypes="Document-Photo"
774 resolution="LOW"
775 dimImageXYInPixels="192"/>
776 </linked_records_document_records>
admin admin 1.1 777
Nicolas Schreiber 3.1 778 === sur plusieurs lignes ===
admin admin 1.1 779
Nicolas Schreiber 3.1 780 Avec les options ci dessous déclarés dans un seul bloc
admin admin 1.1 781
Nicolas Schreiber 3.1 782 <linked_records_document_records name="PHOTO_INV"
783 documentTypes="Document-Photo"
784 subGroupDataFilter="(IDOC_ACCESSIBILITY = 1)"
Nicolas Schreiber 4.1 785
Nicolas Schreiber 16.1 786 *
Nicolas Schreiber 6.1 787 ** subGroupDataMultMaxi="4"
788 subGroupDataIndex="">
Nicolas Schreiber 16.1 789 \\ **<photo_document_file name="_PHOTO"
Nicolas Schreiber 5.1 790 label="Photo"
791 documentTypes="Document-Photo"
Nicolas Schreiber 3.1 792 resolution="LOW"
793 dimImageXYInPixels="192"/>
Nicolas Schreiber 6.1 794 </linked_records_document_records>**
admin admin 1.1 795
Nicolas Schreiber 3.1 796 Flora générera une seule colonne pour les images, et ajoutera ensuite autant de lignes (vides) que nécésssaire pour poistionner au maximum les 3 Images suivantes (total 4 images exportées=
admin admin 1.1 797
Nicolas Schreiber 3.1 798 Cette disposition complique un peu la manipulation et la lecture des données dans excel à cause des lignes vides
admin admin 1.1 799
Nicolas Schreiber 3.1 800 == (% id="cke_bm_1281128S" style="display:none" %) (%%)Export des liens ark vers les images ==
admin admin 1.1 801
Nicolas Schreiber 3.1 802 Il est parfois délicat d'incorporer les images en tant que telles dans une colonne excel  car cela rend enuite le fichier difficile à manipule
admin admin 1.1 803
Nicolas Schreiber 3.1 804 De plus sur de gros volumes cela peut générer des fichiers de trop grande taille, surtout si on intégre les images originales au liue de se contenter des imagettes
805
806 Il st donc possible de publier les images via des liens ark
807
808 la colonne devra  etre paramétrée ainsi
809
admin admin 1.1 810 **name="PHOTO_INV" **=nom du champ contenant le lien vers la phototheque (si l'export concerne MUS_PHOTO on indiquera UNIQUE_KEY)
811
812 **subGroupDataMultMaxi="1" **Nombre de notices photos lues**, **il est recommandé de ne mettre qu'un seul lien ark car de facto le lien sera automatiquemenrt clicable dans excel (aprés avoir cliqué dans la cellule)
813
814 **dataMultMaxi="1" **Nombre de fichiers images lus par notice photo, il est recommandé de ne mettre qu'un seul lien ark car de facto le lien sera automatiquemenrt clicable dans excel (aprés avoir cliqué dans la cellule)
815
816 **dataBefore="${flora-url}/ark:**" reprendra automatiquement la racine de l'url de votre applucation flora. SI cette url est accessible par internet et que vous avecz activé le service ark sur votre application, la visualisation des uimages sera possible sur tout poste de travail connecté à internet
817
818 **dataAfter="/low" **renverra l'imagette,
819
820 * si on met** /medium **on aura un fichier de 800 pixels,
821 * si on met **/high** on aura l'image originale non redimensionnées (mais pas la THDEF)
822
823 <linked_field name="PHOTO_INV"
824 label="Image"
825 inputRecordFilter=""
826 groupDataType="group"
827 subGroupDataSeparator=" ~~ "
828 subGroupdataMultiValueSeparator="|"
829 subGroupDataMultMaxi="1"
830 >
Nicolas Schreiber 11.1 831 \\ <class_extractor
admin admin 1.1 832 extractorClassName="com.ezida.services.musee.extractor.MusPhotoArkExtractor"
833 name="PHOTO_INV_ARK"
834 label=""
835 inputRecordFilter=""
836
837 dataJoinSeparator="|"
838 dataMultiValueSeparator="|"
839 dataMultMaxi="1"
840 dataBefore="${flora-url}/ark:"
841 dataDefValue=""
842 dataAfter="/low"/>
843 </linked_field>
844
845
846 résultat obtenu.. avec un clic sur le lien ark exporté
847
Nicolas Schreiber 3.1 848 [[image:1698400681257-169.png]]
admin admin 1.1 849
850
Nicolas Schreiber 3.1 851 = Autres paramétrages =
admin admin 1.1 852
Nicolas Schreiber 3.1 853 == Conversions de dates et datations ==
admin admin 1.1 854
Nicolas Schreiber 3.1 855 **dataDateFormatDisplay**='yyyy-MM-dd'
admin admin 1.1 856
Nicolas Schreiber 3.1 857 dataDateFormatDisplay='yyyy'
admin admin 1.1 858
Nicolas Schreiber 3.1 859 .....
admin admin 1.1 860
Nicolas Schreiber 3.1 861 //Cela fonctionne pour les champs dates, time et datation//
admin admin 1.1 862
Nicolas Schreiber 3.1 863 time <field name='CREATE_DATE'  label='Saisi le' dataDateFormatDisplay='yyyy-MM-dd'/>
admin admin 1.1 864
Nicolas Schreiber 3.1 865 date <field name='ETAT_MODIFIE_LE'  label='Etat modifié le ' dataDateFormatDisplay='yyyy-MM-dd'/>
admin admin 1.1 866
Nicolas Schreiber 3.1 867 datation <field name='DATATION_BIEN_DEBUT' dataDateFormatDisplay='yyyy' /> Pour l'instant les dates Avant Jésus-Christ ne sont pas mentionnées comme telmes quand on applique cette conversion
868
869 (% class="box infomessage" %)
870 (((
871 Attention Excel applique ensuite ses propres automates de formatage à l'ouverture du fichier
872 )))
873
874 == valeur par défaut ==
875
876 **dataDefValue**="maValeurtextuelle"
877
878 si le field, linked_field, concat, group_feld est vide, c'est cette valeur qui sera exportée
879
880 //Exemple : utilisé dans l'export e-recolnat pour avoir par défaut la colonne langue = FR sans devoir la saisir dans toutes les notices. si le champ Langue de  notice est non vide il écrasera la dataDefValue//
881
882 == Données textuelles ajoutées en multilangue ==
883
884 Flora gére des fichiers de mots clés pour la traduction des labels textuels dans les différentes languies (dans les fichiers *.properties)
885
886 [[image:1698311785574-970.png||height="133" width="841"]]
887
888 ces mots clés peuvent etre utilisés dans toutes les valeurs textuelles posées dans les tags
889
890 //Exemple//
891
892 <field name='TYPE_UE'  label='Type Unité d_enregistrement ' dataBefore='**${menu.label.inventory} **: '/>
893
894 [[image:1698311964289-353.png||data-xwiki-image-style-alignment="center" class="img-thumbnail"]]
895
896
897
Nicolas Schreiber 9.1 898 == Conversion données d'un champ en majuscules ==
Nicolas Schreiber 3.1 899
Nicolas Schreiber 9.1 900 <field name='TITRE'  label='Titre' dataIsToMajus="true"/>
Nicolas Schreiber 3.1 901
Nicolas Schreiber 10.1 902 == Masquer un contenu de champ en fonction d'un menu (champs sensibles) ==
Nicolas Schreiber 3.1 903
Nicolas Schreiber 10.1 904 ci dessous si le uiser n'a pas le menu musee_menu_masque_champs_sensibles il pourra voir le champ
Nicolas Schreiber 3.1 905
Nicolas Schreiber 10.1 906 <field name='TITRE'  label='Titre' dataIsToMajus="true" inputRecordFilter="('{user.hasMenu.musee_menu_masque_champs_sensibles}' = 'false')"/>
Nicolas Schreiber 9.1 907
Nicolas Schreiber 11.1 908 == Ajouter le label du champ dans le contenu exporté ==
Nicolas Schreiber 10.1 909
Nicolas Schreiber 11.1 910 <field name='TITRE'  label='Titre' dataBefore='{fieldLabel} :  ' />
Nicolas Schreiber 10.1 911
Nicolas Schreiber 13.1 912 == Exporter des infos de paramétrage de champ ==
Nicolas Schreiber 12.1 913
914 fieldInfoName pouura prendre les 3 options label, linkTable, linkSource
915
916 <field_desc_info name="_collec_liee" fieldName="COLLEC_LIEE"
917 fieldInfoName="linkTable"/>