Page 1 sur 1

Pb à l'insertion d'un article dans F_DOCLIGNE

MessagePosté: Mer 14 Juin 2017 09:19
de Alex85
Bonjour à tous,

Dans l'ordre je dois créer un article, puis un devis concernant le-dit article.

L'insertion de l'article se passe sans problème,
F_DOCENTETE aussi

Au moment de faire un setDefaultArticle sur mon objet DocLigne, l'application plante et le message indique "L'objet n'est pas persistant" (voir screenshot)

Voilà ou j'en suis :
- l'article existe bel et bien, quand je debug mon appli, l'article apparait quasi instantanément dans la gescom au moment du write()
- dans le doute j'ai ajouté un message qui affiche si l'article est persistant (voir screenshot), réponse : oui
- pour tester, j'ai outrepassé la création de l'article et j'indique à mon objet DocLigne un objet déjà existant dans la base, et tout fonctionne.

Pour finir :
- un objet insérer avec write() est-il persistant tout de suite, ou le sera-t-il, par exemple, au moment de la fermeture de la connexion à la base ?
- je pense que le problème vient de l'article, mais je ne comprend pas où, j'utilise un dérivé de cette fonction régulièrement sans problème

Je ne sais plus par ou attaquer le problème, vous avez des idées ?

Merci

extrait de ma fonction insertion d'article :

Code: Tout sélectionner
        UnArticle = _BaseCommerciale.FactoryArticle.Create()
        Dim Famille As IBOFamille3 = _BaseCommerciale.FactoryFamille.Create()
        Famille.FA_CodeFamille = ArticleFamille
        With UnArticle
            .AR_Type = ArticleType
            .AR_Ref = ArticleRef
            .AR_Design = ArticleDesign
            .Famille = Famille
            .SetDefault()
            .Write()
        End With

        UnArticle = _BaseCommerciale.FactoryArticle.ReadReference(ArticleRef)
        With UnArticle
            .InfoLibre.Item("Matiere") = Matiere
            .InfoLibre.Item("Couleur") = Couleur
            .InfoLibre.Item("Largeur") = Largeur
            .InfoLibre.Item("Longueur") = Longueur
            .InfoLibre.Item("Soufflet_lateral") = SouffletLat
            .InfoLibre.Item("Soufflet_fond") = SouffletFond
            .InfoLibre.Item("Rabat") = Rabat
            .InfoLibre.Item("Patte") = Patte
            .InfoLibre.Item("Impression") = Impression
            .InfoLibre.Item("Epaisseur_theorique") = EpaisseurTheorique
            .InfoLibre.Item("Epaisseur_reelle") = EpaisseurReelle
            .InfoLibre.Item("Type_soudure") = TypeSoudure
            .Write()
        End With

Re: Pb à l'insertion d'un article dans F_DOCLIGNE

MessagePosté: Mer 14 Juin 2017 10:12
de Alex85
Je viens de tester avec une fonction utilisant IPMDocument, le message d'erreur est le même.
Donc le problème viens forcément de ma création d'article.

Je creuse et je reviens :)

Re: Pb à l'insertion d'un article dans F_DOCLIGNE

MessagePosté: Mer 14 Juin 2017 10:55
de Alex85
J'ai résolu mon problème et j'en ai peut-être trouvé la cause :

J'ai une classe objet métiers, ou je crée les fonctions utiles à mes applications.
La variable Article (IBOArticle3) dont je me sers pour créer mes articles, était globale dans ma classe.

Donc dans ma procédure CreationArticle / CreationDocEntete / CreationDocLigne :
1- je crée l'article en utilisant la variable globale, l'objet persistant existe en mémoire
2- je crée le docentete
3- pour créer le docLigne, je fais un readReference pour indiquer quel article utiliser (le même qui est toujours en mémoire cf. 1-)
et ça plantait à ce niveau-la.

J'imagine donc que la cause de ce plantage, c'est que mon objet article persistant était déjà en mémoire, et que l'appel à ce même article engendre un objet non-persistant afin d'éviter les insertions de données croisées.

J’espère avoir été clair dans mon explication.

Re: Pb à l'insertion d'un article dans F_DOCLIGNE

MessagePosté: Mer 14 Juin 2017 17:23
de romulus001
Bonjour,

Si un problème est résolu, il faut éditer le 1er message et sélectionner l’icône avec la croix verte