Correction visibilité sur contrainte en liste

Request description

Bonjour,

Je viens d’installer la 6.3.6 et j’ai toujours le problème de visibilité en liste mentionné ici Contrainte de visibilité en liste - #10

Dernière ligne ne valide pas la contrainte : colonne cachée

Dernière ligne valide la contrainte : colonne affichée

Merci d’avance pour votre aide !
Emmanuelle

[Platform]
Status=OK
Version=6.3.6
Variant=full
BuiltOn=2026-03-12 16:20

Bonjour,

Quelle est la définition de la contrainte ?

Comme indiqué dans le post précédent, elle ne peut être active qu’en front sinon elle agira en back sur toute la colonne.

Mince je pense que j’ai compris de travers :-/
J’ai besoin que ma contrainte s’applique en back car j’ai un calcul qui dépend de la visibilité / updatabilité des champs. Ne peut-on pas afficher la colonne dans tous les cas si c’est le paramétrage du champ à la base, et n’appliquer la contrainte que sur la valeur de la ligne ?

Sinon comment faire ? J’ai beaucoup de contraintes de ce type donc c’est un peu lourd de dupliquer le fonctionnement des contraintes dans le code back.

C’est ce que ça fait.
En back, il n’existe pas de notion visibilité en cellule de liste.

  • Le champ doit être visible en liste
  • Et la contrainte doit s’appliquer uniquement en front pour que le cellule soit masquée en fonction de la règle par ligne.

Sur l’implémentation, pourquoi un calcul dépend de la visibilité qui reste une notion purement UI.
La règle de calcul doit dépendre de la cause / de ce qui rendra le champ invisible ou modifiable : un droit, des valeurs… pas de la conséquence front.

L’outil qu’on met en place a beaucoup de champs à remplir (c’est du réglementaire).
Certains champs ne sont pas demandés (donc cachés ou grisés) sous certaines conditions.

J’ai un calcul de complétion au niveau de l’objet (% de champs remplis / % de champs à remplir, donc non grisés / cachés). C’est une simple boucle sur les champs qui exclut donc ce qui n’est pas updatable ou visible. Si je dois recoder ces conditions dans le back, ça va alourdir le code et la maintenance de l’outil car deux endroits à mettre à jour à chaque fois.

public Boolean isFieldEligibleForCompletion(ObjectField f)
	{
		return !f.isTechnicalField() && !f.isReferenced() && !f.isInternalRowId() && f.getType() != ObjectField.TYPE_ID && f.getVisibility() != ObjectField.VIS_HIDDEN && f.getFieldArea().isVisible() && f.isUpdatable();
	}
for (ObjectField f : fs)
			{	
				if (isFieldEligibleForCompletion(f) && !isCompletionField(f))
				{
					total++;
					if (!f.isEmpty())
						cpl++;
				}
			}

Ok je vois,
Si la contrainte doit s’appliquer en back, il faut donc réussir à remettre le champ en “visible en liste” à la fin du search qui boucle sur les lignes = pour ne pas dépendre de la dernière ligne.

Donc dans le postSearch, qui vient avant que les méta-data de l’objet ne soient générés (donc la colonne visible).

getField("x").setVisibility(ObjectField.VIS_BOTH);
1 Like

Désolée François je ne dois pas bien m’y prendre, ça ne fonctionne pas chez moi

	@Override
	public List<String[]> postSearch(List<String[]> rows) {
	    AppLog.info("postSearch ", getGrant());

	    getField("cdpFinpdtcrLoanToValueVnWaiverProof").setVisibility(ObjectField.VIS_BOTH);
	    
	    return super.postSearch(rows);
	}

Les metadata