Partilhar via


Restrições de expressão e restrições de tabela

Se aplica a: Microsoft Dynamics AX 2012 R3, Microsoft Dynamics AX 2012 R2, Microsoft Dynamics AX 2012 Feature Pack

Este tópico descreve o uso de restrições de expressão e de tabela. As restrições controlam os valores de atributo que podem ser selecionados quando você configura produtos para uma ordem de venda, cotação de venda, ordem de compra, ou uma ordem de produção. É possível usar restrições de expressão ou de tabela, dependendo de como você preferir criar as restrições.

O que são as restrições de expressão?

As restrições de expressão são caracterizadas por uma expressão que usa operadores e funções aritméticos e boolianos. Uma restrição de expressão será criado para um determinado componente em um modelo de configuração de produto. Não pode ser reutilizada ou compartilhada com outro componente. No entanto, as restrições de expressão para um componente pode fazer referência a atributos dos subcomponentes do componente. Para obter informações sobre como criar uma restrição de expressão, consulte Criar uma restrição de expressão para um componente do produto.

O que são as restrições de tabela?

As restrições de tabela listam as combinações de valores que são permitidas para os atributos quando você configura um produto. As definições de restrição de tabela podem ser usadas genericamente. Ao criar uma restrição de tabela para um componente em um modelo de configuração de produto, selecione uma definição de restrição de tabela.

Para criar combinações que são permitidas, adicione tipos de atributos específicos aos componentes. Cada tipo de atributo possui um valor específico. Para obter informações sobre como criar uma restrição de tabela e de como adicioná-la a um modelo de configuração de produto, consulte Criar uma restrição de tabela e Adicionar uma restrição da tabela à um componente.

Exemplo de uma restrição de tabela

Este exemplo mostra como você pode limitar a configuração de uma televisão a tamanho e a tipos específicos para uma oferta sazonal.

Essa primeira tabela mostra os tamanhos e os tipos de televisões que geralmente estão disponíveis para a configuração. Os tamanhos de televisão e os tipos são os valores disponíveis para os tipos de atributo Tipo de televisão e Tamanho de televisão.

Atributo

Tipo de atributo

Valores

Televisão

Tamanho de televisão

24, 36, 42, 48, 50

Tipo de televisão

Plasma, projeção, OLED, LCD

A tabela a seguir mostra as combinações que são definidas pela restrição da tabela Oferta sazonal de tevê. Usando a restrição de tabela, é possível configurar uma televisão de plasma e uma televisão de projeção apenas nos tamanhos 48 e 50, e é possível configurar uma televisão LCD apenas no tamanho 36.

Restrição de tabela

Tipo

Tamanho

Oferta sazonal de tevê

Plasma

48

Plasma

50

Projeção

48

Projeção

50

LCD

36

Para obter mais informações sobre como adicionar atributos aos componentes, consulte Adicionar um atributo a um componente.

É possível criar restrições de tabela definidas pelo sistema e pelo usuário. Para obter mais informações sobre esses tipos de restrições de tabela, consulte Sobre as restrições de tabela definidas pelo sistema e pelo usuário.

Qual sintaxe deve ser usada para resolver restrições no Microsoft Dynamics AX?

É necessário usar a sintaxe OML (Optimization Modeling Language) ao escrever restrições. O Microsoft Dynamics AX usa o agente de resolução de restrição do Solver Foundation Microsoft para resolver as restrições. Para obter mais informações, consulte Microsoft Solver Foundation.

Devo usar as restrições de tabela ou restrições de expressão?

É possível usar restrições de expressão ou de tabela, dependendo de como você preferir criar a configuração de restrição. Você acumula uma restrição de tabela como uma matriz, enquanto uma restrição da expressão é um demonstrativo individual. Ao configurar um produto, não importa o tipo de restrição que está sendo usado. O exemplo a seguir ilustra a diferença entre os dois métodos.

Ao configurar um produto usando a configuração de restrição a seguir, as combinações que são permitidas são um produto na cor preta e de tamanho 30 ou 50, e um produto na cor vermelha e de tamanho 20.

Configuração da restrição de tabela

Cor

Tamanho

Preto

30

Preto

50

Vermelho

20

Restrição de expressão

(Cor == "Preto" & (tamanho == "30" | tamanho == "50")) | (cor == "Vermelho" & tamanho = "20")

Devo usar operadores ou notação de infixo quando escrevo restrições de expressão?

