Valoriser un champ lors d’un accès à un Objet depuis une URL deeplink

Bonjour,

Je voudrais savoir s’il était possible de valoriser une FK d’un objet qu’on ouvre en création via un lien.

Je voudrais proposer aux utilisateurs de cliquer sur un lien, ouvrir le formulaire d’un objet en création, et qu’un champ (une FK) soit déjà alimenté.

Voici ce que je fais :

			var o = this.getGrant().getTmpObject("ImmoLegEntNatPer");
			o.resetFilters();
			var rows = o.search();
			o.setRowId(ObjectField.DEFAULT_ROW_ID);
			o.resetValues(true);
			o.setFieldValue("legEntNatPerImmoLegEntId",286);
		    var link = HTMLTool.getFormURL(o, "nav=new&action=update");
			var url = Grant.getSystemAdmin().getParameter("DIRECT_URL") + HTMLTool.getMainURL("mobile=true&deeplink="+HTTPTool.encode(link));
			return Message.formatError("Vous devez saisir d'abord un mandataire pour ce gestionnaire de bien","Pour le créer, cliquez "+"<a href="+url+' target="_blank"'+">" + "ICI","");

Le formulaire s’ouvre bine en création, mais le champ est vide.

Merci d’avance pour votre aide.

Abed.

Ce n’est pas prévu: getFormURL ne récupère que le row ID sur l’objet (les autres attributs ne sont pas ajoutés dans l’URL, ce qui est normal). Si vous ajoutez explicitement &myField=myValue à l’URL ça marchera peut être.

PS: dans votre exemple de code une chose m’interpelle: une valeur en dur d’ID foreign key n’est clairement pas une bonne chose car d’une instance à l’autre les row ID sont différents

Merci @david pour votre retour.

J’ai essayé de mettre "&legEntNatPerImmoLegEntId=286" à la fin de l’url mais cela ne marche pas. Si j’ai bien compris, j’en déduis que ce n’est pas possible de le faire.

La saisie en dur de l’ID FK était uniquement pour des besoins de tests.
Abed.

Pas comme cela en tout cas.

Une prévalorisation d’attribut est plutôt à implémenter dans l’initCreate à voir si en jouant sur le nom d’instance de l’objet et/ou sur le user connecté vous pouvez implémenter ces règles conformément à votre besoin

Si j’arrive à savoir dans l’initCreate de l’objet à créer que je viens d’un lien, je pourrais utiliser effectivement un paramètre global pour véhiculer la FK que je cherche à alimenter dans le formulaire de création.
Mais quand je mets dans l’initCreate this.getInstanceName(), c’est l’instance cible qui s’affiche, et si je mets this.getParentObject(), c’est vide.

Comment je pourrais savoir d’où je viens ?
Merci d’avance

Merci @david, j’ai utilisé des paramètres pour véhiculer l’info (provenance ET valeur de la FK)…