PC SOFT

GRUPOS DE DISCUSSÃO PROFISSIONAL
WINDEVWEBDEV e WINDEV Mobile

Inicio → WINDEV 2024 → Objets métiers SAGE 100c
Objets métiers SAGE 100c
Iniciado por EJ, abr., 11 2019 5:28 PM - 34 respostas
Membro registado
27 mensagems
Publicado em abril, 11 2019 - 5:28 PM
Bonjour,

Je suis a la recherche d'une aide sur l'utilisation des "Objets Métiers SAGE" avec Windev.
J'ai la dll "objets100c.dll" qui est installé sur mon poste.
Avec Visual Studio, j'ai référencé dans un projet l'objet COM "objets100clib" sans aucun problème, mais avec Windev je
n'arrive a rien.

Ma question est simple, comment déclarer mon objet COM dans Windev, et comment utiliser les méthodes qui lui sont rattachés.

Merci d'avance pour votre aide.:merci:
Membro registado
3.453 mensagems
Publicado em abril, 11 2019 - 5:49 PM
Essais de l'importer comme composant .net
Membro registado
27 mensagems
Publicado em abril, 11 2019 - 7:03 PM
les "Objets Métiers SAGE" n'est pas un reconnu comme un .net mais un objet COM.
Membro registado
3.453 mensagems
Membro registado
352 mensagems
Publicado em abril, 12 2019 - 9:07 AM
Bonjour, c'est vraiment galère de faire appel aux OM Sage en wlangage, l'idéal serait de tout coder dans une librairie en .NET, dans windev, vous ferez appel aux différentes fonctions de traitement, chose que j'ai faite
Membro registado
27 mensagems
Publicado em abril, 12 2019 - 8:25 PM
Merci pour l'idée.
Effectivement, je vais faire un test dans ce sens. :merci:
Publicado em abril, 13 2019 - 9:10 AM
Bonjour,

Je te recommande consulter ce post pour lequel j'avais le même problème le mois dernier :
https://forum.pcsoft.fr/fr-FR/pcsoft.fr.windev/225022-objets-metiers-sage-225160/read.awp…

Jean-Marc SOUCHEZ
Membro registado
3.453 mensagems
Publicado em abril, 13 2019 - 8:15 PM
Pour info
l'exemple WD ar drone d'un TDF,
contient un composant interne d'accès aux objets COM.
Membro registado
27 mensagems
Publicado em abril, 15 2019 - 9:29 AM
Bonjour,

J'ai testé la solution de créer un .net avec Visual Studio et de l'inclure ensuite dans Windev, cela fonctionne sans problème.

Merci à tous pour l'aide
Publicado em fevereiro, 08 2020 - 12:26 PM
Bonjour,

J'ai aussi des problèmes d'intégration, merci de me dire sous quelle forme vous avez intégré ces fonctions sous Windev.

Salutations
Membro registado
27 mensagems
Publicado em fevereiro, 12 2020 - 4:19 PM
Bonjour MBM,

Peux-tu décrire un peu ton problème d'intégration...

Merci
Publicado em maio, 19 2020 - 12:21 PM
Je voudrais savoir comment tu fais appel à des modules .Net dans Windev stp !
Membro registado
4.129 mensagems
Publicado em maio, 19 2020 - 1:55 PM
Bonjour,
https://doc.pcsoft.fr/fr-FR/?2012002

--
Il y a peut être plus simple, mais, ça tourne
Membro registado
27 mensagems
Publicado em maio, 22 2020 - 1:45 PM
Bonjour,

J'ai changé de méthode pour éviter des problèmes avec la DLL.
Je te conseil le code suivant
// Connexion à la base SAGE 100C
cBaseCIALInt est un objet OLE dynamique
cBaseCPTAInt est un objet OLE dynamique

cBaseCIALInt = allouer un objet OLE "Objets100c.Cial.Stream.1"
cBaseCPTAInt = allouer un objet OLE "Objets100c.Cpta.Stream.1"