É possível criar uma restrição de expressão usando os operadores de prefixo disponíveis ou usando a notação de infixo. Para os operadores Min, Max, e Abs, não é possível usar uma notação de infixo. Estes operadores estão incluídos por padrão na maioria das linguagens de programação.

Quais operadores e notações de infixo posso usar ao escrever restrições de expressão?

As tabelas a seguir listam os operadores e as notações de infixo que podem ser usados ao criar uma restrição de expressão para um componente em um modelo de configuração de produto.

Nos exemplos da primeira tabela, você pode ver como gravar uma expressão usando os operadores ou a notação de infixo.

Operador

Descrição

Sintaxe

Exemplos

Implies

Isso ocorre se a primeira condição for falsa, a segunda condição for verdadeira ou ambos.

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

Operador: Implies[x != 0, y >= 0]

Notação de infixo: x != 0 -: y >= 0

And

Isso ocorre apenas se todas as condições forem verdadeiras.

Se o número de condições for 0, será Verdadeiro.

And[args], infixo: a & b & ... e z

Operador: And[x == 2, y <= 2]

Notação de infixo: x == 2 & y <= 2

Or

Isso será verdadeiro se qualquer condição for verdadeira.

Se o número de condições for 0, será Falso.

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

Operador: Or[x == 2, y <= 2]

Notação de infixo: x == 2 | y <= 2

Plus

Isso soma as condições.

Se o número de condições for 0, será 0.

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

Operador: Plus[x, y, 2] == z

Notação de infixo: x + y + 2 == z

Minus

Isso nega o argumento.

Deve ter exatamente uma condição.

Minus[expr], infixo: -expr

Operador: Minus[x] == y

Notação de infixo: -x == y

Abs

Leva o valor absoluto da condição.

Deve ter exatamente uma condição.

Abs[expr]

Operador: Abs[x]

Times

Leva o produto das condições.

Se o número de condições for 0, será 1.

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

Operador: Times[x, y, 2] == z

Notação de infixo: x * y * 2 == z

Power

Leva um exponencial.

Aplica a exponenciação da direita para a esquerda. Ou seja, é associativo à direita, consequentemente Power[a, b, c] é equivalente a Power[a, Power[b, c]]. Ao mesmo tempo só pode ser usada com uma constante positiva como o expoente.

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

Operador: Power[x, 2] == y

Notação de infixo: x ^ 2 == y

Max

Isso gera a condição a maior.

Se o número de condições for 0, será infinito.

Max[args]

Operador: Max[x, y, 2] == z

Min

Isso gera a condição menor.

Se o número de condições for 0, será infinito.

Min[args]

Operador: Min[x, y, 2] == z

Not

Isso gera a inversão lógica da condição.

Deve ter exatamente uma condição.

Not[expr], infixo: !expr

Operador: Not[x] & Not[y == 3]

Notação de infixo: !x!(y == 3)

Os exemplos na tabela a seguir mostram como gravar uma notação de infixo.

Notação de infixo

Descrição

x + y + z

Adição

x * y * z

Multiplicação

x - y

A subtração binária é traduzida da mesma forma de uma adição binária com um segundo binário.

x ^ y ^ z

Exponenciação com associabilidade direta

!x

Não booliano

x -: y

Implicação booliana

x | y | z

Ou booliano

x & y & z

E booliano

x == y == z

Igualdade

x != y != z

Distinto

x < y < z

Menor que

x > y > z

Maior que

x <= y <= z

Menor que ou igual a

x >= y >= z

Maior que ou igual a

(x)

Precedência padrão de sobreposição de parênteses.

Por que minhas restrições de expressão não validam corretamente?

Não é possível usar palavras-chave reservadas como nomes de atributos, componentes ou subcomponentes em um modelo de configuração de produto. A tabela a seguir contém uma lista de palavras-chave reservadas que você não deve usar:

  • Teto

  • Elemento

  • Igual

  • Piso

  • Se

  • Menos

  • Maior

  • Implica

  • Log.

  • Máx.

  • Mín.

  • Menos

  • Mais

  • Energia

  • Horas

  • Slot

  • Modelo

  • Decisão

  • Meta

Não vê sue pergunta aqui?

Estamos trabalhando para incluir o máximo de perguntas possível, de modo que a ajuda do Microsoft Dynamics AX seja mais útil para pessoas como você.

Informe-nos qual pergunta você deseja adicionar a este tópico. Envie um e-mail para adocs@microsoft.com.