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.