OK mais donc une recherche c'est plus que des critères de recherche.
Une recherche peut être résumée avec une structure du genre:
{
"layoutname" : "STAGR_form",
"requestcount" : 0,
"requests" :
[
{
"criteria" :
[
{
"fiedname" : "ma rubrique",
"value" : "> 100"
},
{
"fiedname" : "ma deuxième rubrique",
"value" : "toto"
}
],
"omitstate" : 0
},
{
"criteria" :
[
{
"fiedname" : "ma rubrique",
"value" : "128"
},
{
"fiedname" : "ma deuxième rubrique",
"value" : "titi"
}
],
"omitstate" : 1
}
],
"resultlayoutname" : "STAGR_form"
}
qui peut être générée avec une fonction comme ceci :
JSONSetElement ( ""
; [ "layoutname" ; Get ( LayoutName ) ; jsonstring ]
; [ "resultlayoutname" ; Get ( LayoutName ) ; jsonstring ]
; [ "requestcount" ; get ( RequestCount ) ; jsonnumber ]
// première requête
; [ "requests[0].criteria[0].fiedname" ; "ma rubrique" ; jsonstring ]
; [ "requests[0].criteria[0].value" ; "> 100" ; jsonstring ]
; [ "requests[0].criteria[1].fiedname" ; "ma deuxième rubrique" ; jsonstring ]
; [ "requests[0].criteria[1].value" ; "toto" ; jsonstring ]
; [ "requests[0].omitstate" ; get ( RequestOmitState ) ; jsonnumber ]
//deuxième requête
; [ "requests[1].criteria[0].fiedname" ; "ma rubrique" ; jsonstring ]
; [ "requests[1].criteria[0].value" ; "128" ; jsonstring ]
; [ "requests[1].criteria[1].fiedname" ; "ma deuxième rubrique" ; jsonstring ]
; [ "requests[1].criteria[1].value" ; "titi" ; jsonstring ]
; [ "requests[1].omitstate" ; true ; jsonnumber ]
)
et au sein de laquelle une fonction "helper" permet de générer une requête. Elle même peut utiliser une fonction "helper" qui s'occupe de collecter les valeurs des rubriques.
La question est ensuite comment intercepter cette recherche. En général, on veut laisser à l'utilisateur la possibilité d'enregistrer sa recherche, on ne veut pas toujours enregistrer.
C'est possible avec le pas de script Modifier recherche, qui permet de revenir à la pile de recherche. Ensuite, on boucle parmi les requêtes et on enrichit son objet comme décrit plus haut.