Partager via


Contraintes d'expression et contraintes de table

Mise à jour : June 19, 2013

S'applique à: Microsoft Dynamics AX 2012 R3, Microsoft Dynamics AX 2012 R2, Microsoft Dynamics AX 2012 Feature Pack

Cette rubrique décrit l'utilisation des contraintes d'expression et de table. Les contraintes permettent de contrôler les valeurs d'attribut que vous pouvez sélectionner lorsque vous configurez des produits pour une commande client, un devis de vente, une commande fournisseur ou un ordre de fabrication. Vous pouvez utiliser des contraintes d'expression ou des contraintes de table selon la façon dont vous préférez créer les contraintes.

Que sont les contraintes d'expression ?

Les contraintes d'expression sont caractérisées par une expression utilisant l'arithmétique, les opérateurs booléens et les fonctions. Une contrainte d'expression est entrée pour un composant spécifique dans un modèle de configuration de produit. Elle ne peuvent pas être réutilisées ni partagées avec un autre composant. Toutefois, les contraintes d'expression pour un composant peuvent référencer des attributs des sous-composants du composant. Pour plus d'informations sur la création d'une contrainte d'expression, voir la rubrique Création d'une contrainte d'expression pour un composant de produit.

Que sont les contraintes de table ?

Les contraintes de table répertorient les combinaisons de valeurs autorisées pour les attributs lorsque vous configurez un produit. Les définitions de contrainte de table peuvent être utilisées génériquement. Lorsque vous créez une contrainte de table pour un composant dans un modèle de configuration de produit, vous sélectionnez une définition de contrainte de table.

Pour créer les combinaisons autorisées, vous ajoutez des attributs de types spécifiques aux composants. Chaque type d'attribut a une valeur spécifique. Pour plus d'informations sur la création d'une contrainte de table et la manière de l'ajouter à un modèle de configuration de produit, voir Créez une contrainte de table et Ajout d'une contrainte de table à un composant.

Exemple de contrainte de table

Cet exemple décrit comment vous pouvez limiter la configuration d'une télévision à des tailles et types spécifiques pour une offre saisonnière.

Cette première table indique les tailles et les types de télévisions qui sont généralement disponibles pour la configuration. Les tailles et types de télévision sont les valeurs disponibles pour les types d'attributs TelevisionType et TelevisionSize.

Attribut

Type d'attribut

Valeurs

Télévision

TelevisionSize

24, 36, 42, 48, 50

TelevisionType

Plasma, Projection, OLED, LCD

Le tableau suivant indique les combinaisons définies par la contrainte de table Offre saison de TV. En utilisant cette contrainte de table, vous pouvez configurer une télévision Plasma et une télévision à projection uniquement dans les tailles 48 et 50, et vous pouvez configurer une télévision LCD uniquement en taille 36.

Contrainte de table

Tapez

Taille

Offre saison de TV

Plasma

48

Plasma

50

Projection

48

Projection

50

LCD

36

Pour plus d'informations sur la procédure d'ajout d'attributs à des composants, voir Ajout d'un attribut à un composant.

Vous pouvez créer des contraintes de table définies par le système et par l'utilisateur. Pour plus d'informations sur ces types de contraintes de table, voir À propos des contraintes de table définies par l'utilisateur et par le système..

Quelle syntaxe doit être utilisée pour résoudre des contraintes dans Microsoft Dynamics AX ?

Vous devez utiliser la syntaxe OML (Optimization Modeling Language) lorsque vous écrivez les contraintes. Microsoft Dynamics AX utilise le solveur de contraintes Microsoft Solver Foundation pour résoudre les contraintes. Pour plus d'informations, voir Microsoft Solver Foundation.

Dois-je utiliser des contraintes de table ou des contraintes d'expression ?

Vous pouvez utiliser des contraintes d'expression ou des contraintes de table selon la façon dont vous préférez paramétrer les contraintes. Vous créez une contrainte de table comme une matrice, alors qu'une contrainte d'expression est un relevé individuel. Lorsque vous configurez un produit, la contrainte utilisée n'a pas d'importance. L'exemple suivant illustre la différence entre les deux méthodes.

Lorsque vous configurez un produit à l'aide du paramétrage de contrainte suivant, les combinaisons autorisées sont un produit de couleur noire en taille 30 ou 50, et un produit de couleur rouge en taille 20.

Paramétrage de contraintes de table

Couleur

Taille

Noir

30

Noir

50

Rouge

20

Contrainte d'expression

(Color == "Noir" & (size == "30" | size == "50")) | (color == "Rouge" & size = "20")

Dois-je utiliser des opérateurs ou la notation d'infixe lorsque j'écris des contraintes d'expression ?

Vous pouvez entrer une contrainte d'expression à l'aide des opérateurs de préfixe disponibles ou en utilisant la notation d'infixe. Pour les opérateurs Min, Max et ABS, vous ne pouvez pas utiliser de notation d'infixe. Ces opérateurs sont inclus en standard dans la plupart des langages de programmation.

