Hassan Agmir Hassan Agmir

Articles utilisant Sage 100cloud Objets Métiers.

Hassan Agmir

Principe général

Toute liste d'objets métier passe par la Factory correspondante, qui expose une propriété/méthode retournant une collection (interface IBICollection). Pour les Articles, la factory est IBOArticleFactory3, accessible via FactoryArticle sur l'objet application commerciale (BSCIALApplication100c).

Méthodes disponibles sur IBOArticleFactory3

Propriétés (listes complètes triées) :

Propriété

Description

ListOrderReference()

Collection triée par référence article

ListOrderDesignation()

Collection triée par désignation

ListOrderFamille()

Collection triée par famille

Méthodes (listes filtrées) :

Méthode

Description

QueryActifOrderReference()

Articles actifs (pas en sommeil), triés par référence

QueryFamille(pFamille)

Articles d'une famille donnée

QueryReferenceOrderReference(refDe, refA)

Articles entre deux références

QueryMouvementeOrderReference()

Articles mouvementés

QueryPublieOrderReference()

Articles publiés sur le site marchand

QueryCatalogue(pProduit)

Articles d'un catalogue

QueryDepotEmplacement(pEmpl)

Articles passés par un emplacement de dépôt

Et, hérité de IBITypeObjectFactory, la méthode générique List() qui retourne tous les articles.

Exemple de code (VB.NET)

using System;
using Objets100cLib;

namespace ListeArticlesApp
{
    /// <summary>
    /// Exemple de lecture de la liste des articles depuis une base commerciale
    /// via IBOArticleFactory3.
    /// </summary>
    internal static class Program
    {
        private static void Main()
        {
            var baseCial = new BSCIALApplication100c();

            if (!OuvreBaseCial(baseCial, @"C:\temp\MaBase.mae"))
                return;

            try
            {
                if (TryCreerCollectionArticles(baseCial, out IBICollection collArticles))
                {
                    Console.WriteLine($"La base contient {collArticles.Count} articles.");
                    Console.WriteLine();
                    Console.WriteLine("Liste des articles :");

                    foreach (IBOArticle3 article in collArticles)
                    {
                        Console.WriteLine($"{article.AR_Ref} - {article.AR_Design}");
                    }
                }
                else
                {
                    Console.WriteLine("Aucun article trouvé.");
                }
            }
            finally
            {
                baseCial.Close();
            }
        }

        /// <summary>
        /// Ouvre la base commerciale avec les identifiants fournis.
        /// </summary>
        private static bool OuvreBaseCial(
            BSCIALApplication100c baseCial,
            string nomBase,
            string utilisateur = "<Administrateur>",
            string motDePasse = "")
        {
            try
            {
                baseCial.Name = nomBase;
                baseCial.Loggable.UserName = utilisateur;
                baseCial.Loggable.UserPwd = motDePasse;
                baseCial.Open();
                return true;
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Erreur en ouverture de base commerciale : {ex.Message}");
                return false;
            }
        }

        /// <summary>
        /// Récupère la collection des articles, triée par référence.
        ///
        /// Alternatives disponibles sur IBOArticleFactory3 :
        ///   - ListOrderDesignation()          : triée par désignation
        ///   - ListOrderFamille()              : triée par famille
        ///   - QueryActifOrderReference()      : uniquement les articles actifs
        ///   - QueryFamille(pFamille)          : articles d'une famille donnée
        ///   - QueryReferenceOrderReference()  : articles entre deux références
        ///   - QueryMouvementeOrderReference() : articles mouvementés
        ///   - QueryPublieOrderReference()     : articles publiés sur le site marchand
        ///   - QueryCatalogue(pProduit)        : articles d'un catalogue
        ///   - QueryDepotEmplacement(pEmpl)    : articles passés par un emplacement de dépôt
        ///   - List()                          : tous les articles, sans tri particulier (hérité de IBITypeObjectFactory)
        /// </summary>
        private static bool TryCreerCollectionArticles(
            BSCIALApplication100c baseCial,
            out IBICollection collArticles)
        {
            try
            {
                collArticles = baseCial.FactoryArticle.ListOrderReference();
                return true;
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Erreur en lecture des articles : {ex.Message}");
                collArticles = null;
                return false;
            }
        }
    }
}

Points clés

  • CollArticles.Count donne le nombre d'articles ; CollArticles.Item(index) accède à un article précis.

  • Remplacez ListOrderReference() par QueryActifOrderReference() si vous ne voulez que les articles actifs, ou par QueryFamille(pFamille) pour filtrer par famille (nécessite un objet IBOFamille3 obtenu au préalable, ex. BaseCial.FactoryFamille.ReadReference("...")).

  • List() (hérité de IBITypeObjectFactory) fonctionne aussi mais sans tri particulier — préférez une des ListOrderXxx()/QueryXxx() ci-dessus pour un résultat déjà ordonné/filtré.

IBOFamille3 Famille = BaseCial.FactoryFamille.ReadReference("MAFAMILLE");
IBICollection CollArticlesFamille = BaseCial.FactoryArticle.QueryFamille(Famille);
  • Articles actifs uniquement :

CollArticles = BaseCial.FactoryArticle.QueryActifOrderReference();
  • Pensez à libérer proprement les objets COM en fin d'utilisation (Marshal.ReleaseComObject si nécessaire dans les applis .NET qui manipulent beaucoup d'objets COM en boucle).

Subscribe to my Newsletters

Stay updated with the latest programming tips, tricks, and IT insights! Join my community to receive exclusive content on coding best practices.

© Copyright 2025 by Hassan Agmir . Built with ❤ by Me