cBaseCIALInt >>Name = SansEspace(sNomBase)
cBaseCIALInt >>Loggable>>UserName = SansEspace(sUserName)
cBaseCIALInt >>Loggable>>UserPwd = SansEspace(sUserPwd)

cBaseCPTAInt = cBaseCIALInt >>CptaApplication

cBaseCIALInt>>Open()

// Lecture d'un Tiers
cTiers est un objet automation dynamique

cTiers = cBaseCPTAInt >>FactoryTiers>>ReadNumero("CARAT")


En Windev l'utilisation des Objets Métiers SAGE n'est pas intuitive. Personnellement je passe par un projet C# pour coder et avoir la syntaxe.
Après seulement je transpose en Windev et cela fonctionne sans problème.

Bon dev.
Publicado em julho, 06 2020 - 8:33 PM
Bonjour,

J'ai repris ton exemple en installant aussi le KitObjets100c_311.exe.

le code est le suivant :

sNomBase est une chaîne = "C:\Users\Public\Documents\Sage\Gestion commerciale 100c\Bijou.gcm"
sUserName est une chaîne= "testsage"
sUserPwd est une chaîne= "$e12Q$F3i2"


cBaseCIALInt est un objet OLE dynamique
cBaseCPTAInt est un objet OLE dynamique

cBaseCIALInt = allouer un objet OLE "Objets100c.Cial.Stream.1"
cBaseCPTAInt = allouer un objet OLE "Objets100c.Cpta.Stream.1"

cBaseCIALInt >>Name = SansEspace(sNomBase)
cBaseCIALInt >>Loggable>>UserName = SansEspace(sUserName)
cBaseCIALInt >>Loggable>>UserPwd = SansEspace(sUserPwd)


cBaseCIALInt>>Open()

// Lecture d'un Tiers
cTiers est un objet Automation dynamique

cTiers = cBaseCPTAInt >>FactoryTiers>>ReadNumero("CARAT")

Lorsque j'exécute le programme j'ai à chaque fois ce message :

Vous avez appelé la méthode Automation 'Open'.
En tentant d'invoquer la méthode <Open> ou de lire la propriété <Open>, l'objet Automation/ActiveX a renvoyé l'erreur suivante :
'Erreur FFFFFFFF : Erreur inconnue [3706] !'
En tentant d'invoquer la méthode <Open>, l'objet Automation/ActiveX a renvoyé l'erreur suivante :
'Erreur FFFFFFFF : Erreur inconnue [3706] !'
En tentant de lire la propriété <Open>, l'objet Automation/ActiveX a renvoyé l'erreur suivante :
'Erreur 80020003, Le membre demandé n'existe pas'
En tentant d'écrire la propriété <Open>, l'objet Automation/ActiveX a renvoyé l'erreur suivante :
'Erreur 80070057, Un ou plusieurs arguments sont invalides'

Pile des appels :
Fin d'initialisation de FEN_Menu (FEN_Menu), ligne 20

Date : 06/07/2020 14:24:48
Projet : SageX

Informations supplémentaires :
Code erreur : 2205
Module : 'wd250vm.dll (01F250089f - 25.0.480.3)
EIT_TYPE_WDFILE : <2>
EIT_IDCODE : <34>

Avez vous déjà eu cette erreur et que faut il faire pour corriger ?

cdt,
Steeven
Publicado em julho, 10 2020 - 3:24 PM
BaseGestcom est un objet Automation "Objets100c.Cial.Stream.1" // Objet Métiers sage 100c
BaseCompta est un objet Automation "Objets100c.Cpta.Stream.1"

//Connexion
BaseGestcom>>name ="c:\testsql1.gcm" // Adresse de la base GC
// Initialisation des infos de connexion CPTA
BaseCompta>>name = "c:\testsql1.mae"
BaseCompta>>loggable>>username = "XXXX" // Utilisateur de connexion
BaseCompta>>loggable>>userpwd = "XXXXX" // Mot de passe de la connexion

