Bonjour, je ne fais pas appel aux objets métiers en wlangage (car trop galère) mais en vb.net.
En lisant la doc SAGE sur les objets métiers, vous pouvez trouver cet exemple qui permet de faire cette transformation et de récupérer les numéros des documents générés :
- Code: Tout sélectionner
Module ProcessusVenteCommander_1LigneDeToNewBc
'Objet base commerciale
Dim oCial As BSCIALApplication3
'emplacement du fichier commercial
Dim sPathGcm As String = "C:\Temp\Bijou.gcm"
Sub Main()
Try
'Instanciation de l'objet base commercial
oCial = New BSCIALApplication3
'Ouv erture de la base
If OpenBase(oCial, sPathGcm) Then
'Création du processus Commander
Dim pTransfo As IPMDocTransformer = oCial.Transformation.Vente.CreateProcess_Commander
'Si le dev is DE00036 existe
If oCial.FactoryDocumentVente.ExistPiece(DocumentTy pe.DocumentTypeVenteDevis, "DE00036") Then
'Sélection du dev is DE00036
Dim pDoc As IBODocumentVente3 = oCial.FactoryDocumentVente.ReadPiece(DocumentType.DocumentTypeVenteDevis, "DE00036")
'Si le document contient au moins une ligne
If pDoc.FactoryDocumentLigne.List.Count > 0 Then
'Sélection de la première ligne du devis
Dim pLig As IBODocumentVenteLigne3 = pDoc.FactoryDocumentLigne.List(1)
'Ajout de la ligne au process
pTransfo.AddDocumentLigne(pLig)
'Test pour savoir si le processus peut être v alidé
If pTransfo.CanProcess Then
'Validation du processus
pTransfo.Process()
'Affichage du numéro de pièce du document créé
'par le processus de transformation
Console.WriteLine("Ligne transformée dans le document " & CType(pTransfo.ListDocumentsResult(1), IBODocumentVente3).DO_Piece)
Else
'Traitement de récupération des erreurs
RecupError(CType(pTransfo, IPMProcess))
End If
End If
End If
End If
Catch ex As Exception
Console.WriteLine("Erreur : " & ex .Message)
Finally
'Fermeture de la connexion
CloseBase(oCial)
End Try
End Sub
Si cela peut vous aider.