Rubrique vidée à l'enregistrement

Bonjour,

J’ai des rubriques dans mon formulaire dont je ne veux afficher que la valeur

Mais quand j’enregistre une modification, le contenu des rubriques dont l’affichage est “value” est vidé

Simplicité version4.0 patch level P25Built on2021-08-02 10:45 (revision aba32774222748a3395c406c673b96bc06cb12c6)

Je n’ai pas d’erreur dans logs.

Erreur de ma part? bug? mauvaise config?

Merci.

Bonjour,

Comment est valorisé ce champ ?

je ne suis pas sûr de bien comprendre “valorisé”…

Dans le paramétrage de votre attribut ParticipationEntiteLibelleActionValFond1, vous avez choisi de n’afficher que la valeur du champ. Ceci implique que l’input de l’attribut est masqué et donc que la valeur est valorisée autrement que par une saisie utilisateur.

Dans votre capture d’écran, la valeur “test 1234” a été renseignée dans ce champ. Ma question est donc, comment avez vous valorisé/saisi cette valeur ?

OK…

Alors j’ai essayé plusieurs solutions mais voici celle qui est testée :

  1. L’utilisateur déclenche une action pour insérer un texte dans le champ voulu (ce texte servira de libellé pour la rubrique en dessous)
  2. L’utilisateur saisi le nouveau texte
  3. La méthode insère le nouveau texte
	/****************************************************************************
	 * Modification du libellé du "Solde à nouveau 01.01.xx"					*
	 * Exécuté depuis l'action participationAcEntiteModificationLibelle0101xx	*
	 * Fabrice Mouttet / 30.07.2021												*
	 * **************************************************************************/
	public String modificationLibelleSoldeNouveau0101xx(Map<String,String> params){
		AppLog.info(getClass(), " modificationLibelleSoldeNouveau0101xx a été appelé ", null, getGrant());

		String nouveauLibelle = params.get("ParticipationEntiteSaisieTexte"); // L'utilisateur saisi le nouveau libellé dans la rubrique prévue pour ça
		
		//si l'utilisateur ne saisi rien, il y a un libellé par défaut
		if (nouveauLibelle.equals("")) {
			setFieldValue("ParticipationEntiteLibelleSoldeNouveau0101xx", "Solde à nouveau 01.01.xx");
		}
		//sinon c'est le nouveau libellé qui est affiché
		else  
			setFieldValue("ParticipationEntiteLibelleSoldeNouveau0101xx",nouveauLibelle);
			
			
		try {
    		new BusinessObjectTool(this).validateAndSave();
		} catch (Exception e) {
    		AppLog.error(getClass(), e.getStackTrace()[0].getMethodName() , " Erreur du nouveau libellé", e, null);
		}
		
		return null;
	}

A ce stade, le nouveau libellé est bien présent sur le formulaire, mais au prochain enregistrement du formulaire, le champ est vidé.

Je me permets de vous relancer sur le sujet…

Si dans mon formulaire le champ est configuré avec un affichage “input” ça fonctionne… s’il est configuré avec un affichage “value”, il est supprimé à chaque enregistrement…

Bonjour,

Pourquoi vous n’utilisez pas un getField(“x”).setDisplay(“y”)
dans le hook initUpdate ?

pour changer dynamiquement le libellé du champ plutôt que de persister un champ pour le libellé ?

Je ne suis pas sûr que setDisplay convienne :

  • Le libellé peut être différent sur chaque enregistrement
  • Le libellé peut changer plusieurs fois durant la vie de l’enregistrement

Le hook initUpdate est appelé à chaque chargement du formulaire, soit après chaque enregistrement.

Le problème avec cette méthode c’est que le libellé est changé pour tous les enregistrements et ce serait super (je viens de tester :slight_smile: ) si c’était le cas. Mais, le libellé doit pouvoir être différent sur chaque enregistrement.

Concrètement, l’utilisateur entre des valeurs CHF dans les champs dont le libellé de départ est : Solde au 01.01.xx, Solde au 31.12.xx

Chaque année, les valeurs sont mises à jour et le libellé devient par exemple :

Solde au 01.01.2019, Solde au 31.12.2018 pour un enregistrement
Solde au 01.01.2019, Solde au 31.12.2019 pour un autre
ou encore Solde au 01.01.2021, Solde au 31.12.2020
etc.

Je ne vois pas comment me passer d’un champ pour saisir le nouveau libellé

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