Association en masse d'objets liés par lien virtuel

Tags: #<Tag:0x00007f2f32192680>

Bonjour,

Nous avons dans notre modèle les liaisons avec des clés virtuelles.

J’ai constaté que nous ne pouvons pas activer le bouton d’association sur la liaison pour ajouter en masse des éléments. Le bouton d’association semble disponible uniquement pour les liens physiques et donc la liaison est clé fonctionnelle.

Pouvez-vous nous confirmer les règles de visibilité sur le bouton d’association et nous dire si une solution/évolution est envisageable pour les clés virtuelles ?

Cordialement
Jean-Baptiste

1 Like

Effectivement, on peut associer en masse :

  • une FK simple (0,N) comme par exemple affecter une page d’accueil en masse à des utilisateurs
  • une relation (N,N) comme par exemple créer des responsabilités pour un utilisateur

Une lien virtuel est un simple raccourci dans le modèle pour lier logiquement 2 objets entre eux (via jointure SQL spécifique). Il n’y a aucune notion de création/mise à jour (simple ou en masse) pour ce genre le lien qui peut passer par N jointures entre tables.

On peut imaginer d’afficher un bouton Associate mais Simplicité ne pourra jamais savoir quoi faire sur le “save” = il faut forcement coder ce que le “save” veut dire suivant votre modèle. Donc coder ça revient à créer une action spécifique.

Cette action front en javascript peut ouvrir le popup de sélection multiple d’un objetX et appeler du code pour alimenter les N tables de votre modèle :

// Selection multiple de N objetX
$ui.selectObject(null, "objetX", { selectRows: true }, function(ids) {
  // pour chaque row_id sélectionné créer le lien
  $(ids).each(function(i,id) { /* créer le(s) lien(s) */ });
});
  • si selectRows=false, le callback reçoit un simple row_id
  • en V5, il y a un nouveau paramètre selectedIds pour pré-sélectionner des lignes si besoin

Ok je vais regarder ça et je te dis d’ici demain si ça convient en attendant la V5.
Merci

Ok
et aussi à la place de “objetX” tu peux utiliser une instance d’objet directement si tu veux mettre des filtres pour ne pas tout lister ou utiliser un nom d’instance particulier avec du code back spécifique.

C’est bon pour le script.
Merci François