OM - rendre objet non persistant
Modérateurs: Super-Apogea, Super Modérateur
4 messages
|Page 1 sur 1
OM - rendre objet non persistant
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) :
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
Mais j'ai l'erreur
Vous auriez des suggestions?
Merci
PS: je suis en version 6.0 sur les objets métiers
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
- Messages: 176
- Inscription: Sam 28 Juin 2014 20:48
Re: OM - rendre objet non persistant
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,
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.
En recherche de missions.
Re: OM - rendre objet non persistant
Bonjour,
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.
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
- Messages: 176
- Inscription: Sam 28 Juin 2014 20:48
Re: OM - rendre objet non persistant
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
- Messages: 176
- Inscription: Sam 28 Juin 2014 20:48
4 messages
|Page 1 sur 1
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités