Exécuter du code lors des échanges avec McdServerService

0000002358     -      30/07/2025

Mercator peut exécuter du code sur mesure lors des échanges avec McdServerService. Cela se fait en utilisant ces évènements statiques disponibles sur MercatorUi.McdClient.McdClientStatic :

  • BeforeExport
  • AfterExport
  • BeforeImport
  • AfterImport

Ces évènements passent un eventArgs qui contient ces propriétés :

  • Dictionary<McdClientClasses.McdBaseDicoKeyEnum, McdClientClasses.McdItemDescriptor> DicoBase : liste des éléments exportables/importables
  • StringBuilder SbErr : messages d'erreurs éventuels
  • Boolean Cancel (uniquement pour les évènements Before) : à mettre à true si on souhaite interrompre le processus.

Ils s'exécutent dans le Mercator qui effectuent les échanges (pas dans McdServerService).

L'exemple ci-dessous est un point de départ pour un développement plus réaliste. Il illustre simplement ces deux fonctionnalités :

  1. On retire simplement la possibilité d'exporter les représentants.
  2. Si on a sélectionné l'export des magasins, on interrompt le processus.
Zoom
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using MercatorApi;
using MercatorUi;
using System.Windows.Forms;


namespace Main
{
    public class Customizer : MercatorUi.ICustomizers.IExec
    {
        public void Main(MercatorUi.ICustomizers.ExecAction action)
        {
            if (action == MercatorUi.ICustomizers.ExecAction.DossierOpen)
            {
                MercatorUi.McdClient.McdClientStatic.BeforeExport += McdClientStatic_BeforeExport;
            }
            else if (action == MercatorUi.ICustomizers.ExecAction.DossierClose)
            {
                MercatorUi.McdClient.McdClientStatic.BeforeExport -= McdClientStatic_BeforeExport;
            }
        }

        void McdClientStatic_BeforeExport(MercatorUi.McdClient.McdClientStatic.BeforeExportEventArgs e)
        {
            if (e.DicoBase.ContainsKey(MercatorUi.McdClient.McdClientClasses.McdBaseDicoKeyEnum.OutReps))
            {
                e.DicoBase.Remove(MercatorUi.McdClient.McdClientClasses.McdBaseDicoKeyEnum.OutReps);
            }

            if (e.DicoBase.ContainsKey(MercatorUi.McdClient.McdClientClasses.McdBaseDicoKeyEnum.OutMagasins) && e.DicoBase[MercatorUi.McdClient.McdClientClasses.McdBaseDicoKeyEnum.OutMagasins].Selected)
            {
                e.SbErr.AppendLine("Les magasins ne peuvent être exportés !!!");
                e.Cancel = true;
            }
        }
    }
}

 

Autres liens concernant la configuration des échanges via MCDServerService :

 

 



Cookies fonctionnels : Cookies nécessaires à l'utilisation du site et cookies de préférence. Ils ne contiennent aucune donnée à caractère personnel. (En savoir plus)

Cookies statistiques : Captation de statistiques liées aux comportements des internautes. (En savoir plus)

Cookies marketing : Pour effectuer le suivi des visiteurs au travers des sites web, à des fins publicitaires. (En savoir plus)