// Association de la base GC et CPTA
BaseGestcom>>CptaApplication = BaseCompta
// Initialisation des infos de connexion GC
BaseGestcom>>loggable>>username = "XXXXX" // Utilisateur de connexion
BaseGestcom>>loggable>>userpwd = "XXXXX" // Mot de passe de la connexion
// Ouverture de la base GC (la compta est aussi ouverte)

BaseGestcom>>open() // Ouverture de la base

SI PAS BaseGestcom>>ISOpen ALORS

Erreur("Impossible de se connecter à la base de données Sage Gestcom")

FIN


//ajout d'un client

pautListeClients, pautClient est un objet Automation dynamique
pautListeContacts,pautContact est un objet Automation dynamique
pautRegelement est un objet Automation dynamique
pautSiteLivraison est un objet Automation dynamique
pautModeRegelement est un objet Automation dynamique
pautRepresentant est un objet Automation dynamique
pautListeRepresentant est un objet Automation dynamique
pautListeCategorieComptable est un objet Automation dynamique
// Création de l'objet métier
pautClient = BaseCompta>>Factoryclient>>Create
pautClient>>CT_num=CLIENTS_FOURNISSEURS.NoDeCompteGescom

pautClient>>Adresse>>Adresse=CLIENTS_FOURNISSEURS.Adresse_CF
pautClient>>Adresse>>CodePostal=CLIENTS_FOURNISSEURS.CodePostal
pautClient>>Adresse>>Complement=CLIENTS_FOURNISSEURS.ComplementAdresse
pautClient>>Adresse>>Ville=CLIENTS_FOURNISSEURS.Ville
pautClient>>Adresse>>Pays =CLIENTS_FOURNISSEURS.Pays

pautClient>>Telecom>>Telecopie=CLIENTS_FOURNISSEURS.Fax_CF
pautClient>>Telecom>>Telephone=CLIENTS_FOURNISSEURS.Telephone
pautClient>>Telecom>>EMail=CLIENTS_FOURNISSEURS.eMail_CF
pautClient>>Telecom>>Site=CLIENTS_FOURNISSEURS.SiteInternet

pautClient>>Ct_Intitule=CLIENTS_FOURNISSEURS.Intitule
pautClient>>Ct_facture=1
pautClient>>Ct_siret=CLIENTS_FOURNISSEURS.NoSiret
pautClient>>Ct_ape=CLIENTS_FOURNISSEURS.CodeNAF
pautClient>>CT_Identifiant =CLIENTS_FOURNISSEURS.NoIdentifiant

//tiers payeur
pautClient>>TiersPayeur=pautClient

pautClient>>CompteGPrinc=BaseCompta>>FactoryCompteG>>ReadNumero("411000")

pautClient>>Representant=RechercheRepresentant(EMPLOYES.NomEmploye,EMPLOYES.PrenomEmploye)

SI PAS BaseCompta>>Factoryclient>>Existnumero(CLIENTS_FOURNISSEURS.NoDeCompteGescom) ALORS

pautClient>>Writedefault
FIN

//Mode de reglement
pautModeRegelement=pautClient>>FactoryTiersReglement>>Create
pautModeRegelement>>Reglement=BaseCompta>>FactoryReglement>>readintitule(ValeurModeReglement)
pautModeRegelement>>JourTB(1)=COMBO_JourDeTombe
pautModeRegelement>>NbJour=COMBO_NbJours
// pautModeRegelement>>JourTB(1)=SAI_Jour_de_tombée
// pautModeRegelement>>NbJour=SAI_Nombre_de_jours
pautModeRegelement>>TRepart=1 //ReglementRepartitionTypeEquilib

// Const ReglementConditionTypeJour = 0
// Const ReglementConditionTypeMois = 2
// Const ReglementConditionTypeMoisCivil = 1

