Articles utilisant Sage 100cloud Objets Métiers.
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 |
|---|---|
| Collection triée par référence article |
| Collection triée par désignation |
| Collection triée par famille |
Méthodes (listes filtrées) :
Méthode | Description |
|---|---|
| Articles actifs (pas en sommeil), triés par référence |
| Articles d'une famille donnée |
| Articles entre deux références |
| Articles mouvementés |
| Articles publiés sur le site marchand |
| Articles d'un catalogue |
| 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.Countdonne le nombre d'articles ;CollArticles.Item(index)accède à un article précis.Remplacez
ListOrderReference()parQueryActifOrderReference()si vous ne voulez que les articles actifs, ou parQueryFamille(pFamille)pour filtrer par famille (nécessite un objetIBOFamille3obtenu au préalable, ex.BaseCial.FactoryFamille.ReadReference("...")).List()(hérité deIBITypeObjectFactory) fonctionne aussi mais sans tri particulier — préférez une desListOrderXxx()/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.ReleaseComObjectsi nécessaire dans les applis .NET qui manipulent beaucoup d'objets COM en boucle).