-
-
Bonjour,
Nous avons une inclusion multiple qui liste des fiches. Ces fiches comportent une inclusion simple dans laquelle il y a un champ nomenclature “sexe” indiquant le sexe du patient (Deux éléments : Homme ou Femme).
Nous souhaitons trier les fiches par sexe. Pour ce faire, nous avons ajouté au dessus de l’inclusion multiple une liste déroulante liée à une nomenclature permettant de sélectionner le sexe du patient. C’est ce champ que nous voulons utiliser pour effectuer le tri.
Nous avons donc tenté d’utiliser les propriétés Title, Id ainsi que Value présentes sur un champ de type nomenclature, sans succès (ces propriétés sont, semble-t-il chargées au moment de l’ouverture d’une fiche).
Pouvez-vous nous dire comment utiliser ce type de champs pour filtrer les données d’une inclusion multiple ?
Merci d’avance.
-
Bonjour,
Est-ce que votre nomenclature a été créée pour ce formulaire?
Si oui, avez-vous mis le formulaire dans les modèles référencés de la worklist?Joffrey
-
La nomenclature servant de filtre sur le sexe a été ajouté dans la worklist oui. L’information concernant le sexe se trouve dans une inclusion simple, elle-même située dans le formulaire requêté dans la worklist. Cette information, prend également la forme d’une nomenclature, cette fois située dans le modèle de l’inclusion simple (qui se trouve dans le formulaire qui est récupéré dans la worklist).
-
-
Je voulais surtout savoir si vous aviez bien référencé le formulaire requêté dans l’onglet Modèles Référencés de FormsStudio (cf ci-joint)?
Parce que j’ai testé de reproduire votre développement et je peux bien trier avec la nomenclature.Joffrey
fichiers attachés:
You must be logged in to view attached files. -
Bonjour,
Je ne l’avais pas fait effectivement. Cela permet de charger les nomenclatures (les propriétés Id et Title), c’est ça ?
Par ailleurs, je me suis aperçu que la nomenclature liée au champ dans la worklist était différente de celle liée au champ présent dans l’inclusion. J’ai donc fait les modifications et cela fonctionne désormais.Merci de votre aide.
-
Oui c’est ça. Les nomenclatures du formulaire requêté n’étant pas forcément présentes dans la Worklist, il faut qu’elle puisse avoir une référence de celle-ci pour les charger.
Joffrey
-
Bonjour,
C’est ce que j’ai fait et cela fonctionne désormais.
Merci beaucoup.
Sujet résolu. -
Bonjour,
Je rouvre ce sujet.
Dans un formulaire, nous avons une nomenclature simple avec plusieurs éléments. Ceux-ci ne sont pas visibles dans FormsStudio puisqu’ils sont ajoutés via Easily.
Dans une worklist, nous avons une inclusion multiple qui requête le formulaire susmentionné. Nous avons également des champs permettant de filtrer l’inclusion.
Parmi eux, il y a une case à cocher pour chaque élément de la nomenclature du formulaire en question.Cela nous permet d’afficher les fiches dans lesquelles ces éléments ont été sélectionnés. Cependant, une erreur se produit lorsque la requête est lancée et qu’une de ces cases est cochée. Le message est de type “La référence d’objet n’est pas définie…”
La nomenclature n’est pas située dans la worklist. Nous avons cependant ajouté le modèle du formulaire dans lequel se trouve cette nomenclature via l’onglet “Modèles référencés” dans le modèle de la worklist afin de pouvoir utiliser la propriété “Title” de la nomenclature. Malgré cela, l’erreur se produit.Avez-vous une idée ?
Merci.
-
Bonjour,
Je relance le sujet. Avez-vous une piste ?
Merci d’avance.
-
-
Auriez-vous pu pousser votre module en debug et m’envoyer l’erreur en plus détaillé ?
Joffrey
- Cette réponse a été modifiée le il y a 3 années et 5 mois par joffreygaro.
-
Bonjour,
L’erreur est la suivante :
“La référence d’objet n’est pas définie à une instance d’un objet.
Voici le code qui semble poser problème :
//Type infiltratif
if (this.filtre_test_infiltratif_simple_vrai_faux.Value)
{
listePrescriptions = listePrescriptions.Where(x =>
x.type_infiltration.Title == “Simple”);
}et voici un extrait des logs :
Exception rethrown at [0]:
à System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
à System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
à Forms.Module.Contracts.IEditionContext.CallFunction(IExecutionContext context, String name, ObjectNode parameters)
à Forms.Engine.Business.Services.ServiceEditionContext.<CallFunctionAsync>d__6.MoveNext()
14:54:00,529 UTC;06;ERROR;LocalExeception;ExceptionType=System.NullReferenceException;ExceptionMessage=La référence d’objet n’est pas définie à une instance d’un objet.|;ExceptionStackTrace=System.NullReferenceException: La référence d’objet n’est pas définie à une instance d’un objet.Server stack trace:
à Forms.Modules.FH_DOULEUR.FH_DOULEUR_WORKLIST.Model_FH_DOULEUR_WORKLIST.<ObtenirInfosPatient>b__6(FH_DOULEUR_PROGRAMME_HOSPITALISATION x) dans u:\6105-PROJET-58\FORMS_STUDIO\SOURCES\FH_DOULEUR\Project\FH_DOULEUR_WORKLIST\FH_DOULEUR_WORKLIST.cs:ligne 699
à System.Linq.Enumerable.WhereEnumerableIterator1.MoveNext()
1 source)
à System.Linq.Enumerable.Any[TSource](IEnumerable
à Forms.Modules.FH_DOULEUR.FH_DOULEUR_WORKLIST.Model_FH_DOULEUR_WORKLIST.ObtenirInfosPatient(Int32 idPatient, Model_inclusion_liste_patients item) dans u:\6105-PROJET-58\FORMS_STUDIO\SOURCES\FH_DOULEUR\Project\FH_DOULEUR_WORKLIST\FH_DOULEUR_WORKLIST.cs:ligne 715
à Forms.Modules.FH_DOULEUR.FH_DOULEUR_WORKLIST.Model_FH_DOULEUR_WORKLIST.RemplirListePatient(IExecutionContext context) dans u:\6105-PROJET-58\FORMS_STUDIO\SOURCES\FH_DOULEUR\Project\FH_DOULEUR_WORKLIST\FH_DOULEUR_WORKLIST.cs:ligne 79
à Forms.Modules.FH_DOULEUR.FH_DOULEUR_WORKLIST.ModelBase_FH_DOULEUR_WORKLIST.CallRemoteFunction(IExecutionContext context, String name, ObjectNode parameters) dans u:\6105-PROJET-58\FORMS_STUDIO\SOURCES\FH_DOULEUR\Project\FH_DOULEUR_WORKLIST\FH_DOULEUR_WORKLIST.gen.cs:ligne 564
à Forms.Module.Common.EditionContext.CallFunction(IExecutionContext context, String name, ObjectNode parameters) dans C:\GIT\Dominho\Sources\Projects\Forms.Module.Common\EditionContext.cs:ligne 2727
à System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md, Object[] args, Object server, Object[]& outArgs)
à System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage msg)Exception rethrown at [0]:
à System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
à System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
à Forms.Module.Contracts.IEditionContext.CallFunction(IExecutionContext context, String name, ObjectNode parameters)
à Forms.Engine.Business.Services.ServiceEditionContext.<CallFunctionAsync>d__6.MoveNext() -
La liste “listePrescriptions” a comme valeur “null” lorsque le “.Where()” est effectué ce qui entraîne “la référence d’objet est à nulle”. Il faut vérifier qu’elle est différente de nulle avant.
Joffrey
-
Bonjour,
J’ai modifié le code comme suit :
//Type infiltratif
if (listePrescriptions != null && listePrescriptions.Any() && this.filtre_test_infiltratif_simple_vrai_faux.Value)
{
listePrescriptions = listePrescriptions.Where(x => x.type_infiltration.Title == “Simple”);
}Malgré cela, l’erreur persiste.
La variable listePrescriptions est déclarée et initialisée plus haut.
Avez-vous une idée ?
Merci d’avance.
-
Il faut aussi que vous vérifiez que la propriété “type_infiltration” soit différente de nulle aussi, comme ci-dessous.
listePrescriptions = listePrescriptions.Where(x => x.type_infiltration != null && x.type_infiltration.Title == “Simple”);
Joffrey
-
Bonjour,
Cela fonctionne.
Merci de votre aide.Sujet résolu.
-
The forum ‘Aide aux développements avec FormsStudio’ is closed to new topics and replies.