pautModeRegelement>>condition = 0
pautModeRegelement>>write


//Contact

pautContact=pautClient>>factorytierscontact>>create

SELON CONTACTS.Civilite

CAS "Mr" : pautContact>>civilite=ContactCiviliteMonsieur
CAS "Mme" : pautContact>>civilite=ContactCiviliteMadame
CAS "Mlle" : pautContact>>civilite=ContactCiviliteMademoiselle

FIN

pautContact>>Nom=Gauche(CONTACTS.Nom,35)
pautContact>>Prenom=Gauche(CONTACTS.Prenom,35)
pautContact>>Telecom>>telephone=CONTACTS.Telephone
pautContact>>Telecom>>telecopie=CONTACTS.Fax
pautContact>>Telecom>>Portable =CONTACTS.Portable
pautContact>>Telecom>>Email=CONTACTS.eMail

pautContact>>write

SI CONTACTS.ContactPrincipal ALORS
pautClient>>CT_Contact=CONTACTS.Nom+" "+CONTACTS.Prenom
pautClient>>write
FIN


//SITE DE LIVRAISON

//Liste des sites de livraison
//Attention au site de livraison créer automatiquement par Sage

pautListeSiteLivraison=pautClient>>FactoryclientLivraison>>list
NbSite est un entier = pautListeSiteLivraison>>count()
POUR i=1 À NbSite
pautSiteLivraisonCreeAutoDansGestcom=pautListeSiteLivraison>>item(i)
FIN
//création d'un site de livraison
pautSiteLivraison=pautClient>>FactoryclientLivraison>>create

pautSiteLivraison>>LI_Intitule=Gauche(SITES_LIVRAISON.Intitule,35)
pautSiteLivraison>>LI_Contact=Gauche(SITES_LIVRAISON.Contact,35)

pautSiteLivraison>>Adresse>>Adresse=Gauche(SITES_LIVRAISON.Adresse,35)
pautSiteLivraison>>Adresse>>CodePostal=SITES_LIVRAISON.CodePostal
pautSiteLivraison>>Adresse>>Complement=Gauche(SITES_LIVRAISON.ComplementAdresse,35)
pautSiteLivraison>>Adresse>>Ville=Gauche(SITES_LIVRAISON.Ville,35)

pautSiteLivraison>>Telecom>>EMail=Gauche(SITES_LIVRAISON.AdresseEMail,69)
pautSiteLivraison>>Telecom>>Telecopie=SITES_LIVRAISON.Fax
pautSiteLivraison>>Telecom>>Telephone=SITES_LIVRAISON.Telephone



pautSiteLivraison>>write

BaseGestcom>>Close
BaseCompta>>Close
Membro registado
27 mensagems
Publicado em julho, 16 2020 - 8:25 AM
Bonjour Steeven,

Attention, dans SAGE la base "maitre" est la comptabilité, il te faut mettre dans ton code:

Quand la comptabilité à le même user et mdp.
cBaseCPTAInt = cBaseCIALInt >>CptaApplication


Sinon, il faut rajouter comme @guillaumeh
BaseCompta>>name = "c:\testsql1.mae"
BaseCompta>>loggable>>username = "XXXX" // Utilisateur de connexion
BaseCompta>>loggable>>userpwd = "XXXXX" // Mot de passe de la connexion

BaseGestcom>>CptaApplication = BaseCompta


Bon dev.
Publicado em julho, 22 2020 - 8:52 PM
Bonjour Ej,

Faut il absolument que j'installe la compta pour faire mon dev ?

Cdt,
Steeven
Membro registado
27 mensagems
Publicado em julho, 23 2020 - 9:10 AM
Bonjour Steeven,

Tu n'as pas besoin d'avoir les applications SAGE sur ton poste de dev.
Il te faut uniquement le fichier GCM de la société en plus des objets métiers correspond à la version de SAGE (100cV6, 100cV7).

