Objet parent non renseigné pour un objet inliné

Request description

Bonjour,

J’ai un souci dans un hook avec un objet inliné : au premier passage dans form.onload, le parent de mon objet inliné est null. Il est bien renseigné ensuite.
Ce n’est pas urgent car j’ai un contournement.

Merci d’avance pour votre aide !
Emmanuelle

Steps to reproduce

  • Avoir un objet A avec un lien vers un objet B en inliné
  • Mettre un point d’arrêt dans le form.onload de l’objet B
  • Afficher le form de A
  • dans onload, B.parent est null
  • faire un reload sur A
  • dans onload, B.parent est bien A

J’ai fait le test sur un objet en liste non inliné et on a bien le parent dans le list.onload dès le premier passage.
Dans le front, je vois que B a bien son parent jusqu’au passage dans this.displayForm = function(ctn, obj, rowId, options, cbk) puis le perd au moment du ui.getNavObject.


Ici obj.parent = A, o.parent = null

Technical information

Instance /health

[Platform]
Status=OK
Version=6.2.19
BuiltOn=2025-12-05 11:56

Merci pour ton retour,

Le displayForm force l’usage de l’instance main (the_ajax_xxx) car les mises à jour en back sont toujours faites sur cette instance uniquement (pour n’implémenter les règles de mise à jour que sur une seule instance).

Le front peut appeler cette méthode depuis une liste (home, panel…), pas forcement depuis le menu.

Ce qui explique cette recopie du context de list pour naviguer entre enregistrements de la liste depuis le formulaire.

Le cas d’un objet inliné est un peu à cheval entre une liste 0,1 et un formulaire, il faudrait effectivement ajouter le contexte du parent dans ce “if”.

Le parent peut également se retrouver via $app.getBusinessObject("MyObject") qui retourne l’instance main par défaut en front.

1 Like

J’ai l’impression qu’en inlined, on y passe deux fois (avec panel puis main), mais ce n’est pas encore en cache et ça retourne un bo neuf, sans parent.

Un peu comme les pillbox :sweat_smile:

Dans le cas d’un objet inliné, les paramètres du displayForm reçoivent un inline avec toutes les infos contextuelles :

p.inline = {
	object: (panel/child object),
	metadata: (panel object).metadata,
	parent: (parent object),
	link: (link definition),
	mandatory: link.minOccurs > 0, // 0,1=optional or 1,1=mandatory
	count: 0
};

Tu dois pouvoir y accéder dans le hook form.onload(ctn, obj, p).

Nous allons copier le parent dans l’objet directement, pour le cas d’un objet inliné uniquement car en soit un objet main n’est pas sensé avoir un parent, c’est réservé aux listes filles/panel. Mais comme indiqué un objet inliné est hybride.

1 Like

Merci beaucoup c’est parfait pour mon use case.

This topic was automatically closed 60 minutes after the last reply. New replies are no longer allowed.