J’aimerais savoir s’il y’a une possibilité de récupérer une liste liée à une liste énuméré provenant du même objet métier, en utilisant la librairie npm de Simplicité.
Exemple :
1ere liste (document type)
2ème liste (document sub type)
Lorsque je sélectionne la valeur “30”, sur ma 2ème liste je souhaiterais voir apparaître la liste filtrée pour cette valeur. Plus précisément pouvoir récupérer la liste liée “DOCPROPERTYSUBTYPE”
Cette ligne me donne bien une liste de valeur globale, mais je ne vois pas comment je peux récupérer cette liste qui sera filtré en fonction de valeur de la 1ère liste énuméré.
Ce que @Paul_S essaie de faire, c’est que depuis un site externe, afficher une liste de valeur A, pour laquelle, chaque valeur possède une liste liée.
Si l’utilisateur sélectionne une valeur A1 ( Bien par exemple), on affiche dans le champ de la liste B, la liste B1 qui est liée à la valeur A1 (DOCPROPERTYSUBTYPE qui est liée à Bien). Et ainsi de suite.
Une solution serait d’aller piocher dans l’objet système FieldListLink pour justement récupérer la liste B1 qui est liée au code A1.
La UI utilise la couche Ajax qui implémente le service “getlinkedlist”
/**
* Gets a linked list of an enum field
* @param field Enum field name
* @param value Selected value(s) separated with ";"
* @param target Linked field
* @param lov Current linked list name
* @param callback <code>function(target, new list \{name, items\})</code>
* @param params Optional async and error handler
* @param params.all Get all linked values when value is empty
* @function
*/
object.getLinkedList(field, value, target, lov, callback, params)
Surement à wrapper sur les autres interfaces Node/React.
L’option “all:true” permet de lister toutes les valeurs liées possibles = utilisé dans le choix d’une recherche sans présélectionner la liste mère.
Ca a été ajouté dans la version 2.2.18 de la lib npm, cf. getFieldLinkedList
Exemple d’usage
const list = await ctc.getFieldLinkedList('myField', 'myLinkedField', 'MYCODE1');
for (const item of list.items)
console.log(`${item.code} (${item.value})`);
Déjà le await devant app.getBusinessObject() n’a pas de sens => cette methode ne renvoie pas une Promise.
Sinon vous n’obtenez pas un résultat “vide” mais un résultat qui indique qu’il n’ya pas de liste liée pour la combinaison des field, linked field et code que vous passez.
Sans plus d’informations sur votre paramétrage je ne peux pas vous aider.
Je ne vois pas raison que ça change quelque chose de passer 30 ou '30'
Le code passé à la fonction getFieldLinkedList est passé en attribut HTTP (via encodeURIComponent) lors de l’appel API et à l’arrivée ce sera donc vu comme un string (car de toute façon coté serveur les codes d’une liste de valeur sont des strings).
encodeURIComponent(30) ou encodeURIComponent('30') donnent la même chose = dans les deux cas un string qui contient 30