Exemple: BIJOU.gcm
cBaseCIALInt = allouer un objet OLE "Objets100c.Cial.Stream.1"
cBaseCPTAInt = allouer un objet OLE "Objets100c.Cpta.Stream.1"

cBaseCIALInt >>Name = "c:\AppliSage\bijou.gcm"
cBaseCIALInt >>Loggable>>UserName = "<Administrateur>
cBaseCIALInt >>Loggable>>UserPwd = ""


Bon Dev.
Membro registado
1 mensagem
Publicado em julho, 23 2020 - 6:33 PM
I have checked the link given and it is a parameter and I think that is not a api documentation.

Is there a more specific api documentation for sage 100 like sage intacct developer.intacct.com/.../
Publicado em agosto, 24 2020 - 2:30 PM
Bonjour,
Pourrions nous échanger en PV à propos de SAGE et l'objet métier ?

Cordialement,
Steeven
Publicado em outubro, 21 2020 - 2:21 PM
bonjour,
une question comment passez-vous les dates?
si je les passent ainsi
om_PieceComptable>>Date = DateVersChaîne(dateEcriture,"M/D/YYYY ")+HeureVersChaîne(TimeSys(),"HH:MM:SS")
cela fonctionne très bien pour les jours à partir du 13 maisinverse le jour et le mois pour les jours avant
exple
13/5/2020 passe en 13/05/20
5/9/2020 passe en 09/05/2020
merci de votre aide
Membro registado
27 mensagems
Publicado em outubro, 22 2020 - 8:28 AM
Bonjour,

Personnellement, je passe par une variable de type date, car des fois l'objet automation n'accepte pas directement l'affectation.
MaDate est une date = DateSys()

cUnIMPDoc:cDoc>>DO_Date = MaDate


Bon dev.
Membro registado
451 mensagems
Publicado em outubro, 22 2020 - 9:22 AM
Bonjour,
Vous avez pu insérer avec une écriture comptable dans un journal de trésorerie Sage Centralisé ? J'ai essayé et chaque fois, ça ne donne rien. Je suis en Sage SQL
Merci
Publicado em novembro, 27 2020 - 5:40 PM
Bonjour,

"Bonjour Steeven,

Attention, dans SAGE la base "maitre" est la comptabilité, il te faut mettre dans ton code:

Quand la comptabilité à le même user et mdp.
cBaseCPTAInt = cBaseCIALInt >>CptaApplication


Sinon, il faut rajouter comme @guillaumeh
BaseCompta>>name = "c:\testsql1.mae"
BaseCompta>>loggable>>username = "XXXX" // Utilisateur de connexion
BaseCompta>>loggable>>userpwd = "XXXXX" // Mot de passe de la connexion

BaseGestcom>>CptaApplication = BaseCompta


Bon dev."

Oui et non concernant la base maître.
Cela dépend des objets utilisés et de la structure de la base Sage

En fait pour des articles on n'a pas besoin de lier la compta, mais là l'exemple portait sur les tiers
et les tiers sont dans la base comtpa et non gescom.

Quand vous utilisez une base gestion commerciale, il y a toujours une base comptable derrière, même si la comptabilité
n'est pas utilisée.
D"ailleurs quand vous crééz une nouvelle base Gestion Commerciale, la première chose qu'on vous demande, c"est à quelle base comptable est-elle liée.

Cordialement
Publicado em novembro, 27 2020 - 5:45 PM
Bonjour,

Attention dans un journal de trésorerie centralisée, il ne faut passer que l'écriture de tiers, le journal va s'équilibrer tout seul.
Vous ne pouvez insérer une écriture avec comme compte général le compte affecté au journal de Tréso (ex 512000) que pour des journaux de trésorerie gérés avec contrepartie à la ligne.

Cordialement
Membro registado
2 mensagems
Publicado em dezembro, 31 2023 - 5:35 PM
bonjour à toutes et à tous

