Affichage d'un attribut json dans une grille

Bonjour,

J’ai crée plusieurs champs personnalisés dans la fiche produit qui sont stockés dans le champ attrs json, et je souhaite afficher la valeur d’un seul champ sur une grille et un formulaire dans le module vente. j’ai essayé product.attrs.name mais ça marche pas.

Je vous remercie par avance de votre aide

1 « J'aime »

hello essaye un truc comme ca

        <viewer depends="product.attrs"><![CDATA[

                   <span class="label label-important" ng-show="record.product.attrs === '{&quot;obsolete&quot;: true}'" x-translate>obsolete</span>


		]]></viewer>
      </field>
   <field name="product.attrs"  hidden="true"/>

en gros sur le viewer tu explose ton champs attrs sur le champs json obsolete avec dans mon cas la valeur a true, si tu veux un test
sinon tu mets juste une balise et tu ecrit {{record.obsolete}} un truc dans le genre, suis plus sur
obsolete ça c’est le nom de mon champ

Je vous remercie pour votre réponse, mais ça ne marche pas non plus…

Bonjour,

Pour afficher un champ personnalisé (json) dans une liste, il faut cocher la case « Visible dans la liste ».

Pour la vue formulaire, deux possibilités :

  • définir un champ json spécifique pour les produits ouvert depuis les ventes et l’afficher uniquement dans ce cas.
  • définir une condition d’affichage sur le champ personnalisé sur le boolean « Vendable » (sellable)

Cordialement

Je vous remercie pour votre retour.

L’idée c’est de pouvoir afficher dans les lignes de détails au niveau des commande un champs personnalisé dans la fiche produit . Dans la vue sale-ordre-line-grid j’essaie de l’afficher par le nom du champ avec" product.attrs.nomchampspersonnalisé" mais ça ne marche pas. Y’a-t-il une syntaxe spécifique pour le faire?

Bonjour, je relance le sujet car j’ai un problème similaire ou lié.
Je veux lier mes devis à des véhicules et pouvoir afficher sur la grille un des champs de ces produits.

J’ai donc ajouté le champs personnalisé « vehicle » à mes objets « saleOrder », et si je peux cocher « afficher dans la grille » comme l’indique gdu-axelor, cela affiche le nom du véhicule, pas un champs interne à un de ces véhicules.

Idéalement, je voudrais que mes colonnes ressemblent à ça:

Numéro interne | Société | … | Immatriculation | …

Pour l’instant, ce que j’ai testé:

<field name="attrs.vehicle.plateNo"/> (pas de contenu affiché dans la colonne)
<field name="vehicle.plateNo"/> (idem)
(Dans l'action-view:)
<context name="plateNo" expr="'JusteUneConstante'"/>
<field name=":plateNo"> (pas de contenu affiché dans la colonne)

A ce moment, je commence à perdre espoir et à me résigner à faire un champs personnalisé pour chaque valeur que je veux afficher dans le saleOrder (immat, conducteur, coordonnées du conducteur…), mais c’est très peu pratique de devoir multiplier les champs personnalisés pour accéder à des valeurs qui devraient déjà être accessibles.

Est-ce qu’il existerait une autre solution ?

hello a l’arrache, cf ci dessus
le champs attrs et en json donc il faut utiliser la bonne syntaxe angulajs pour l’exploser
cdt
https://docs.axelor.com/adk/5.2/dev-guide/views/form.html#field-viewer