Quels opérateurs ou notations d'infixe dois-je utiliser lorsque j'écris des contraintes d'expression ?

Le tableau suivant répertorie les opérateurs et les notations d'infixe que vous pouvez utiliser lorsque vous entrez une contrainte d'expression pour un composant dans un modèle de configuration de produit.

Dans les exemples de cette première table, vous pouvez voir comment écrire une expression à l'aide de la notation d'infixe ou d'opérateurs.

Opérateur

description ;

Syntaxe

Exemples

Implique

Est vrai si la première condition est fausse, la deuxième condition est remplie, ou les deux.

Implies[a, b], infix: a -: b

Opérateur : Implies[x != 0, y >= 0]

Notation infixe : x != 0 -: y >= 0

Et

Est vrai uniquement si toutes les conditions sont remplies.

Si le nombre de conditions est 0 (zéro), le résultat est True.

And[args], infix: a & b & ... & z

Opérateur : And[x == 2, y <= 2]

Notation infixe : x == 2 & y <= 2

Ou

Est vrai si n'importe quelle condition est remplie.

Si le nombre de conditions est 0 (zéro), le résultat est False.

Or[args], infix: a | b | ... | z

Opérateur : Or[x == 2, y <= 2]

Notation infixe : x == 2 | y <= 2

Plus

Additionne ses conditions.

Si le nombre de conditions est 0 (zéro), le résultat est 0.

Plus[args], infix: a + b + ... + z

Opérateur : Plus[x, y, 2] == z

Notation infixe : x + y + 2 == z

Moins

Rend son argument négatif.

Il doit avoir précisément une condition.

Minus[expr], infix: -expr

Opérateur : Minus[x] == y

Notation infixe : -x == y

Abs

Prend la valeur absolue de sa condition.

Il doit avoir précisément une condition.

Abs[expr]

Opérateur : Abs[x]

Heures

Prend le produit de ses conditions.

Si le nombre de conditions est 0 (zéro), le résultat est 1.

Times[args], infix: a * b * ... * z

Opérateur : Times[x, y, 2] == z

Notation infixe : x * y * 2 == z

Puissance

Prend un exponentiel.

L'exponentiation est appliquée de droite à gauche. Autrement dit, il est associatif à droite et Power[a, b, c] est équivalent à Power[a, Power[b, c]]. Power peut être utilisé uniquement avec une constante positive comme exposant.

Power[args], infix: a ^ b ^ ... ^ z

Opérateur : Power[x, 2] == y

Notation infixe : x ^ 2 == y

Max.

Produit la plus grande condition.

Si le nombre de conditions est 0 (zéro), le résultat est Infinity.

Max[args]

Opérateur : Max[x, y, 2] == z

Min.

Produit la plus petite condition.

Si le nombre de conditions est 0 (zéro), le résultat est Infinity.

Min[args]

Opérateur : Min[x, y, 2] == z

Non

Produit l'inverse logique de sa condition.

Il doit avoir précisément une condition.

Not[expr], infix: !expr

Opérateur : Not[x] & Not[y == 3]

Notation infixe : !x!(y == 3)

Les exemples du tableau suivant indiquent comment entrer de notation d'infixe.

Notation d'infixe

description ;

x + y + z

Addition

x * y * z

Multiplication

x - y

La soustraction binaire est traduite de la même façon que l'addition binaire avec un second négatif.

x ^ y ^ z

Exponentiation avec associativité à droite

!x

Non booléen

x -: y

Implication booléenne

x | y | z

Ou booléen

x & y & z

Et booléen

x == y == z

Égalité

x != y != z

Distinct

x < y < z

Inférieur à

x > y > z

Supérieur

x <= y <= z

Inférieur ou égal à

x >= y >= z

Supérieur ou égal à

(x)

Les parenthèses remplacent la priorité par défaut.

Pourquoi mes contraintes d'expression ne sont-elle pas validées correctement ?

Vous ne pouvez pas utiliser de mots clés réservés comme nom de solveur pour les attributs, les composants ou les sous-composants dans un modèle de configuration de produit. La liste suivante contient la liste des mots clés réservés que vous n'avez pas le droit d'utiliser :

  • Plafond

  • Elément

  • Egal

  • Sol

  • Si

  • Inférieur

  • Supérieur

  • Implique

  • Journal

  • Max.

  • Min.

  • Moins

  • Plus

  • Puissance

  • Heures

  • Emplacement

  • Modèle

  • Décision

  • Objectif

Votre question n'est pas ici ?

Nous travaillons pour inclure le plus grand nombre de questions possible, afin que l'Aide de Microsoft Dynamics AX soit la plus utile qui soit pour tous.

Indiquez-nous la question que vous voudriez ajouter à cette rubrique. Envoyez-nous un e-mail à adocs@microsoft.com.