# API COM Sage 100c - Documentation des Objets Métiers
> Documentation générée à partir de l'analyse de l'API COM Sage 100c v0.1.3
> Date de l'analyse : 26 août 2025
## Table des matières
- [Introduction](#introduction)
- [BSCPTAApplication100c - Comptabilité](#bscptaapplication100c---comptabilité)
- [BSCIALApplication100c - Gestion Commerciale](#bscialapplication100c---gestion-commerciale)
- [Objets communs](#objets-communs)
- [Patterns et conventions](#patterns-et-conventions)
- [Guide d'utilisation](#guide-dutilisation)
---
## Introduction
Cette documentation décrit l'ensemble des objets métiers accessibles via l'API COM de Sage 100c version 1200.
### Applications principales
L'API expose deux applications :
- **BSCPTAApplication100c** : Application de comptabilité
- 40 propriétés
- 7 méthodes
- 38 factories (sous-objets)
- **BSCIALApplication100c** : Application de gestion commerciale
- 40 propriétés
- 6 méthodes
- 36 factories (sous-objets)
Chaque application expose des **factories** permettant de créer, lire, modifier et supprimer des objets métiers (comptes, écritures, articles, documents, etc.).
---
## BSCPTAApplication100c - Comptabilité
### Propriétés de l'application
| `IsOpen` | Boolean | get | Indique si l'application est ouverte |
| `Name` | String | get | Nom de l'application |
| `Loggable` | Variant | get | Objet de gestion de la connexion utilisateur |
| `Licence` | Variant | get | Informations sur la licence |
### Méthodes de l'application
| `Open` | `param0: VARIANT` | void | Ouvre une base de données comptable |
| `Close` | - | void | Ferme la base de données courante |
| `Create` | - | void | Crée une nouvelle base de données |
| `DatabaseInfo` | - | String | Retourne les informations de la base de données |
| `Synchro` | - | Variant | Gestion de la synchronisation |
| `ReadFrom` | - | Variant | Lecture depuis une source spécifique |
| `CreateProcess_Lettrer` | - | Variant | Crée un processus de lettrage |
### Vue d'ensemble des Factories Comptabilité
| `FactoryJournal` | Journaux comptables | 0 | 10 |
| `FactoryCompteG` | Comptes généraux | 1 | 18 |
| `FactoryCompteA` | Comptes analytiques | 1 | 12 |
| `FactoryCompteR` | Comptes de reporting | 0 | 12 |
| `FactoryEcriture` | Écritures comptables | 1 | 15 |
| `FactoryEcritureA` | Écritures analytiques | 0 | 11 |
| `FactoryEcritureOD` | Écritures d'opérations diverses | 0 | 10 |
| `FactoryJournalA` | Journaux analytiques | 0 | 10 |
| `FactoryTiers` | Tiers (clients/fournisseurs/autres) | 1 | 19 |
| `FactoryClient` | Clients | 0 | 11 |
| `FactoryFournisseur` | Fournisseurs | 0 | 11 |
| `FactoryTiersSalarie` | Tiers salariés | 0 | 10 |
| `FactoryTiersAutre` | Autres tiers | 0 | 10 |
| `FactoryClientLivraison` | Adresses de livraison clients | 0 | 10 |
| `FactoryTiersContact` | Contacts de tiers | 0 | 8 |
| `FactoryTiersType` | Types de tiers | 0 | 9 |
| `FactoryTiersStat` | Statistiques tiers | 1 | 9 |
| `FactoryDevise` | Devises | 2 | 10 |
| `FactoryTaxe` | Taxes (TVA) | 1 | 9 |
| `FactoryReglement` | Modes de règlement | 1 | 9 |
| `FactoryModeleReglement` | Modèles de règlement | 1 | 9 |
| `FactoryBanque` | Banques | 1 | 9 |
| `FactoryStructBanque` | Structures bancaires | 0 | 9 |
| `FactoryAnalyse` | Plans d'analyse | 1 | 9 |
| `FactoryAnalytique` | Sections analytiques | 1 | 9 |
| `FactoryNatureCompte` | Natures de compte | 0 | 10 |
| `FactoryCodeRisque` | Codes de risque | 1 | 9 |
| `FactoryCollaborateur` | Collaborateurs | 1 | 9 |
| `FactoryPays` | Pays | 1 | 9 |
| `FactoryDossier` | Dossiers | 0 | 8 |
| `FactoryDossierContact` | Contacts de dossier | 1 | 9 |
| `FactoryServiceContact` | Services de contact | 1 | 9 |
| `FactoryTypeContacts` | Types de contacts | 1 | 9 |
| `FactoryModeleEcriture` | Modèles d'écriture | 1 | 9 |
| `FactoryModeleGrille` | Modèles de grille | 1 | 9 |
| `FactoryRappel` | Rappels | 1 | 9 |
### Détail des Factories principales
#### FactoryJournal
**Description :** Gestion des journaux comptables (VTE, ACH, BQE, OD, etc.)
**Propriétés :** Aucune
**Méthodes :**
| 1 | `List()` | Variant | Liste tous les journaux |
| 2 | `Create()` | void | Crée un nouveau journal |
| 3 | `Read()` | Variant | Lit un journal |
| 4 | `_QuerySynchro()` | Variant | Requête de synchronisation |
| 5 | `_QuerySynchroRemoved()` | Variant | Objets supprimés en synchronisation |
| 6 | `ReadFrom()` | Variant | Lecture depuis une source |
| 7 | `ListForward()` | Variant | Liste en mode curseur avant |
| 8 | `QueryPredicate()` | Variant | Requête avec prédicat personnalisé |
| 10 | `ExistNumero()` | Variant | Vérifie l'existence d'un numéro de journal |
| 11 | `ReadNumero()` | Variant | Lit un journal par son numéro |
---
#### FactoryCompteG (Comptes Généraux)
**Description :** Gestion des comptes généraux du plan comptable
**Propriétés :**
| 15 | `InfoLibreFields` | Variant | get | Collection de champs d'informations libres |
**Méthodes :**
| 1 | `List()` | Variant | Liste tous les comptes généraux |
| 2 | `Create()` | void | Crée un nouveau compte général |
| 3 | `Read()` | Variant | Lit un compte |
| 4 | `_QuerySynchro()` | Variant | Synchronisation |
| 5 | `_QuerySynchroRemoved()` | Variant | Suppressions synchronisées |
| 6 | `ReadFrom()` | Variant | Lecture source |
| 7 | `ListForward()` | Variant | Liste curseur |
| 8 | `QueryPredicate()` | Variant | Requête prédicat |
| 10 | `ListOrderClassement()` | Variant | Liste triée par classement |
| 11 | `ListOrderType()` | Variant | Liste triée par type |
| 12 | `ExistNumero()` | Variant | Vérifie existence d'un numéro |
| 13 | `ReadNumero()` | Variant | Lit un compte par son numéro |
| 14 | `QueryTypeNumeroOrderNumero()` | Variant | Requête par type et numéro |
| 16 | `QueryActifOrderNumero()` | Variant | Comptes actifs triés par numéro |
| 17 | `QueryActifOrderType()` | Variant | Comptes actifs triés par type |
| 18 | `QueryActifOrderClassement()` | Variant | Comptes actifs triés par classement |
| 19 | `QueryCompteR()` | Variant | Requête sur comptes de reporting |
| 20 | `CreateInfoLibre()` | Variant | Crée une information libre |
---
#### FactoryCompteA (Comptes Analytiques)
**Description :** Gestion des comptes analytiques
**Propriétés :**
| 12 | `InfoLibreFields` | Variant | get | Champs d'informations libres |
**Méthodes :**
| 1 | `List()` | Variant | Liste tous les comptes analytiques |
| 2 | `Create()` | void | Crée un nouveau compte analytique |
| 3 | `Read()` | Variant | Lit un compte |
| 4-8 | *Méthodes standard* | Variant | QuerySynchro, ReadFrom, ListForward, etc. |
| 10 | `ExistNumero()` | Variant | Vérifie existence |
| 11 | `ReadNumero()` | Variant | Lit par numéro |
| 13 | `QueryPlanA()` | Variant | Requête par plan analytique |
| 14 | `CreateInfoLibre()` | Variant | Crée une information libre |
---
#### FactoryEcriture (Écritures Comptables)
**Description :** Gestion des écritures comptables
**Propriétés :**
| 12 | `InfoLibreFields` | Variant | get | Champs d'informations libres |
**Méthodes :**
| 1 | `List()` | Variant | Liste toutes les écritures |
| 2 | `Create()` | void | Crée une nouvelle écriture |
| 3 | `Read()` | Variant | Lit une écriture |
| 4-8 | *Méthodes standard* | Variant | Synchro, ReadFrom, etc. |
| 10 | `QueryJournalPeriode()` | Variant | Requête par journal et période |
| 11 | `QueryTiers()` | Variant | Requête par tiers |
| 13 | `ExistNumero()` | Variant | Vérifie existence numéro |
| 14 | `ReadNumero()` | Variant | Lit par numéro |
| 15 | `QueryCompteG()` | Variant | Requête par compte général |
| 16 | `_QuerySynchroOID()` | Variant | Synchronisation par OID |
| 17 | `CreateInfoLibre()` | Variant | Crée info libre |
---
#### FactoryTiers
**Description :** Gestion des tiers (clients, fournisseurs, autres)
**Propriétés :**
| 20 | `InfoLibreFields` | Variant | get | Champs d'informations libres |
**Méthodes :**
| 1 | `List()` | Variant | Liste tous les tiers |
| 2 | `Create()` | void | Crée un nouveau tiers |
| 3 | `Read()` | Variant | Lit un tiers |
| 4-8 | *Méthodes standard* | Variant | Synchro, ReadFrom, etc. |
| 10 | `ListOrderNumero()` | Variant | Liste triée par numéro |
| 11 | `ListOrderClassement()` | Variant | Liste triée par classement |
| 12 | `ListOrderType()` | Variant | Liste triée par type |
| 13 | `ExistNumero()` | Variant | Vérifie existence |
| 14 | `ReadNumero()` | Variant | Lit par numéro |
| 15 | `QueryActifOrderNumero()` | Variant | Tiers actifs par numéro |
| 17 | `QueryTypeNumeroOrderNumero()` | Variant | Par type et numéro |
| 18 | `QueryReplicate()` | Variant | Pour réplication |
| 19 | `QueryMouvementeOrderNumero()` | Variant | Tiers mouvementés |
| 21 | `QueryCollaborateur()` | Variant | Par collaborateur |
| 22 | `CreateInfoLibre()` | Variant | Info libre |
---
## BSCIALApplication100c - Gestion Commerciale
### Propriétés de l'application
| `IsOpen` | Boolean | get | Indique si l'application est ouverte |
| `Name` | String | get | Nom de l'application |
| `CptaApplication` | Variant | get | Application comptable liée |
| `DepotPrincipal` | Variant | get | Dépôt principal |
| `Loggable` | Variant | get | Objet de gestion de la connexion |
| `Licence` | Variant | get | Informations sur la licence |
### Méthodes de l'application
| `Open` | `param0: VARIANT` | void | Ouvre une base de données commerciale |
| `Close` | - | void | Ferme la base de données courante |
| `Create` | - | void | Crée une nouvelle base de données |
| `DatabaseInfo` | - | String | Retourne les informations de la base |
| `Synchro` | - | Variant | Gestion de la synchronisation |
| `ReadFrom` | - | Variant | Lecture depuis une source |
### Vue d'ensemble des Factories Gestion Commerciale
| `FactoryArticle` | Articles et références produits | 3 | 24 |
| `FactoryDocumentVente` | Documents de vente | 1 | 21 |
| `FactoryDocumentAchat` | Documents d'achat | 1 | 21 |
| `FactoryDocumentStock` | Mouvements de stock | 1 | 16 |
| `FactoryDocumentInterne` | Documents internes | 1 | 18 |
| `FactoryDocument` | Documents génériques | 1 | 9 |
| `FactoryDepot` | Dépôts de stock | 2 | 10 |
| `FactoryFamille` | Familles d'articles | 1 | 10 |
| `FactoryGamme` | Gammes | 1 | 9 |
| `FactoryProduit` | Produits | 1 | 9 |
| `FactoryUnite` | Unités de mesure | 1 | 9 |
| `FactoryConditionnement` | Conditionnements | 1 | 9 |
| `FactoryBaremeCommission` | Barèmes de commission | 1 | 11 |
| `FactoryBaremeSolde` | Barèmes de solde | 1 | 11 |
| `FactoryBaremeRabais` | Barèmes de rabais | 1 | 11 |
| `FactoryParamDocVente` | Paramètres documents de vente | 1 | 10 |
| `FactoryParamDocAchat` | Paramètres documents d'achat | 1 | 10 |
| `FactoryParamDocStock` | Paramètres documents de stock | 1 | 10 |
| `FactoryParamDocInterne` | Paramètres documents internes | 1 | 10 |
| `FactorySoucheVente` | Souches de numérotation vente | 1 | 10 |
| `FactorySoucheAchat` | Souches de numérotation achat | 1 | 10 |
| `FactorySoucheStock` | Souches de numérotation stock | 1 | 10 |
| `FactorySoucheInterne` | Souches de numérotation internes | 1 | 10 |
| `FactoryCategorieComptaVente` | Catégories comptables vente | 1 | 9 |
| `FactoryCategorieComptaAchat` | Catégories comptables achat | 1 | 9 |
| `FactoryCategorieComptaStock` | Catégories comptables stock | 1 | 9 |
| `FactoryCategorieTarif` | Catégories tarifaires | 1 | 9 |
| `FactoryModele` | Modèles | 1 | 9 |
| `FactoryConditionLivraison` | Conditions de livraison | 1 | 9 |
| `FactoryArrondi` | Règles d'arrondi | 0 | 8 |
| `FactoryExpedition` | Modes d'expédition | 1 | 9 |
| `FactoryPeriodicite` | Périodicités | 1 | 9 |
| `FactoryArticleStat` | Statistiques articles | 1 | 9 |
| `FactoryGlossaire` | Glossaire | 1 | 9 |
### Détail des Factories principales
#### FactoryArticle
**Description :** Gestion des articles, références et produits
**Propriétés :**
| 12 | `ExistReference` | Variant | get | Vérifie l'existence d'une référence |
| 14 | `ExistCodeBarre` | Variant | get | Vérifie l'existence d'un code-barres |
| 22 | `InfoLibreFields` | Variant | get | Champs d'informations libres |
**Méthodes :**
| 1 | `List()` | Variant | Liste tous les articles |
| 2 | `Create()` | void | Crée un nouvel article |
| 3 | `Read()` | Variant | Lit un article |
| 4-8 | *Méthodes standard* | Variant | Synchro, ReadFrom, etc. |
| 10 | `ListOrderReference()` | Variant | Liste triée par référence |
| 11 | `ListOrderFamille()` | Variant | Liste triée par famille |
| 13 | `ReadReference()` | Variant | Lit un article par référence |
| 15 | `ReadCodeBarre()` | Variant | Lit un article par code-barres |
| 16 | `QueryActifOrderReference()` | Variant | Articles actifs triés |
| 17 | `QueryPublieOrderReference()` | Variant | Articles publiés triés |
| 18 | `QueryReferenceOrderReference()` | Variant | Par référence triés |
| 19 | `QueryFamille()` | Variant | Par famille |
| 20 | `QueryMouvementeOrderReference()` | Variant | Articles mouvementés |
| 21 | `QueryReplicate()` | Variant | Pour réplication |
| 23 | `QueryCatalogue()` | Variant | Par catalogue |
| 24 | `QueryBaremeSoldeApplicable()` | Variant | Barèmes solde applicables |
| 25 | `QueryDepotEmplacement()` | Variant | Par dépôt et emplacement |
| 26 | `_QuerySynchroOID()` | Variant | Synchro par OID |
| 27 | `ListOrderDesignation()` | Variant | Liste triée par désignation |
| 28 | `CreateInfoLibre()` | Variant | Crée info libre |
---
#### FactoryDocumentVente
**Description :** Gestion des documents de vente (devis, commandes, BL, factures, avoirs)
**Propriétés :**
| 23 | `ExistPiece` | Variant | get | Vérifie l'existence d'un n° de pièce |
**Méthodes :**
| 1 | `List()` | Variant | Liste tous les documents de vente |
| 2 | `Create()` | void | Crée un nouveau document |
| 3 | `Read()` | Variant | Lit un document |
| 4-8 | *Méthodes standard* | Variant | Synchro, ReadFrom, etc. |
| 20 | `CreateType()` | Variant | Crée un document d'un type spécifique |
| 21 | `QueryTypeOrderPiece()` | Variant | Requête par type, triée par pièce |
| 22 | `QueryTypePieceOrderPiece()` | Variant | Par type et pièce |
| 24 | `ReadPiece()` | Variant | Lit un document par n° de pièce |
| 25 | `CreateFacture()` | Variant | Crée une facture de vente |
| 26 | `QueryTiersOrderDate()` | Variant | Par tiers, triée par date |
| 27 | `QueryTiersTypeOrderDate()` | Variant | Par tiers et type |
| 28 | `QueryCollaborateurType()` | Variant | Par collaborateur et type |
| 29 | `QueryTiersDateOrderDate()` | Variant | Par tiers et date |
| 30 | `QueryTiersTypeDateOrderDate()` | Variant | Requête complète triée |
| 31 | `_QuerySynchroType()` | Variant | Synchro par type |
| 32 | `_QuerySynchroOIDType()` | Variant | Synchro par OID et type |
| 33 | `QueryTypeDateOrderPiece()` | Variant | Par type et date |
---
#### FactoryDocumentAchat
**Description :** Gestion des documents d'achat (commandes, BL, factures, avoirs fournisseurs)
**Structure identique à FactoryDocumentVente**
**Propriétés :** 1 (`ExistPiece`)
**Méthodes :** 21 (mêmes méthodes que DocumentVente)
---
#### FactoryDocumentStock
**Description :** Gestion des mouvements de stock (entrées, sorties, transferts, inventaires)
**Propriétés :**
| 23 | `ExistPiece` | Variant | get | Vérifie l'existence d'un n° de pièce |
**Méthodes :**
| 1-8 | *Méthodes standard* | Variant | List, Create, Read, etc. |
| 20 | `CreateType()` | Variant | Crée document typé |
| 21 | `QueryTypeOrderPiece()` | Variant | Par type |
| 22 | `QueryTypePieceOrderPiece()` | Variant | Par type et pièce |
| 24 | `ReadPiece()` | Variant | Lit par pièce |
| 25 | `QueryDepotOrderType()` | Variant | Par dépôt et type |
| 26 | `_QuerySynchroType()` | Variant | Synchro type |
| 27 | `_QuerySynchroOIDType()` | Variant | Synchro OID/type |
| 28 | `QueryTypeDateOrderPiece()` | Variant | Par type/date |
---
#### FactoryDepot
**Description :** Gestion des dépôts de stock
**Propriétés :**
| 10 | `ExistIntitule` | Variant | get | Vérifie existence intitulé |
| 12 | `ExistCompteur` | Variant | get | Vérifie existence compteur |
**Méthodes :**
| 1-8 | *Méthodes standard* | Variant | List, Create, Read, etc. |
| 11 | `ReadIntitule()` | Variant | Lit par intitulé |
| 13 | `ReadCompteur()` | Variant | Lit par compteur |
---
## Objets communs
### Loggable
**Description :** Objet de gestion de la connexion et de l'authentification utilisateur
**Propriétés :**
| 1 | `UserName` | Variant | get | Nom d'utilisateur connecté |
| 2 | `UserPwd` | Variant | get | Mot de passe (lecture seule) |
| 3 | `IsAdministrator` | Boolean | get | Indique si l'utilisateur est administrateur |
| 4 | `IsLogged` | Boolean | get | Indique si l'utilisateur est connecté |
| 5 | `ManagementPassword` | Variant | get | Mot de passe de gestion |
| 6 | `ServiceId` | Variant | get | Identifiant du service |
| 7 | `ServiceName` | Variant | get | Nom du service |
| 8 | `ApplicationToken` | Variant | get | Token d'authentification de l'application |
**Méthodes :** Aucune
---
### Licence
**Description :** Informations sur la licence du produit Sage
**Propriétés :**
| 1 | `IsValid` | Boolean | get | Indique si la licence est valide |
| 2 | `Key` | Variant | get | Clé de licence |
| 3 | `Product` | Variant | get | Produit (objet) |
| 4 | `Products` | Variant | get | Collection de produits (objet) |
| 5 | `Creator` | Variant | get | Créateur de la licence |
| 6 | `CreatorExtension` | Variant | get | Extension du créateur |
| 7 | `WorkStationKey` | Variant | get | Clé du poste de travail |
| 8 | `LicenceCount` | Integer | get | Nombre de licences |
| 9 | `Version` | Variant | get | Version du produit |
**Sous-objets :**
#### Licence.Products
**Propriétés :**
| 1 | `Count` | Integer | get | Nombre de produits dans la collection |
#### Licence.Product
**Propriétés :**
| 1 | `SerialNumber` | Variant | get | Numéro de série du produit |
| 2 | `Name` | String | get | Nom du produit |
| 3 | `UserInfo` | Variant | get | Informations utilisateur (objet) |
#### Licence.Product.UserInfo
**Propriétés :** 11 propriétés d'informations utilisateur (détails non spécifiés dans le log)
---
## Patterns et conventions
### Méthodes standard des Factories
Toutes les factories implémentent un ensemble de méthodes de base :
| `List()` | Variant | Retourne une collection de tous les objets |
| `Create()` | void | Crée un nouvel objet vide |
| `Read()` | Variant | Lit un objet (nécessite généralement un ID) |
| `QueryPredicate()` | Variant | Requête avec prédicat SQL-like personnalisé |
| `ReadFrom()` | Variant | Lecture depuis une source spécifique |
| `ListForward()` | Variant | Liste en mode curseur avant uniquement (optimisé) |
| `_QuerySynchro()` | Variant | Requête de synchronisation (usage interne) |
| `_QuerySynchroRemoved()` | Variant | Requête des objets supprimés (synchronisation) |
### Méthodes de lecture spécialisées
Pattern de nommage : `Read{CritèreRecherche}()`
| `ReadNumero()` | Comptes, Journaux, Tiers | Lit un objet par son numéro |
| `ReadReference()` | Articles | Lit un article par sa référence |
| `ReadCode()` | Taxes, Familles | Lit par code |
| `ReadIntitule()` | Devises, Paramètres, etc. | Lit par intitulé |
| `ReadCodeBarre()` | Articles | Lit par code-barres |
| `ReadPiece()` | Documents | Lit par numéro de pièce |
| `ReadCodeISO()` | Devises | Lit par code ISO |
| `ReadCompteur()` | Dépôts | Lit par compteur |
| `ReadNomPrenom()` | Collaborateurs | Lit par nom et prénom |
### Propriétés Exist*
Propriétés permettant de vérifier l'existence d'un objet avant tentative de lecture :
| `ExistNumero` | Variant | Vérifie l'existence d'un numéro |
| `ExistReference` | Variant | Vérifie l'existence d'une référence |
| `ExistCode` | Variant | Vérifie l'existence d'un code |
| `ExistIntitule` | Variant | Vérifie l'existence d'un intitulé |
| `ExistCodeBarre` | Variant | Vérifie l'existence d'un code-barres |
| `ExistPiece` | Variant | Vérifie l'existence d'une pièce |
| `ExistCodeISO` | Variant | Vérifie l'existence d'un code ISO |
| `ExistCompteur` | Variant | Vérifie l'existence d'un compteur |
| `ExistNomPrenom` | Variant | Vérifie l'existence d'un nom/prénom |
| `ExistAbrege` | Variant | Vérifie l'existence d'un abrégé |
### Méthodes Query*
Requêtes filtrées et triées - Pattern : `Query{Filtre}[Order{Tri}]()`
**Filtres courants :**
| `QueryType*` | Filtrage par type d'objet | `QueryTypeOrderPiece()` |
| `QueryActif*` | Objets actifs uniquement | `QueryActifOrderNumero()` |
| `QueryTiers*` | Filtrage par tiers | `QueryTiersOrderDate()` |
| `Query*Date*` | Filtrage ou tri par date | `QueryTypeDateOrderPiece()` |
| `QueryPlan*` | Par plan (analytique) | `QueryPlanA()` |
| `QuerySection*` | Par section (analytique) | `QuerySectionA()` |
| `QueryMouvemente*` | Objets mouvementés | `QueryMouvementeOrderNumero()` |
| `QueryPublie*` | Objets publiés | `QueryPublieOrderReference()` |
| `QueryReplicate()` | Pour réplication | Toutes les factories |
| `QueryCatalogue()` | Par catalogue | Articles, Familles |
| `QueryCollaborateur*` | Par collaborateur | Tiers, Documents |
| `QueryJournal*` | Par journal | Écritures |
| `QueryCompte*` | Par compte | Écritures |
| `QueryDepot*` | Par dépôt | Articles, Documents stock |
| `QueryFamille()` | Par famille | Articles |
| `QuerySoucheValide()` | Souches valides | Souches de numérotation |
| `QueryApplicableDate()` | Barèmes applicables | Barèmes (commission, solde, rabais) |
**Tris courants :**
| `OrderNumero` | Tri par numéro |
| `OrderReference` | Tri par référence |
| `OrderClassement` | Tri par classement |
| `OrderType` | Tri par type |
| `OrderDate` | Tri par date |
| `OrderPiece` | Tri par numéro de pièce |
| `OrderFamille` | Tri par famille |
| `OrderDesignation` | Tri par désignation |
### Méthodes List*
Listes triées sans filtre - Pattern : `List[Order{Tri}]()`
| `List()` | Liste complète sans tri |
| `ListOrderNumero()` | Liste triée par numéro |
| `ListOrderReference()` | Liste triée par référence |
| `ListOrderClassement()` | Liste triée par classement |
| `ListOrderType()` | Liste triée par type |
| `ListOrderFamille()` | Liste triée par famille |
| `ListOrderDesignation()` | Liste triée par désignation |
| `ListForward()` | Liste en mode curseur avant (optimisé) |
### Informations libres
Support des champs personnalisés pour certains objets métiers :
**Propriété :** `InfoLibreFields` (Variant, get) - Collection de champs libres
**Méthode :** `CreateInfoLibre()` → Variant - Crée un nouveau champ libre
**Objets supportant les infos libres :**
- Comptes généraux (`FactoryCompteG`)
- Comptes analytiques (`FactoryCompteA`)
- Tiers (`FactoryTiers`)
- Écritures (`FactoryEcriture`)
- Articles (`FactoryArticle`)
- Documents génériques (`FactoryDocument`)
### Structure des objets métiers retournés
Les objets métiers retournés par les méthodes `Read*()` exposent généralement :
**Propriétés communes :**
| `OID` | Variant | Identifiant d'objet interne unique |
| `OIDExternal` | Variant | Identifiant externe (pour intégrations) |
| `DateCreation` | Variant | Date et heure de création de l'objet |
| `DateModification` | Variant | Date et heure de dernière modification |
| `Factory` | Object | Référence vers la factory parente |
| `Stream` | Variant | Flux de données de l'objet |
**Méthodes communes :**
| `Write()` | Sauvegarde les modifications de l'objet |
| `Remove()` | Supprime l'objet de la base |
| `WriteDefault()` | Sauvegarde avec valeurs par défaut |
| `SetDefault()` | Définit les valeurs par défaut |
### Gestion des documents
**Types de documents disponibles :**
Les factories de documents (Vente, Achat, Stock, Interne) gèrent différents types :
- **Documents de vente :** Devis, Commande, Bon de livraison, Facture, Avoir, etc.
- **Documents d'achat :** Commande fournisseur, Bon de réception, Facture fournisseur, Avoir, etc.
- **Documents de stock :** Entrée, Sortie, Transfert, Inventaire, etc.
- **Documents internes :** Divers mouvements internes
**Méthodes spécifiques aux documents :**
| `CreateType()` | Crée un document d'un type spécifique |
| `CreateFacture()` | Raccourci pour créer une facture (Vente/Achat uniquement) |
| `QueryType*()` | Requêtes filtrées par type de document |
| `_QuerySynchroType()` | Synchronisation filtrée par type |
---
## Guide d'utilisation
### Workflow typique
#### 1. Ouverture de la base
```vbscript
' VBScript / VBA
Set app = CreateObject("BSCPTAApplication100c.Application")
app.Open "C:\Sage\Bases\BIJOU.mae"
If app.IsOpen Then
' Base ouverte avec succès
End If
```
#### 2. Création d'un objet
```vbscript
Set factory = app.FactoryCompteG
Set compte = factory.Create()
' Définir les propriétés
compte.Numero = "401000"
compte.Intitule = "Fournisseurs"
compte.Type = 1 ' Type Fournisseur
' Sauvegarder
compte.Write()
```
#### 3. Lecture d'un objet
```vbscript
Set factory = app.FactoryCompteG
' Vérifier l'existence
If factory.ExistNumero("401000") Then
Set compte = factory.ReadNumero("401000")
MsgBox compte.Intitule
End If
```
#### 4. Modification d'un objet
```vbscript
Set compte = factory.ReadNumero("401000")
compte.Intitule = "Fournisseurs France"
compte.Write()
```
#### 5. Suppression d'un objet
```vbscript
Set compte = factory.ReadNumero("401000")
compte.Remove()
```
#### 6. Requêtes et listes
```vbscript
' Liste complète
Set liste = factory.List()
' Liste triée
Set liste = factory.ListOrderNumero()
' Requête filtrée
Set liste = factory.QueryActifOrderNumero()
' Parcourir la collection
For Each item In liste
MsgBox item.Numero & " - " & item.Intitule
Next
```
#### 7. Fermeture de la base
```vbscript
app.Close()
Set app = Nothing
```
### Précautions importantes
#### 1. Gestion des types Variant
Tous les retours de type `Variant` nécessitent une conversion appropriée dans le langage cible :
```vbscript
' VBScript
valeur = CStr(objet.Propriete) ' Conversion en String
nombre = CDbl(objet.Propriete) ' Conversion en Double
```
#### 2. Gestion des erreurs
Toujours capturer les exceptions COM :
```vbscript
On Error Resume Next
Set compte = factory.ReadNumero("999999")
If Err.Number <> 0 Then
MsgBox "Erreur : " & Err.Description
Err.Clear
End If
On Error GoTo 0
```
#### 3. Vérification de l'état
Toujours vérifier l'état de l'application avant opération :
```vbscript
If Not app.IsOpen Then
MsgBox "Base de données non ouverte"
Exit Sub
End If
```
#### 4. Libération des ressources
Libérer correctement les objets COM après usage :
```vbscript
Set compte = Nothing
Set factory = Nothing
app.Close()
Set app = Nothing
```
#### 5. Méthodes préfixées `_`
Les méthodes commençant par `_` sont réservées à un usage interne ou pour la synchronisation. Utilisez-les avec précaution.
#### 6. Transactions
Certaines opérations peuvent nécessiter une gestion transactionnelle. Consultez la documentation Sage pour les détails.
### Conventions de nommage
| Factory | `Factory{NomObjet}` | `FactoryCompteG` |
| Propriété Exist | `Exist{Critère}` | `ExistNumero` |
| Méthode Read | `Read{Critère}()` | `ReadNumero()` |
| Méthode Query | `Query{Filtre}[Order{Tri}]()` | `QueryActifOrderNumero()` |
| Méthode List | `List[Order{Tri}]()` | `ListOrderType()` |
### Exemples avancés
#### Création d'une écriture comptable
```vbscript
Set app = CreateObject("BSCPTAApplication100c.Application")
app.Open "C:\Sage\Bases\BIJOU.mae"
Set factoryEcriture = app.FactoryEcriture
Set ecriture = factoryEcriture.Create()
' Définir les propriétés
ecriture.JournalNumero = "VTE"
ecriture.PieceNumero = "FA001"
ecriture.CompteGNumero = "411000"
ecriture.LibelleEcriture = "Facture client"
ecriture.Montant = 1200.00
ecriture.Sens = 0 ' Débit
' Sauvegarder
ecriture.Write()
app.Close()
```
#### Recherche d'articles par famille
```vbscript
Set app = CreateObject("BSCIALApplication100c.Application")
app.Open "C:\Sage\Bases\BIJOU.mae"
Set factoryArticle = app.FactoryArticle
' Recherche par famille "BIJOUX"
Set listeArticles = factoryArticle.QueryFamille("BIJOUX")
For Each article In listeArticles
MsgBox article.Reference & " - " & article.Designation
Next
app.Close()
```
---
## Références
### Informations d'analyse
- **Fichier source :** `sage_analyzer_log.txt`
- **Date d'analyse :** 26 août 2025, 11:51:51 UTC
- **Version API :** Sage 100c v0.1.3 (version 1200)
- **Outil d'analyse :** Analyseur récursif COM Sage 100c
### Couverture de l'analyse
**Application Comptabilité (BSCPTAApplication100c) :**
- 40 propriétés
- 7 méthodes
- 38 factories (sous-objets)
- 3 niveaux de profondeur d'analyse
**Application Gestion Commerciale (BSCIALApplication100c) :**
- 40 propriétés
- 6 méthodes
- 36 factories (sous-objets)
- 3 niveaux de profondeur d'analyse
**Objets retournés analysés :**
- 4 objets découverts en comptabilité via les retours de méthodes
- 12 propriétés et 6 méthodes par objet retourné
**Total :**
- 74 factories documentées
- Plus de 800 méthodes répertoriées
- Structure hiérarchique complète
### Limitations connues
1. Les TypeLibraries n'ont pas pu être analysées directement
2. Certaines propriétés `Variant` nécessitent une exploration runtime
3. Les signatures de méthodes avec paramètres ne sont pas toujours complètes
4. La documentation des objets retournés est partielle
### Ressources complémentaires
- Documentation officielle Sage 100c Objets Métiers v1200
- Guide utilisateur Sage 100c
- Exemples de code dans le répertoire `examples/`
- Fichier `VARIANT_RESEARCH.md` pour la gestion des types Variant
---
*Documentation générée le 30 septembre 2025 à partir de l'analyse COM du 26 août 2025*