jeudi 3 mars 2011

CP1.3 - Modification de la form

Après avoir créer notre champ en base, il ne nous reste plus qu'à faire le nécessaire pour qu'il soit alimenté.

La mise à jour de ce champ passe par une saisie dans une form, dans notre cas il s'agit de la form "Relations commerciales" portant le nom "smmBusRelTable".

Notre nouveau champ ("SP_TestCombo") est désormais présent dans le datasource "smmBusRelTable". C'est ce champ qu'il va nous falloir placer sur notre form. Pour cela voici les actions à effectuer :
  • Déplier la branche correspondant à l'emplacement où vous souhaitez voir apparaitre votre champ, dans notre cas, voici l'arborescence que nous déplions :
  • Par un glisser/déplacer, vous déposez le champ "SP_TestCombo" issu du datasource "smmBusRelTable" dans le goup "Identification".
Il ne vous reste plus qu'à lancer l'écran "Relations commerciales", vous devriez obtenir le résultat suivant :


CP1.2 - Création du champ en base

Dans le billet précédent, nous avons vu dans quelle table nous devions créer notre champ et le nom que nous allions lui donner. Il nous reste à définir son type.

Pour rappel, ce champ se destine à accueillir une liste de valeur. Sous AX le type de champ à utiliser est "Enum". Les valeurs de cette énumération sont connues, il faut donc les définir :
  • 0 : Test 1
  • 1 : Test 2
  • 2 : Test 3
0, 1 et 2 étant les valeurs stockées en base de données et "Test 1", "Test 2" et "Test 3" les valeurs d'affichage.

Etape 1 - Création de l'énumération :

Voici les actions à réaliser :
  1. Se placer dans l'AOT (Control+D) sur la branche "Data Dictionary\Base Enums"
  2. Ouvrir le menu contextuel et sélectionner l'option "Nouveau Base Enum"
  3. Affecter à ce base enum le nom "SP_TestCombo"
  4. Ouvrir le menu contextuel correspondant à ce base enum et sélectionner l'option "Nouveau Element"
  5. Valoriser les propriétés "Name", "Label" et "EnumValue" avec les valeurs suivantes : "Test1", "Test 1",0
  6. Répéter ces deux dernières actions pour obtenir les valeurs "Test 2" et "Test 3"
Voici ce que vous devez obtenir :

Etape 2 - Création de l'extended data types :

Il s'agit ici de créer le type de données sur lequel notre champ va s'appuyer, voici les actions à réaliser :
  1. Dans l'AOT (Control+D) se placer sur la branche "Data Dictionary\Extended Data Types"
  2. Ouvrir le menu contextuel et sélectionner l'option "Nouveau\Enum"
  3. Affecter à ce type le nom "SP_TestComboType"
  4. Valoriser les propriétés "Label", "HelpText" et "EnumType" avec les valeurs suivantes : "Test", "Test d'une liste de valeur","SP_TestCombo"
 Voici ce que vous devez obtenir :

Etape 3 - Ajout du champ dans la table :

Le champ est désormais prêt à être ajouté à la table, voici les actions à réaliser :
  1. Dans l'AOT (Control+D) se placer sur la branche "Data Dictionary\Tables\smmBusRelTable\Fields" ("smmBusRelTable" étant le nom de la table des relations commerciales)
  2. Ouvrir le menu contextuel et sélectionner l'option "Nouveau\Enum"
  3. Affecter à ce champ le nom "SP_TestComboType"
  4. Valoriser la propriété "ExtendedDataType" avec la valeur "SP_TestComboType" correspondant au type précédemment créé.
 Voici ce que vous devez obtenir :

Une fois ces différentes étapes effectuées, notre table est à jour, il ne nous reste plus qu'à mettre à jour notre "form", c'est ce que nous allons voir dans le billet suivant "CP1.3 - Modification de la form".

CP1.1 - Repérage

Avant de nous lancer tête baissée dans le développement, nous allons repérer les lieux. Cela consiste juste à identifier clairement les points suivants :
  • le nom de la "form" concernée par notre modification
  • le nom que nous souhaitons donner à notre nouveau champ
  • le nom du datasource utilisé par la form pour l'affichage des informations
  • le nom de la table où le champ va devoir être ajouté
Nous souhaitons ajouter notre champ dans la form "Relations commerciales" se trouvant dans le module CRM :

Pour déterminer le nom de la "form" sur laquelle nous travaillons, placez-vous sur un champ de saisi et appuyez sur les touches "Shift"+"Enter". Vous obtiendrez une popup de ce type :


Vous trouvez sur cet écran un ensemble d'informations très interessantes :
  • le nom de la form
  • le nom du datasource utilisé
  • le nom de la table sur laquelle on pointe
Il ne nous reste plus qu'à déterminer le nom que l'on souhaite donner à notre champ : SP_TestCombo.
Pour la création du champ, rendez-vous sur le billet "CP1.2 - Création du champ en base"...

Cas Pratique 1 (CP1) - Ajouter un champ dans une "form" existante

Premier cas pratique : Nous allons décrire ici comment ajouter un champ dans une « form » existante.
Pour ce cas pratique nous nous appuierons sur la fenêtre de définition d'une relation commercial (Module CRM), mais cela pourrait être n'importe quelle "form". Nous ajouterons sur cette "form" un champ de type liste déroulante dont le contenu est figé. Ce nouveau champ aura pour libellé "Test Combo" et le contenu de la liste sera "Test1", "Test2" et "Test3". Pas très parlant tout cela mais le but est ici de présenter la méthode et non pas la mise en place d'une nouvelle fonctionnalité.
Nous allons découper ce cas pratique en différentes parties, dans le but d'en faciliter la lecture (et la rédaction) :
  • CP1.1 - Repérage : nous décrivons ici les informations à récupérer avant de se lancer dans le développement pur.
  • CP1.2 - Création du champ en base : nous décrivons ici les étapes à suivre pour créer en base de données notre nouveau champ.
  • CP1.3 - Modification de la form : dernier chapitre décrivant comment modifier la form pour faire apparaitre notre nouveau champ.