je dois créer des comptes analytiques sur le plan affaires d'une gestion commerciale sage 100c V9.02
j'utilise les objets métiers V9.02

je code d'abord en C# pour la syntaxe, cela fonctionne parfaitement

mais en windev 28, avec le code ci-dessous j'obtiens un enregistrement dans la base sql, mais la valeur de la clé CA_Num est totalement éronée --> Ø„¹UÿÿÿÿRE

//Connexion
om_BaseComptable>>CompanyServer = "(local)\SAGE100" // instance SQL
om_BaseComptable>>CompanyDatabaseName = "XXX"
om_BaseComptable>>Loggable>>UserName = "<Administrateur>"
om_BaseComptable>>Loggable>>UserPwd = "xxxxxxxx!"

om_BaseComptable>>Open()

SI PAS om_BaseComptable>>ISOpen ALORS
Erreur("Impossible de se connecter à la base de données Sage XXX" + RC + "Update Affaires impossible ...")

RETOUR
SINON
TraceOp..Visible = Vrai
TraceOp..Couleur = BleuClair
TraceOp = "Connexion OM établie ..."
FIN

// Création de l'objet métier
om_Affaire est un objet Automation dynamique
om_Affaire=om_BaseComptable>>FactoryCompteA>>Create

om_Affaire>>CA_Num = "20232611"
om_Affaire>>CA_Intitule = "OM 20232611"
om_Affaire>>Analytique=om_BaseComptable>>FactoryAnalytique>>ReadIntitule("AFFAIRES")

om_Affaire>>SetDefault
om_Affaire>>Write
om_BaseComptable>>Close()

si vous avez déjà codé ce type d'ajout, je suis volontiers preneur

>merci d'avance
Publicado em janeiro, 09 2024 - 4:24 PM
Bonjour,

C'est la première fois que j'utilise l automation et sage. Je cherche à remplir simplement un champs table avec le contenu d'une table que je suis censé prendre sur le serveur via sage.

Très sincèrement je nage dans l'inconnu total et malgré la doc je n'arrive pas à m'en sortir. La connexion est bien faite, je vous épargne le code.

Pour l'instant j'essaie quelque chose de ce style :

pautGamStock est un objet automation dynamique

pautGamStock = autGC>>FactoryArticleDepot>>Create
pautGamStock>>Read()


J'ai une erreur rien qu'a la création. Je pense que j'ai tout faux mais j ne sais plus quoi tenter. Si une bonne âme passe par ici, je la remercie d'avance.
Publicado em janeiro, 10 2024 - 11:30 AM
Salut,

je fais ceci :

pautGamStock = autGC>>FactoryArticleDepotGamme>>List

nNbrGamstock = pautGamStock>>Count()

Info(nNbrGamstock)


Une erreur "Nom inconnu" sur FactoryArticleDepotGamme.
J'ai beau tester avec des lignes de code donné en exemple ici qui sont censé fonctionner, j'ai toujours cette même erreur.

Pensez-vous qu'il me manque une installation ?
Si vous voyez quel est le problème pouvez vous m'aiguiller ?

Merci
Membro registado
27 mensagems
Publicado em janeiro, 10 2024 - 1:16 PM
Bonjour,
Voici un exemple de récupération de la liste des articles:
cArt est un objet automation dynamique
cIBICollection est un objet automation dynamique
iNbLgn est un entier

// Récupération de la liste des articles
cIBICollection = cCxionCial>>FactoryArticle>>List

// Récupération du nombre de ligne
iNbLgn = cIBICollection>>Count

// Lecture des données
POUR iNumLigne=1 _À_ :iNbLgn
// Récupération de l'article
cArt = cIBICollection>>Item[iNumLigne]

// Affichage de la Référence et de la Désignation
Trace(cArt>>AR_Ref+" / "+cArt>>AR_Design)

FIN


Bon dev.
Publicado em janeiro, 10 2024 - 2:43 PM
Bonjour,

Merci pour votre réponse.
Effectivement avec FactoryArticle ça me remonte bien la table F_Article. Il reconnait ce membre là.

Dans mon cas je souhaite avoir la table F_Gamstock, et donc utilise FactoryArticleDepotGamme. Seulement là j'ai une erreur:

Vous accéder au membre Automation FactoryArticleDepot
Erreur80020006, Nom Inconnu

Pourtant la doc sage 100c objet métier me renvoie cette info. Sauriez-vous pourquoi ?
Membro registado
27 mensagems
Publicado em janeiro, 11 2024 - 1:52 PM
Bonjour,

Si je comprends bien, tu veux le stock des articles gamme par dépôt ?
cArt est un objet automation dynamique
cArtDep est un objet automation dynamique
cArtDepGam est un objet automation dynamique

cIBICollArt est un objet automation dynamique
cIBICollArtDep est un objet automation dynamique
cIBICollArtDepGam est un objet automation dynamique

// Lecture des articles
cIBICollArt = cMonOM:cBaseCIAL>>FactoryArticle>>List
POUR iNumArt=1 _À_ cIBICollArt>>Count
cArt = cIBICollArt>>Item[iNumArt]

// Lecture des dépôts de l'article
cIBICollArtDep = cArt>>FactoryArticleDepot>>List
POUR iNumArtDep=1 _À_ cIBICollArtDep>>Count
cArtDep = cIBICollArtDep>>Item[iNumArtDep]

// Lecture des gammes de l'article sur le dépôt
cIBICollArtDepGam = cArtDep>>FactoryArticleDepotGamme>>List
POUR iNumArtDepGam=1 _À_ cIBICollArtDepGam>>Count
cArtDepGam = cIBICollArtDepGam>>Item[iNumArtDepGam]
Trace(cArtDepGam>>Article>>AR_Ref+" - "+cArtDepGam>>StockDispo())
FIN
FIN
FIN


Bon dev.
Membro registado
1 mensagem
Publicado em janeiro, 11 2024 - 3:15 PM
Bonjour

Merci c'est exactement ce que j'avais fini par faire(boucler sur mes collections), mais j bloquais sur la récup des infos, et je vois ici que je dois passer par "Article" après "cArtDepGam" pour accéder au "AR_Ref". Je dois trouver comment accéder à chaque membre de ma table mais j vais finir par y arriver.

Un grand merci.
Publicado em junho, 06 2024 - 9:58 AM
Bonjour Patrick,

J'ai le même problème en création de code affaire, ca_num à une valeur erronée.

J'ai décidé de forcer comme cela en attendant de trouver mieux :

alter table f_comptea disable trigger all
update f_comptea set ca_num='[%sNewcode%]' where ca_num =(select top 1 ca_num from f_comptea order by cbcreation desc)
alter table f_comptea enable trigger all
Membro registado
27 mensagems
Publicado em junho, 06 2024 - 2:05 PM
Bonjour Laurent,

Dans SAGE le code affaire est considéré comme une section analytique rattaché au plan analytique de type affaire.
Voici un exemple:
cDossierGesc est un objet automation dynamique // IBPDossier2
cPlan est un objet automation dynamique // IBPAnalytique
cSection est un objet automation dynamique // IBOCompteA3

// Chargement du plan analytique affaire
cIBICollection = cCxionCial>>FactoryDossierParam>>List
cDossierGesc = cIBICollection>>Item[1]
cPlan = cDossier:cDossierGesc>>AnalytiqueAffaire

// Création de la section
cSection = cCxionCpta>>FactoryCompteA>>Create()
cSection>>Analytique = cPlan
cSection>>CA_Num = "CodeAffaireUnique"
cSection>>SetDefault()

// Alimentation des autres valeurs
......

// Enregistrement
cSection>>WriteDefault()


Bon développement.