OM - rendre objet non persistant

Cette section est consacrée aux développements d'applications interfacées avec les logiciels Sage.

Modérateurs: Super-Apogea, Super Modérateur

OM - rendre objet non persistant

de romulus001 » Mer 23 Nov 2016 11:38

Bonjour,

Je développe ma première application à l'aide des objets métiers, où je dois créée un BL client.
Dans mon cas, je fais appel aux objets métiers pour remonter le prix unitaire d'un article (comme je ne sais pas si le client a ou non un tarif préférentiel, je préfère faire ainsi). Pour y arriver, je fais appel à un processus de création d'un BL client mais je n'exécute pas le processus, j'insère une unique ligne dans mon document de vente avec l'article dont il est question, puis je remonte la valeur du champ "prix unitaire", voici mon code (en vb.net) :

Code: Tout sélectionner
Public Function GetPrixVente(ByVal _ar_ref As String, ByVal _ct_num As String) As Double
        Dim OM_ProcDocVente As Objets100Lib.IPMDocument = Nothing
        OM_ProcDocVente = _OM_Gescom.CreateProcess_Document(Objets100Lib.DocumentType.DocumentTypeVenteLivraison)

        Dim OM_CLIENT As Objets100Lib.IBOClient3 = _OM_Gescom.CptaApplication.FactoryClient.ReadNumero(_ct_num)

        Dim OM_DocVenteEntete As Objets100Lib.IBODocumentVente3 = OM_ProcDocVente.Document

        OM_DocVenteEntete.SetDefaultClient(OM_CLIENT)

        Dim OM_ARTICLE As Objets100Lib.IBOArticle3 = _OM_Gescom.FactoryArticle.ReadReference(_ar_ref)

        OM_ProcDocVente.AddArticle(OM_ARTICLE, 10)
        Dim pLig As Objets100Lib.IBODocumentVenteLigne3 = OM_ProcDocVente.Document.FactoryDocumentLigne().List(1)

        Return pLig.DL_PrixUnitaire
End Function


Ce code fonctionne. Là, j'ai voulu ajouter une info libre au niveau de l'entête du document, et là, le vilain message d'erreur qui apparait à l'écran : Ce fichier est en cours d’utilisation !

Quand je ferme mon application, je n'ai pas de problème pour créer mon info libre.

Je pensais instancier mon objet processus de document en faisant
Code: Tout sélectionner
        Using OM_Proc As Objets100Lib.IPMDocument = _OM_Gescom.CreateProcess_Document(Objets100Lib.DocumentType.DocumentTypeVenteLivraison)

        End Using


Mais j'ai l'erreur
l'opérande 'Using' de type 'IPMDocument' doit implémenter 'System.IDisposable'


Vous auriez des suggestions?

Merci

PS: je suis en version 6.0 sur les objets métiers
Dernière édition par romulus001 le Lun 28 Nov 2016 15:44, édité 1 fois.
Super Contributeur
Super Contributeur
 
Messages: 176
Inscription: Sam 28 Juin 2014 20:48

Re: OM - rendre objet non persistant

de asr31 » Ven 25 Nov 2016 22:01

Bonjour,

Les Objets Métiers suivent la même logique que l'application cliente (la gescom dans ce cas), et on le voit en traçant sous SQL ce que fait l'application :
On crée une entête de document (la gescom dit alors INSERT à SQL) et après on met à jour les informations libre s'y référant (la gescom dit UPDATE de l'objet déjà créé).

L'entête de document doit être un objet persistant pour pouvoir y appliquer des règles sur des tables ou règles dépendantes comme le sont les informations libres.

Cordialement,
ASR31

En recherche de missions.
Avatar de l’utilisateur
Super Contributeur
Super Contributeur
 
Messages: 2975
Inscription: Mer 13 Fév 2008 15:31
Localisation: TOULOUSE

Re: OM - rendre objet non persistant

de romulus001 » Lun 28 Nov 2016 12:30

Bonjour,

asr31 a écrit:On crée une entête de document (la gescom dit alors INSERT à SQL) et après on met à jour les informations libre s'y référant (la gescom dit UPDATE de l'objet déjà créé).


Sauf que le processus IPMDocument permet de créer directement l'entête et les lignes du document, si processus ne peut pas être exécuté, rien n'est crée en base, et justement ce que je fais. Normalement, si la méthode du processus CanProcess renvoie la valeur False, il doit bien y avoir un moyen de pouvoir détruire l'objet, ce qui rendrait l'objet non persistant.
Super Contributeur
Super Contributeur
 
Messages: 176
Inscription: Sam 28 Juin 2014 20:48

Re: OM - rendre objet non persistant

de romulus001 » Lun 28 Nov 2016 15:43

J'ai trouvé, j'ai eu raison de récupérer les exemples et exercices lors de la formation sur les objets métiers :

Code: Tout sélectionner
 If OM_DocVenteEntete IsNot Nothing Then
    OM_DocVenteEntete.Read() 'déverrouillage du document
    _OM_Gescom.Close()
End If
Super Contributeur
Super Contributeur
 
Messages: 176
Inscription: Sam 28 Juin 2014 20:48


Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités