# Configuração dos Campos

Detalhes sobre como customizar os campos de um formulário, de acordo com a sua necessidade.

# Textbox

O campo textbox é o tipo de campo mais usado no agilityflow. Isso é devido à sua versatilidade graças às inúmeras [máscaras](#bkmrk-m%E3%A1scara) disponíveis. Apesar do nome, é com o campo textbox que iremos armazenar [números](#bkmrk-n%E3%BAmero) também.

Ao criar um campo textbox no formulário, é solicitado escolher um grupo de informações e informar um nome de apresentação. Caso seja necessário, as configurações abaixo, estão disponíveis para o campo:

### Grupo de informações

Dentro das configurações, é possível alterar o [grupo de informação](http://wiki.agilityflow.io/books/manual-de-customiza%C3%A7%C3%A3o/page/divis%C3%A3o-e-agrupamento-dos-campos "Divisão e agrupamento dos campos") ao qual o campo foi atribuído no momento da criação.

### Nome de Apresentação

Mostra o nome de apresentação informado no momento da criação. Esse é o nome que será mostrado na tela para o usuário.

### Tipo

Para o campo textbox, é possível definir um subtipo. São eles:

#### Campo de Texto Simples

É o tipo padrão. Permite que o usuário insira qualquer tipo de informação de texto, em uma linha única.

#### Campo de Texto Multi Linha

Similar ao Campo de Texto Simples, porém, com mais de uma linha. Ao selecionar essa opção, é possível escolher quantas linhas ficarão visíveis ao usuário.

#### Campo com criptografia MD5 (Ex: Senha)

[![campo_senha.gif](http://wiki.agilityflow.io/uploads/images/gallery/2019-02-Feb/campo_senha.gif)](http://wiki.agilityflow.io/uploads/images/gallery/2019-02-Feb/campo_senha.gif)

Funciona para armazenar textos, que ao digitados, serem ocultados tendo seus caracteres substituídos. Ao selecionar esse subtipo, não é possível definir uma [máscara](#bkmrk-m%E3%A1scara).

#### Campo Auto Numérico (Número Sequencial preenchido automaticamente)

Nesse campo, o próprio agilityflow preenche o campo com um número sequencial. Esse valor, começa em 1 e vai se somando conforme se criam novos registros do formulário.

### Coluna Banco de dados (SQL)

Esse é o nome interno, usado pelo sistema, a ser criado no banco de dados do agilityflow. É uma informação técnica e esse campo é preenchido automaticamente pelo sistema.

<p class="callout warning">Na maioria dos casos, você não precisa alterar o nome sugerido pelo sistema.</p>

Diferentemente do campo "Nome de Apresentação", esse campo não fica visível para o usuário.

> Para que serve o campo Coluna Banco de dados (SQL)?

Esse campo vai ser utilizado ao criar reports e dashboards. É através dele, que poderemos extrair informações e expor usando esses recursos do sistema.

### Informações de ajuda

Nesse campo é possível incluir um texto que ajudará o usuário a preenche-lo. Abaixo, um exemplo de dois campos: um campo sem informações de ajuda e outro com esse campo configurado:

[![informacoes_ajuda.gif](http://wiki.agilityflow.io/uploads/images/gallery/2019-02-Feb/informacoes_ajuda.gif)](http://wiki.agilityflow.io/uploads/images/gallery/2019-02-Feb/informacoes_ajuda.gif)

### Preenchimento Padrão

O preenchimento padrão, permite ao sistema, sugerir o preenchimento do campo. Isso é útil, quando o usuário, na maioria das vezes, vai preencher esse campo da mesma forma. Isso economiza o tempo do usuário no preenchimento das informações.

Mesmo que haja definido um preenchimento padrão, o campo fica disponível para que o usuário altere esse valor.

#### Preencher Quando

Nessa opção, o usuário define em que momento o sistema faz o preenchimento padrão do campo. São duas opções:

##### No carregamento inicial (On PageLoad)

Ao abrir o formulário, o campo já é preenchido automaticamente.

##### Na alteração do valor de um determinado campo (On Change)

O campo não é preenchido com o valor padrão, até que um campo seja alterado. É possível definir qual campo ao ser alterado, será o gatilho para o preenchimento padrão.

#### Valor Padrão

É o valor que será preenchido por padrão nesse campo.

### Máscara

É a forma que o sistema utiliza para mostrar ao usuário, o conteúdo do campo de texto. Isso facilita a visualização da informação por parte do usuário. Por exemplo, é muito fácil ver o telefone "(11) 98765-4321" do que "11987654321".

#### Tipo de máscara

Existe uma série de máscaras disponíveis no agilityflow.

##### Número

> Como criar um campo numérico?

Um número não deixa de ser um texto. Portanto, para criar um campo numérico basta criar um campo textbox e aplicar uma máscara de número.

- Tipo de Número  
      
    
    - Inteiro: o campo não aceita "," ou "." no seu conteúdo. Ao digitar um desses símbolos, o sistema ignora a digitação. Por exemplo, digitando "1,5", o sistema ignora a vírgula e preenche "15". Caso o usuário cole o valor "1,5541", o sistema ignora a vírgula e o conteúdo à direita da vírgula, aceitando o valor "1".
    - Moeda (Real): coloca vírgula, deixando o campo com duas casas decimais;
    - Decimal (1 casa decimal): coloca vírgula, deixando o campo com duas casas decimais;
    - Decimal (2 casas decimais): coloca vírgula, deixando o campo com duas casas decimais;
    - Decimal (3 casas decimais): coloca vírgula, deixando o campo com duas casas decimais;
    - Decimal (4 casas decimais): coloca vírgula, deixando o campo com duas casas decimais;
    - Decimal (5 casas decimais): coloca vírgula, deixando o campo com duas casas decimais;

##### CPF

Insere "." e "-" de acordo com o CPF brasileiro. Esse campo, apenas separa os dígitos e não faz validação se o CPF é válido ou não. Pra isso, é necessário incluir uma [validação](#bkmrk-%E2%A0-8).

##### CNPJ

Insere "." e "-" de acordo com o CNPJ brasileiro. Esse campo, apenas separa os dígitos e não faz validação se o CNPJ é válido ou não. Pra isso, é necessário incluir uma [validação](#bkmrk-%E2%A0-8).

##### CEP

Insere "-", separando o número de acordo com o formato do CEP brasileiro.

<p class="callout info">Para buscar o CEP automaticamente na base dos correios e preencher os campos de endereço, **[verifique o tutorial aqui nesse link](https://wiki.agilityflow.io/books/manual-de-customiza%C3%A7%C3%A3o/page/buscar-o-cep-nos-correios-e-preencher-os-campos-de-endere%C3%A7o-automaticamente)**</p>

##### Máscara Customizada

A máscara customizada, permite o usuário crie sua própria máscara. O agilityflow, utiliza a biblioteca Inputmask do javascript, criada por Robin Herbots. A documentação completa pode ser acessada no [github](https://github.com/RobinHerbots/Inputmask). Você só precisa ler essa documentação, caso opte por fazer uma customização avançada.

##### Tipo de Customização

- Básica: é um forma fácil de criar uma máscara não existente no agilityflow. A sintaxe utilizada é a seguinte:  
      
    9: caractere numérico (de "0" a "9");  
    a: caractere alfabético (de "a" a "z");  
    A: caractere alfabético (de "A" a "Z");  
    \*: caractere alfanumérico (todos acima);  
    \[\]: quando usado, identifica um caractere opcional;  
    \\\\: Par usar um dos caracteres acima como caractere e não como sintaxe;  
      
    Exemplos:  
    <table border="1" style="border-collapse: collapse;"><tbody><tr><td style="width: 33.3333%;">**Máscara**</td><td style="width: 33.3333%;">**Entrada**</td><td style="width: 33.3333%;">**Resultado**</td></tr><tr><td style="width: 33.3333%;">(99) 9999\[9\]-9999</td><td style="width: 33.3333%;">12123451234</td><td style="width: 33.3333%;">(12) 12345-1234</td></tr><tr><td style="width: 33.3333%;">(99) 9999\[9\]-9999</td><td style="width: 33.3333%;">121234-1234</td><td style="width: 33.3333%;">(12) 1234-1234</td></tr><tr><td style="width: 33.3333%;">\[9-\]AAA-999</td><td style="width: 33.3333%;">5ahg123</td><td style="width: 33.3333%;">5-AHG-123</td></tr><tr><td style="width: 33.3333%;">\[9-\]aaa-999</td><td style="width: 33.3333%;">ahg123</td><td style="width: 33.3333%;">ahg123</td></tr><tr><td style="width: 33.3333%;">+999-\\\\9</td><td style="width: 33.3333%;">123</td><td style="width: 33.3333%;">+123-9</td></tr></tbody></table>
- Avançada: você pode usar todos os recursos da biblioteca Inputmask. A documentação completa pode ser acessada no [github](https://github.com/RobinHerbots/Inputmask).

##### Máscara com 'Regular Expression'

Utiliza o padrão de expressões regulares, que é um padrão utilizado em programação para identificar cadeias de caracteres. Caso haja necessidade de formatar seu texto, procure saber mais sobre esse padrão, já que ele é extremamente completo, no que diz respeito a identificar textos.

##### Telefone: País + DDD + Cel/Tel Brasil

Sinal de "+", espaço, código do país com dois dígitos, espaço, código de área com dois dígitos entre parêntesis, espaço, telefone com 9 ou 8 dígitos, tendo um hífen separando após o 4 ou quinto dígito (seguindo o padrão brasileiros para telefones fixos e móveis). O sistema não aceita entrada que não tenha esse formato.

Ex: +55 (11) 98765-4321 ou +55 (81) 4321-1234

##### Telefone: DDD + Cel/Tel Brasil

Código de área com dois dígitos entre parêntesis, espaço, telefone com 9 ou 8 dígitos, tendo um hífen separando após o 4 ou quinto dígito (seguindo o padrão brasileiros para telefones fixos e móveis). O sistema não aceita entrada que não tenha esse formato.

Ex: (11) 98765-4321 ou (81) 4321-1234

##### Telefone: Cel/Tel Brasil

Telefone com 9 ou 8 dígitos, tendo um hífen separando após o 4 ou quinto dígito (seguindo o padrão brasileiros para telefones fixos e móveis). O sistema não aceita entrada que não tenha esse formato.

Ex: 98765-4321 ou 4321-1234

> Como configurar um campo de data?

##### Data e hora no formato dd/mm/yyyy hh:mm

Formato de data onde o ano tem 4 dígitos, seguido de hora sem os segundos. O sistema não aceita entrada que não tenha esse formato.

Ex: 18/01/1981 23:52

##### Data e hora (Com Segundos) no formato dd/mm/yyyy hh:mm:ss

Formato de data onde o ano tem 4 dígitos, seguido de hora com os segundos. O sistema não aceita entrada que não tenha esse formato.

Ex: 18/01/1981 23:52:13

##### Data sem hora no formato dd/mm/yyyy

Formato de data onde o ano tem 4 dígitos. O sistema não aceita entrada que não tenha esse formato.

Ex: 18/01/1981

> Como configurar um campo de hora?

##### Hora no formato hh:mm

Horário, sem os segundos. O sistema não aceita entrada que não tenha esse formato.

Ex: 19:37

##### Hora (Com Segundos) no formato hh:mm:ss

Horário, com os segundos. O sistema não aceita entrada que não tenha esse formato.

Ex: 19:37:22

#### Tamanho máximo de Preenchimento

Com esse campo é possível limitar o número máximo de caracteres a ser preenchido nesse campo.

### Validação

Nessa parte, é possível configurar validações dos dados inseridos pelo usuário, garantindo um padrão de preenchimento.

#### Obrigatório

> Como deixar um campo obrigatório?

Caso marcado como "sim", não permite o salvamento do fomulário sem o preenchimento desse campo. Ao marcar como "sim" essa opção, são abertos duas outras opções:

##### Obrigatório mesmo que por algum motivo o campo esteja marcado como invisível?

Use essa opção para fazer um campo definido como obrigatório, deixar sua obrigatoriedade caso ele esteja [invisível](#bkmrk-%E2%A0-8).

##### Obrigatório a partir da etapa

Para os formulários com fluxo de etapas, é possível atrelar a obrigatoriedade de um campo à etapa em que se encontra o fluxo.

#### Valor do campo deve ser único em relação a todos os registros

O sistema, valida a inserção do campo, com os registros do mesmo campo, já salvos em outros formulários. Por exemplo, talvez exista uma necessidade de validação de um e-mail para o cadastro de um cliente. Caso o e-mail digitado já conste em outro registro, não será permitido o salvamento do formulário.

<iframe allowfullscreen="allowfullscreen" frameborder="0" height="425" src="https://player.vimeo.com/video/328685546" width="760"></iframe>

#### Valor do campo deve ser único em relação ao formulário PAI

Caso o formulário tenha uma relação com outro formulário (chamamos de formulário Pai), será validado que os dados inseridos são únicos, mas apenas para o registro filho.

#### Valor do campo deve ser único em relação APENAS ao CAMPO relacionado do formulário PAI

Caso haja, mais de um campo no formulário pai, relacionado ao mesmo formulário filho, a validação de valor único, ocorre apenas par cada campo do relacionamento.

Abaixo, um vídeo explica essas 3 últimas opções:

<div id="bkmrk--2"><iframe allowfullscreen="allowfullscreen" frameborder="0" height="425" src="https://player.vimeo.com/video/318250365" width="760"></iframe>

</div>### Regras de Visibilidade e desativação

Usando essas opções, é possível tornar um campo visível, invisível, ativo ou inativo, e definir quando uma dessas ações deve ocorrer. É possível adicionar várias regras para cada campo.

#### Descrição

É um texto que ajuda a identificar a regra que se está criando. Muito útil quando existem múltiplas regras.

#### Ação

##### Ativar

Deixa o campo disponível para inserção de dados. É o estado padrão do campo.

##### Inativar

Deixa o campo indisponível para inserção de dados.

##### Visível

O campo é mostrado na tela, caso esteja inserido para tal, nas configurações de tela.

##### Invisível

O campo é não é mostrado na tela, mesmo que esteja inserido para tal, nas configurações de tela.

#### A partir da etapa / Até a etapa

Em formulários com etapas, é possível estabelecer que uma regra será aplicada em alguma(s) etapa(s). Para isso, basta selecionar as etapas nos campos "a partir da etapa" e "até a etapa", para definir em que momento do fluxo essa regra vai ser aplicada.

#### Quando

Define em que momento a ação deve acontecer.

##### Sempre

É o padrão do formulário.

##### Condicional

- Tipo de condição  
    Para fazer um validação condicional, estão disponíveis as seguintes condições:  
    
    - Se o campo: compara um campo com um valor, ou com outro campo.  
        Abaixo, uma tabela com os operadores disponíveis para as comparações:  
          
        <table border="1" style="border-collapse: collapse; width: 100%;"><tbody><tr><td style="width: 50%;">**Comparação por valor**</td><td style="width: 50%;">**Comparação por outro campo**</td></tr><tr><td style="width: 50%;">For igual a</td><td style="width: 50%;">É igual ao campo</td></tr><tr><td style="width: 50%;">For maior ou igual a</td><td style="width: 50%;">É diferente do campo</td></tr><tr><td style="width: 50%;">For menor ou igual a </td><td style="width: 50%;"> </td></tr><tr><td style="width: 50%;">For maior que</td><td style="width: 50%;"> </td></tr><tr><td style="width: 50%;">For menor que</td><td style="width: 50%;"> </td></tr><tr><td style="width: 50%;">For diferente de</td><td style="width: 50%;"> </td></tr><tr><td style="width: 50%;">Conter</td><td style="width: 50%;"> </td></tr><tr><td style="width: 50%;">Não conter</td><td style="width: 50%;"> </td></tr></tbody></table>
        
        <p class="callout success">É possível adicionar mais de um condição na mesma regra.</p>
    - Se é um novo formulário: regra será aplicada quando uma nova entrada no formulário estiver sendo criada.
    - Se é edição de formulário: regra será aplicada quando uma entrada no formulário estiver sendo alterada.

### Customização Javascript

Caso a customização desejada, não esteja disponível, ainda assim é possível programá-la utilizando javascript. Para mais detalhes, acesse o [capítulo](http://wiki.agilityflow.io/books/manual-de-customiza%C3%A7%C3%A3o/page/customiza%C3%A7%C3%A3o-javascript "Customização javascript") sobre essa opção.

# Label Dinâmica

Label Dinâmica é um campo de texto não editável, que é preenchido através de outro campo. Esse campo é muito útil, quando se tem um campo de lista de seleção (ou pesquisa com auto-completar) com uma fonte dinâmica e há a necessidade mostrar outros campos do formulário usado como fonte por esse campo.

No exemplo abaixo, o formulário tem uma lista de seleção de clientes. Os outros dois campos, são label dinâmicas com informações do formulário de cliente.

[![label_dinamica.gif](http://wiki.agilityflow.io/uploads/images/gallery/2019-02-Feb/label_dinamica.gif)](http://wiki.agilityflow.io/uploads/images/gallery/2019-02-Feb/label_dinamica.gif)

Ao mudar o campo de lista de seleção, a label dinâmica é preenchida automaticamente.

### Grupo de informações

Dentro das configurações, é possível alterar o [grupo de informação](http://wiki.agilityflow.io/books/manual-de-customiza%C3%A7%C3%A3o/page/divis%C3%A3o-e-agrupamento-dos-campos "Divisão e agrupamento dos campos") ao qual o campo foi atribuído no momento da criação.

### Nome de Apresentação

Mostra o nome de apresentação informado no momento da criação. Esse é o nome que será mostrado na tela para o usuário.

### Informações de ajuda

Nesse campo é possível incluir um texto que ajudará o usuário a preenche-lo. Abaixo, um exemplo de dois campos: um campo sem informações de ajuda e outro com esse campo configurado:

[![informacoes_ajuda.gif](http://wiki.agilityflow.io/uploads/images/gallery/2019-02-Feb/informacoes_ajuda.gif)](http://wiki.agilityflow.io/uploads/images/gallery/2019-02-Feb/informacoes_ajuda.gif)

### Preenchimento da Label Dinâmica

Aqui, estão as opções principais de configurações para a label dinâmica.

#### Preencher a label dinâmica ao alterar o campo

Nessa opção, apenas os campos Lista de Seleção com lista dinâmica, ou o campo Pesquisa com Auto Completar serão mostrados aqui. É esse campo que, ao ser alterado, preencherá a label dinâmica.

#### Campo de apresentação (Base de dados)

É o campo do formulário usado como fonte na lista de seleção (ou pesquisa com auto completar) será usado para o preenchimento.

### Regras de Visibilidade e desativação

Usando essas opções, é possível tornar um campo visível, invisível, ativo ou inativo, e definir quando uma dessas ações deve ocorrer. É possível adicionar várias regras para cada campo.

#### Descrição

É um texto que ajuda a identificar a regra que se está criando. Muito útil quando existem múltiplas regras.

#### Ação

##### Visível

O campo é mostrado na tela, caso esteja inserido para tal, nas configurações de tela.

##### Invisível

O campo é não é mostrado na tela, mesmo que esteja inserido para tal, nas configurações de tela.

#### A partir da etapa / Até a etapa

Em formulários com etapas, é possível estabelecer que uma regra será aplicada em alguma(s) etapa(s). Para isso, basta selecionar as etapas nos campos "a partir da etapa" e "até a etapa", para definir em que momento do fluxo essa regra vai ser aplicada.

#### Quando

Define em que momento a ação deve acontecer.

##### Sempre

É o padrão do formulário.

##### Condicional

- Tipo de condição  
    Para fazer um validação condicional, estão disponíveis as seguintes condições:  
    
    - Se o campo: compara um campo com um valor, ou com outro campo.  
        Abaixo, uma tabela com os operadores disponíveis para as comparações:  
          
        <table border="1" style="border-collapse: collapse; width: 100%;"><tbody><tr><td style="width: 50%;">**Comparação por valor**</td><td style="width: 50%;">**Comparação por outro campo**</td></tr><tr><td style="width: 50%;">For igual a</td><td style="width: 50%;">É igual ao campo</td></tr><tr><td style="width: 50%;">For maior ou igual a</td><td style="width: 50%;">É diferente do campo</td></tr><tr><td style="width: 50%;">For menor ou igual a </td><td style="width: 50%;"> </td></tr><tr><td style="width: 50%;">For maior que</td><td style="width: 50%;"> </td></tr><tr><td style="width: 50%;">For menor que</td><td style="width: 50%;"> </td></tr><tr><td style="width: 50%;">For diferente de</td><td style="width: 50%;"> </td></tr><tr><td style="width: 50%;">Conter</td><td style="width: 50%;"> </td></tr><tr><td style="width: 50%;">Não conter</td><td style="width: 50%;"> </td></tr></tbody></table>
        
        <p class="callout success">É possível adicionar mais de um condição na mesma regra.</p>
    - Se é um novo formulário: regra será aplicada quando uma nova entrada no formulário estiver sendo criada.
    - Se é edição de formulário: regra será aplicada quando uma entrada no formulário estiver sendo alterada.

# Upload

Esse campo é utilizado para o envio de arquivos.

### Grupo de informações

Dentro das configurações, é possível alterar o [grupo de informação](http://wiki.agilityflow.io/books/manual-de-customiza%C3%A7%C3%A3o/page/divis%C3%A3o-e-agrupamento-dos-campos "Divisão e agrupamento dos campos") ao qual o campo foi atribuído no momento da criação.

### Nome de Apresentação

Mostra o nome de apresentação informado no momento da criação. Esse é o nome que será mostrado na tela para o usuário.

### Informações de ajuda

Nesse campo é possível incluir um texto que ajudará o usuário a preenche-lo. Abaixo, um exemplo de dois campos: um campo sem informações de ajuda e outro com esse campo configurado:

[![informacoes_ajuda.gif](http://wiki.agilityflow.io/uploads/images/gallery/2019-02-Feb/informacoes_ajuda.gif)](http://wiki.agilityflow.io/uploads/images/gallery/2019-02-Feb/informacoes_ajuda.gif)

### Validação

Nessa parte, é possível configurar validações dos dados inseridos pelo usuário, garantindo um padrão de preenchimento.

#### Obrigatório

Caso marcado como "sim", não permite o salvamento do fomulário sem o preenchimento desse campo. Ao marcar como "sim" essa opção, são abertos duas outras opções:

##### Obrigatório mesmo que por algum motivo o campo esteja marcado como invisível?

Use essa opção para fazer um campo definido como obrigatório, deixar sua obrigatoriedade caso ele esteja [invisível](#bkmrk-%E2%A0-8).

##### Obrigatório a partir da etapa

Para os formulários com fluxo de etapas, é possível atrelar a obrigatoriedade de um campo à etapa em que se encontra o fluxo.

<iframe allowfullscreen="allowfullscreen" frameborder="0" height="425" src="https://player.vimeo.com/video/328685546" width="760"></iframe>

#### Extensão Permitida

É possível adicionar uma lista branca, com as extensões permitidas.

#### Extensão não permitida

É possível adicionar uma lista negra, com as extensões não permitidas.

#### Validação Customizada

##### Tipo de Validação

- Upload de no máximo X itens: é possível definir um limite de arquivos;
- Upload no mínimo X itens: é possível definir um mínimo de arquivos;
- Upload exatamente X itens: é possível definir uma quantidade específica de arquivos;

##### Validar a partir da etapa

Em formulários com etapas, é possível estabelecer que uma validação será aplicada em alguma(s) etapa(s). Para isso, basta selecionar a etapa no campo "validar a partir da etapa".

### Regras de Visibilidade e desativação

Usando essas opções, é possível tornar um campo visível, invisível, ativo ou inativo, e definir quando uma dessas ações deve ocorrer. É possível adicionar várias regras para cada campo.

#### Descrição

É um texto que ajuda a identificar a regra que se está criando. Muito útil quando existem múltiplas regras.

#### Ação

##### Ativar

Deixa o campo disponível para inserção de dados. É o estado padrão do campo.

##### Inativar

Deixa o campo indisponível para inserção de dados.

##### Visível

O campo é mostrado na tela, caso esteja inserido para tal, nas configurações de tela.

##### Invisível

O campo é não é mostrado na tela, mesmo que esteja inserido para tal, nas configurações de tela.

#### A partir da etapa / Até a etapa

Em formulários com etapas, é possível estabelecer que uma regra será aplicada em alguma(s) etapa(s). Para isso, basta selecionar as etapas nos campos "a partir da etapa" e "até a etapa", para definir em que momento do fluxo essa regra vai ser aplicada.

#### Quando

Define em que momento a ação deve acontecer.

##### Sempre

É o padrão do formulário.

##### Condicional

<div id="bkmrk-tipo-de-condi%E3%A7%E3%A3opa">- <span class="input-group">Tipo de condição  
    </span>Para fazer um validação condicional, estão disponíveis as seguintes condições:  
    
    - Se o campo: compara um campo com um valor, ou com outro campo.  
        Abaixo, uma tabela com os operadores disponíveis para as comparações:  
          
        <table border="1"><tbody><tr><td>**Comparação por valor**</td><td>**Comparação por outro campo**</td></tr><tr><td>For igual a</td><td>É igual ao campo</td></tr><tr><td>For maior ou igual a</td><td>É diferente do campo</td></tr><tr><td>For menor ou igual a </td><td> </td></tr><tr><td>For maior que</td><td> </td></tr><tr><td>For menor que</td><td> </td></tr><tr><td>For diferente de</td><td> </td></tr><tr><td>Conter</td><td> </td></tr><tr><td>Não conter</td><td> </td></tr></tbody></table>
        
        <p class="callout success">É possível adicionar mais de um condição na mesma regra.</p>
    - Se é um novo formulário: regra será aplicada quando uma nova entrada no formulário estiver sendo criada.
    - Se é edição de formulário: regra será aplicada quando uma entrada no formulário estiver sendo alterada.

</div>

# Lista de seleção (Combo)

Esse campo, permite que o usuário escolha uma opção pré-determinada.

#### [![lista_para_selecao.gif](http://wiki.agilityflow.io/uploads/images/gallery/2019-02-Feb/lista_para_selecao.gif)](http://wiki.agilityflow.io/uploads/images/gallery/2019-02-Feb/lista_para_selecao.gif)

### Grupo de informações

Dentro das configurações, é possível alterar o [grupo de informação](http://wiki.agilityflow.io/books/manual-de-customiza%C3%A7%C3%A3o/page/divis%C3%A3o-e-agrupamento-dos-campos "Divisão e agrupamento dos campos") ao qual o campo foi atribuído no momento da criação.

### Nome de Apresentação

Mostra o nome de apresentação informado no momento da criação. Esse é o nome que será mostrado na tela para o usuário.

### Coluna Banco de dados (SQL)

Esse é o nome interno, usado pelo sistema, a ser criado no banco de dados do agilityflow. É uma informação técnica e esse campo é preenchido automaticamente pelo sistema.

<p class="callout warning">Na maioria dos casos, você não precisa alterar o nome sugerido pelo sistema.</p>

Diferentemente do campo "Nome de Apresentação", esse campo não fica visível para o usuário.

> Para que serve o campo Coluna Banco de dados (SQL)?

Esse campo vai ser utilizado ao criar reports e dashboards. É através dele, que poderemos extrair informações e expor usando esses recursos do sistema.

### Informações de ajuda

Nesse campo é possível incluir um texto que ajudará o usuário a preenche-lo. Abaixo, um exemplo de dois campos: um campo sem informações de ajuda e outro com esse campo configurado:

[![informacoes_ajuda.gif](http://wiki.agilityflow.io/uploads/images/gallery/2019-02-Feb/informacoes_ajuda.gif)](http://wiki.agilityflow.io/uploads/images/gallery/2019-02-Feb/informacoes_ajuda.gif)

---

### Origem dos Dados

Como existe uma lista de opções pré-determinadas, é necessário definir a origem dos dados.

#### Origem dos Itens

São duas as possibilidades:

**1. Lista Dinâmica** <span style="color: #3366ff;">(Utilização recomendada)</span> **:** Nessa opção, os dados têm como origem um outro formulário. Ao selecionar esse outro formulário, é necessário informar qual o campo desse formulário será exibido.

**2. Lista Estática:** O usuário insere as opções nas configurações do campo. Com isso, o usuário que acessa o formulário não pode criar novas opções. Ao criar as opções, além do nome, é possível definir a ordem em que aparecerão na lista de seleção. Outra opção, é o Id Customizado (Banco de Dados). Essa opção, normalmente não precisa ser preenchido. Entretanto, em alguns casos, esse id pode ser customizado. Isso pode ser útil, para a criação de dashboard e reports, para montar mais facilmente as *queries*.

<p class="callout danger">Sugerimos que o campo de Lista de seleção (combo) não seja usado quando há muitas itens pois todas as opções desse campo são lidas quando a página é carregada. Se houver muitos itens, o carregamento da página pode ser afetado. Para esses casos, usar o campo [**Pesquisa com auto completar.**](http://wiki.agilityflow.io/books/manual-de-customiza%C3%A7%C3%A3o/page/pesquisa-com-auto-completar "Pesquisa com auto completar")</p>

#### **Configuração de uma <span style="color: #000000;">Lista Dinâmica</span>**

Abaixo estão descritos os campos básicos de preenchimento para definição de uma lista dinâmica.

Abra a tela de edição do campo e clique na aba **Origem dos Dados**

![](http://wiki.agilityflow.io/uploads/images/gallery/2019-04-Apr/scaled-840-0/image-1555598725240.png)

##### **Campos para preenchimento:**

##### Origem dos dados

Defina como "Lista Dinâmica"

##### Quando os dados serão carregados?

Quando a lista é dinâmica, é possível definir algumas opções relativas ao carregamento da lista. Esse carregamento pode ocorrer de duas maneiras.

**<span style="color: #808080;">No carregamento inicial (On PageLoad):</span>** Assim que o formulário é carregado, as opções da lista de seleção também são carregados imediatamente.

<span style="color: #808080;">**Na alteração do valor de um determinado campo (On Change):** </span>As opções só serão carregadas quando um determinado campo mudar. Isso é útil, para uma lista de seleção selecionar níveis de outra lista de seleção. Ex: seleciona-se primeiro o estado e só depois, é selecionada a cidade. Esse campo Lista de Cidade, apenas é carregado quando o outro campo Lista de Estados é alterado. Para isso, é necessário também adicionar uma[ condição na base de dados](#h_50356803591550685996742).

##### Qual será a Base de dados

É o formulário que servirá de fonte para a Lista Dinâmica.

##### Campo de apresentação (Base de dados)

Essa é a informação que será apresentada para o usuário na apresentação do combo. Esse campo é referente ao formulário que foi selecionado no campo [Qual será a Base de dados](#h_695508394161550686141083).

##### Ordenar os itens pelo campo

A ordenação padrão do itens do combo é alfabética. Entretanto há casos onde queremos alterar essa ordem. Para isso, podemos utilizar um segundo campo como critério de ordenação, que não o campo de exibição. Como exemplo, vamos usar um formulário que só tem o campo nome, e os seguintes dados?

<table border="1" id="bkmrk-prioridade-alta-baix" style="border-collapse: collapse; width: 0%; height: 120px;"><tbody><tr><td style="width: 100%;">**Prioridade**</td></tr><tr><td style="width: 100%;">Alta</td></tr><tr><td style="width: 100%;">Baixa</td></tr><tr><td style="width: 100%;">Média</td></tr></tbody></table>

Ao usarmos o campo prioridade como critério de ordenação, os itens serão apresentados na ordem alfabética (Alta, Baixa e Média), quando o mais intuitivo seria apresentar a ordem como (Baixa, Média, Alta).

Para isso, podemos criar um campo chamado 'Ordem' nesse formulário, e incluir números. Dessa forma:

<table border="1" id="bkmrk-prioridade-ordem-alt" style="border-collapse: collapse; width: 100%;"><tbody><tr><td style="width: 50%;">**Prioridade**</td><td style="width: 50%;">**Ordem**</td></tr><tr><td style="width: 50%;">Alta</td><td style="width: 50%;">3</td></tr><tr><td style="width: 50%;">Baixa</td><td style="width: 50%;">2</td></tr><tr><td style="width: 50%;">Média</td><td style="width: 50%;">1</td></tr></tbody></table>

Feito isso, o campo Campo de Apresentação continua sendo o campo 'Prioridade', mas o campo selecionado para ordenação é o 'Ordem'. Com isso, os itens serão apresentados na ordem (Baixa, Média e Alta).

##### Condição na Base de Dados

Na condição, pode-se escolher um dos campos da [Base de dados](#h_695508394161550686141083) para ser usado em uma comparação por valor (É igual a, É diferente de, Conter e Não conter) ou por outro campo (É igual ao campo ou É diferente do campo) desse formulário.

<iframe allowfullscreen="allowfullscreen" frameborder="0" height="425" src="https://player.vimeo.com/video/318536339" width="760"></iframe>

<div id="bkmrk--3"></div><div id="bkmrk--4"></div>##### <span style="color: #3366ff;">**Caso esse formulário possa ser usado como tabela filha de outro formulário, essas duas opções são habilitadas:**</span>

##### Esse campo pode ser Relacionado a um formulário Pai e preenchido automaticamente pelo ID (Primary Key) do formulário pai

Caso esse formulário possa ser incluído como filho de um formulário pai, ative essa opção e selecione qual formulário que preencherá automaticamente esse campo. Para mais detalhes sobre esse funcionamento, veja detalhes na configuração de [Formulários Relacionados](http://wiki.agilityflow.io/books/manual-de-customiza%C3%A7%C3%A3o/page/formul%C3%A1rios-relacionados "Formulários Relacionados").

##### Esconder campo quando o formulário for aberto através do formulário pai

Quando esse formulário estiver incluído em um formulário pai, ative essa opção para que esse campo fique oculto, mesmo que esteja configurado para ser exibido na tela.

---

### Validação

Nessa parte, é possível configurar validações dos dados inseridos pelo usuário, garantindo um padrão de preenchimento.

> Como deixar um campo obrigatório?

#### Obrigatório

Caso marcado como "sim", não permite o salvamento do fomulário sem o preenchimento desse campo. Ao marcar como "sim" essa opção, são abertos duas outras opções:

##### Obrigatório mesmo que por algum motivo o campo esteja marcado como invisível?

Use essa opção para fazer um campo definido como obrigatório, deixar sua obrigatoriedade caso ele esteja [invisível](#bkmrk-%E2%A0-8).

##### Obrigatório a partir da etapa

Para os formulários com fluxo de etapas, é possível atrelar a obrigatoriedade de um campo à etapa em que se encontra o fluxo.

#### Valor do campo deve ser único em relação a todos os registros

O sistema, valida a inserção do campo, com os registros do mesmo campo, já salvos em outros formulários. Por exemplo, talvez exista uma necessidade de validação de um e-mail para o cadastro de um cliente. Caso o e-mail digitado já conste em outro registro, não será permitido o salvamento do formulário.

<iframe allowfullscreen="allowfullscreen" frameborder="0" height="425" src="https://player.vimeo.com/video/328685546" width="760"></iframe>

#### Valor do campo deve ser único em relação ao formulário PAI

Caso o formulário tenha uma relação com outro formulário (chamamos de formulário Pai), será validado que os dados inseridos são únicos, mas apenas para o registro filho.

#### Valor do campo deve ser único em relação APENAS ao CAMPO relacionado do formulário PAI

Caso haja, mais de um campo no formulário pai, relacionado ao mesmo formulário filho, a validação de valor único, ocorre apenas par cada campo do relacionamento.

Abaixo, um vídeo explica essas 3 últimas opções:

<iframe allowfullscreen="allowfullscreen" frameborder="0" height="425" src="https://player.vimeo.com/video/318250365" width="760"></iframe>

### Regras de Visibilidade e desativação

Usando essas opções, é possível tornar um campo visível, invisível, ativo ou inativo, e definir quando uma dessas ações deve ocorrer. É possível adicionar várias regras para cada campo.

#### Descrição

É um texto que ajuda a identificar a regra que se está criando. Muito útil quando existem múltiplas regras.

#### Ação

##### Ativar

Deixa o campo disponível para inserção de dados. É o estado padrão do campo.

##### Inativar

Deixa o campo indisponível para inserção de dados.

##### Visível

O campo é mostrado na tela, caso esteja inserido para tal, nas configurações de tela.

##### Invisível

O campo é não é mostrado na tela, mesmo que esteja inserido para tal, nas configurações de tela.

#### A partir da etapa / Até a etapa

Em formulários com etapas, é possível estabelecer que uma regra será aplicada em alguma(s) etapa(s). Para isso, basta selecionar as etapas nos campos "a partir da etapa" e "até a etapa", para definir em que momento do fluxo essa regra vai ser aplicada.

#### Quando

Define em que momento a ação deve acontecer.

##### Sempre

É o padrão do formulário.

##### Condicional

- Tipo de condição  
    Para fazer um validação condicional, estão disponíveis as seguintes condições:  
    
    - Se o campo: compara um campo com um valor, ou com outro campo.  
        Abaixo, uma tabela com os operadores disponíveis para as comparações:  
          
        <table border="1" style="border-collapse: collapse; width: 100%;"><tbody><tr><td style="width: 50%;">**Comparação por valor**</td><td style="width: 50%;">**Comparação por outro campo**</td></tr><tr><td style="width: 50%;">For igual a</td><td style="width: 50%;">É igual ao campo</td></tr><tr><td style="width: 50%;">For maior ou igual a</td><td style="width: 50%;">É diferente do campo</td></tr><tr><td style="width: 50%;">For menor ou igual a </td><td style="width: 50%;"> </td></tr><tr><td style="width: 50%;">For maior que</td><td style="width: 50%;"> </td></tr><tr><td style="width: 50%;">For menor que</td><td style="width: 50%;"> </td></tr><tr><td style="width: 50%;">For diferente de</td><td style="width: 50%;"> </td></tr><tr><td style="width: 50%;">Conter</td><td style="width: 50%;"> </td></tr><tr><td style="width: 50%;">Não conter</td><td style="width: 50%;"> </td></tr></tbody></table>
        
        <p class="callout success">É possível adicionar mais de um condição na mesma regra.</p>
    - Se é um novo formulário: regra será aplicada quando uma nova entrada no formulário estiver sendo criada.
    - Se é edição de formulário: regra será aplicada quando uma entrada no formulário estiver sendo alterada.

### Customização Javascript

Caso a customização desejada, não esteja disponível, ainda assim é possível programá-la utilizando javascript. Para mais detalhes, acesse o [capítulo](http://wiki.agilityflow.io/books/manual-de-customiza%C3%A7%C3%A3o/page/customiza%C3%A7%C3%A3o-javascript "Customização javascript") sobre essa opção.

# Pesquisa com auto completar

Esse campo, é muito similar ao campo [Lista de Seleção](http://wiki.agilityflow.io/books/manual-de-customiza%C3%A7%C3%A3o/page/lista-de-sele%C3%A7%C3%A3o-%28combo%29 "Lista de seleção (Combo)") e permite que o usuário escolha uma opção pré-determinada.

Abaixo é possível comparar ambos campos, com a mesma fonte dinâmica de dados:

[![lista_auto_completar.gif](http://wiki.agilityflow.io/uploads/images/gallery/2019-02-Feb/lista_auto_completar.gif)](http://wiki.agilityflow.io/uploads/images/gallery/2019-02-Feb/lista_auto_completar.gif)

### Grupo de informações

Dentro das configurações, é possível alterar o [grupo de informação](http://wiki.agilityflow.io/books/manual-de-customiza%C3%A7%C3%A3o/page/divis%C3%A3o-e-agrupamento-dos-campos "Divisão e agrupamento dos campos") ao qual o campo foi atribuído no momento da criação.

### Nome de Apresentação

Mostra o nome de apresentação informado no momento da criação. Esse é o nome que será mostrado na tela para o usuário.

### Coluna Banco de dados (SQL)

Esse é o nome interno, usado pelo sistema, a ser criado no banco de dados do agilityflow. É uma informação técnica e esse campo é preenchido automaticamente pelo sistema.

<p class="callout warning">Na maioria dos casos, você não precisa alterar o nome sugerido pelo sistema.</p>

Diferentemente do campo "Nome de Apresentação", esse campo não fica visível para o usuário.

> Para que serve o campo Coluna Banco de dados (SQL)?

Esse campo vai ser utilizado ao criar reports e dashboards. É através dele, que poderemos extrair informações e expor usando esses recursos do sistema.

### Informações de ajuda

Nesse campo é possível incluir um texto que ajudará o usuário a preenche-lo. Abaixo, um exemplo de dois campos: um campo sem informações de ajuda e outro com esse campo configurado:

[![informacoes_ajuda.gif](http://wiki.agilityflow.io/uploads/images/gallery/2019-02-Feb/informacoes_ajuda.gif)](http://wiki.agilityflow.io/uploads/images/gallery/2019-02-Feb/informacoes_ajuda.gif)

---

### Origem dos Dados

Como existe uma lista de opções pré-determinadas, é necessário definir a origem dos dados.

#### Origem dos Itens

São duas as possibilidades:

**1. Lista Dinâmica** <span style="color: #3366ff;">(Utilização recomendada)</span> **:** Nessa opção, os dados têm como origem um outro formulário. Ao selecionar esse outro formulário, é necessário informar qual o campo desse formulário será exibido.

**2. Lista Estática:** O usuário insere as opções nas configurações do campo. Com isso, o usuário que acessa o formulário não pode criar novas opções. Ao criar as opções, além do nome, é possível definir a ordem em que aparecerão na lista de seleção. Outra opção, é o Id Customizado (Banco de Dados). Essa opção, normalmente não precisa ser preenchido. Entretanto, em alguns casos, esse id pode ser customizado. Isso pode ser útil, para a criação de dashboard e reports, para montar mais facilmente as *queries*.

#### **Configuração de uma <span style="color: #000000;">Lista Dinâmica </span>**

Abaixo estão descritos os campos básicos de preenchimento para definição de uma lista dinâmica.

Abra a tela de edição do campo e clique na aba **Origem dos Dados**

![](http://wiki.agilityflow.io/uploads/images/gallery/2019-04-Apr/scaled-840-0/image-1555598725240.png)

##### **Campos para preenchimento:**

##### Origem dos dados

Defina como "Lista Dinâmica"

##### Quando os dados serão carregados?

Quando a lista é dinâmica, é possível definir algumas opções relativas ao carregamento da lista. Esse carregamento pode ocorrer de duas maneiras.

**<span style="color: #808080;">No carregamento inicial (On PageLoad):</span>** Assim que o formulário é carregado, as opções da lista de seleção também são carregados imediatamente.

<span style="color: #808080;">**Na alteração do valor de um determinado campo (On Change):** </span>As opções só serão carregadas quando um determinado campo mudar. Isso é útil, para uma lista de seleção selecionar níveis de outra lista de seleção. Ex: seleciona-se primeiro o estado e só depois, é selecionada a cidade. Esse campo Lista de Cidade, apenas é carregado quando o outro campo Lista de Estados é alterado. Para isso, é necessário também adicionar uma[ condição na base de dados](#h_50356803591550685996742).

##### Qual será a Base de dados

É o formulário que servirá de fonte para a Lista Dinâmica.

##### Campo de apresentação (Base de dados)

Essa é a informação que será apresentada para o usuário na apresentação do combo. Esse campo é referente ao formulário que foi selecionado no campo [Qual será a Base de dados](#h_695508394161550686141083).

##### Ordenar os itens pelo campo

A ordenação padrão do itens do combo é alfabética. Entretanto há casos onde queremos alterar essa ordem. Para isso, podemos utilizar um segundo campo como critério de ordenação, que não o campo de exibição. Como exemplo, vamos usar um formulário que só tem o campo nome, e os seguintes dados?

<table border="1" id="bkmrk-prioridade-alta-baix" style="border-collapse: collapse; width: 0%; height: 120px;"><tbody><tr><td style="width: 100%;">**Prioridade**</td></tr><tr><td style="width: 100%;">Alta</td></tr><tr><td style="width: 100%;">Baixa</td></tr><tr><td style="width: 100%;">Média</td></tr></tbody></table>

Ao usarmos o campo prioridade como critério de ordenação, os itens serão apresentados na ordem alfabética (Alta, Baixa e Média), quando o mais intuitivo seria apresentar a ordem como (Baixa, Média, Alta).

Para isso, podemos criar um campo chamado 'Ordem' nesse formulário, e incluir números. Dessa forma:

<table border="1" id="bkmrk-prioridade-ordem-alt" style="border-collapse: collapse; width: 100%;"><tbody><tr><td style="width: 50%;">**Prioridade**</td><td style="width: 50%;">**Ordem**</td></tr><tr><td style="width: 50%;">Alta</td><td style="width: 50%;">3</td></tr><tr><td style="width: 50%;">Baixa</td><td style="width: 50%;">2</td></tr><tr><td style="width: 50%;">Média</td><td style="width: 50%;">1</td></tr></tbody></table>

Feito isso, o campo Campo de Apresentação continua sendo o campo 'Prioridade', mas o campo selecionado para ordenação é o 'Ordem'. Com isso, os itens serão apresentados na ordem (Baixa, Média e Alta).

##### Condição na Base de Dados

Na condição, pode-se escolher um dos campos da [Base de dados](#h_695508394161550686141083) para ser usado em uma comparação por valor (É igual a, É diferente de, Conter e Não conter) ou por outro campo (É igual ao campo ou É diferente do campo) desse formulário.

<p class="callout success">O vídeo abaixo mostra a configuração da lista de seleção, mas também se aplica para o campo Pesquisa com Auto completar. O processo de configuração e o comportamento é idêntico.</p>

<div id="bkmrk--3"><iframe allowfullscreen="allowfullscreen" data-mce-fragment="1" frameborder="0" height="425" src="https://player.vimeo.com/video/318536339" width="760"></iframe>

</div><div id="bkmrk--4"></div>##### <span style="color: #3366ff;">**Caso esse formulário possa ser usado como tabela filha de outro formulário, essas duas opções são habilitadas:**</span>

##### Esse campo pode ser Relacionado a um formulário Pai e preenchido automaticamente pelo ID (Primary Key) do formulário pai

Caso esse formulário possa ser incluído como filho de um formulário pai, ative essa opção e selecione qual formulário que preencherá automaticamente esse campo. Para mais detalhes sobre esse funcionamento, veja detalhes na configuração de [Formulários Relacionados](http://wiki.agilityflow.io/books/manual-de-customiza%C3%A7%C3%A3o/page/formul%C3%A1rios-relacionados "Formulários Relacionados").

##### Esconder campo quando o formulário for aberto através do formulário pai

Quando esse formulário estiver incluído em um formulário pai, ative essa opção para que esse campo fique oculto, mesmo que esteja configurado para ser exibido na tela.

---

### Validação

Nessa parte, é possível configurar validações dos dados inseridos pelo usuário, garantindo um padrão de preenchimento.

> Como deixar um campo obrigatório?

#### Obrigatório

Caso marcado como "sim", não permite o salvamento do fomulário sem o preenchimento desse campo. Ao marcar como "sim" essa opção, são abertos duas outras opções:

##### Obrigatório mesmo que por algum motivo o campo esteja marcado como invisível?

Use essa opção para fazer um campo definido como obrigatório, deixar sua obrigatoriedade caso ele esteja [invisível](#bkmrk-%E2%A0-8).

##### Obrigatório a partir da etapa

Para os formulários com fluxo de etapas, é possível atrelar a obrigatoriedade de um campo à etapa em que se encontra o fluxo.

#### Valor do campo deve ser único em relação a todos os registros

O sistema, valida a inserção do campo, com os registros do mesmo campo, já salvos em outros formulários. Por exemplo, talvez exista uma necessidade de validação de um e-mail para o cadastro de um cliente. Caso o e-mail digitado já conste em outro registro, não será permitido o salvamento do formulário.

<iframe allowfullscreen="allowfullscreen" frameborder="0" height="425" src="https://player.vimeo.com/video/328685546" width="760"></iframe>

#### Valor do campo deve ser único em relação ao formulário PAI

Caso o formulário tenha uma relação com outro formulário (chamamos de formulário Pai), será validado que os dados inseridos são únicos, mas apenas para o registro filho.

#### Valor do campo deve ser único em relação APENAS ao CAMPO relacionado do formulário PAI

Caso haja, mais de um campo no formulário pai, relacionado ao mesmo formulário filho, a validação de valor único, ocorre apenas par cada campo do relacionamento.

Abaixo, um vídeo explica essas 3 últimas opções:

<iframe allowfullscreen="allowfullscreen" frameborder="0" height="425" src="https://player.vimeo.com/video/318250365" width="760"></iframe>

### Regras de Visibilidade e desativação

Usando essas opções, é possível tornar um campo visível, invisível, ativo ou inativo, e definir quando uma dessas ações deve ocorrer. É possível adicionar várias regras para cada campo.

#### Descrição

É um texto que ajuda a identificar a regra que se está criando. Muito útil quando existem múltiplas regras.

#### Ação

##### Ativar

Deixa o campo disponível para inserção de dados. É o estado padrão do campo.

##### Inativar

Deixa o campo indisponível para inserção de dados.

##### Visível

O campo é mostrado na tela, caso esteja inserido para tal, nas configurações de tela.

##### Invisível

O campo é não é mostrado na tela, mesmo que esteja inserido para tal, nas configurações de tela.

#### A partir da etapa / Até a etapa

Em formulários com etapas, é possível estabelecer que uma regra será aplicada em alguma(s) etapa(s). Para isso, basta selecionar as etapas nos campos "a partir da etapa" e "até a etapa", para definir em que momento do fluxo essa regra vai ser aplicada.

#### Quando

Define em que momento a ação deve acontecer.

##### Sempre

É o padrão do formulário.

##### Condicional

- Tipo de condição  
    Para fazer um validação condicional, estão disponíveis as seguintes condições:  
    
    - Se o campo: compara um campo com um valor, ou com outro campo.  
        Abaixo, uma tabela com os operadores disponíveis para as comparações:  
          
        <table border="1" style="border-collapse: collapse; width: 100%;"><tbody><tr><td style="width: 50%;">**Comparação por valor**</td><td style="width: 50%;">**Comparação por outro campo**</td></tr><tr><td style="width: 50%;">For igual a</td><td style="width: 50%;">É igual ao campo</td></tr><tr><td style="width: 50%;">For maior ou igual a</td><td style="width: 50%;">É diferente do campo</td></tr><tr><td style="width: 50%;">For menor ou igual a </td><td style="width: 50%;"> </td></tr><tr><td style="width: 50%;">For maior que</td><td style="width: 50%;"> </td></tr><tr><td style="width: 50%;">For menor que</td><td style="width: 50%;"> </td></tr><tr><td style="width: 50%;">For diferente de</td><td style="width: 50%;"> </td></tr><tr><td style="width: 50%;">Conter</td><td style="width: 50%;"> </td></tr><tr><td style="width: 50%;">Não conter</td><td style="width: 50%;"> </td></tr></tbody></table>
        
        <p class="callout success">É possível adicionar mais de um condição na mesma regra.</p>
    - Se é um novo formulário: regra será aplicada quando uma nova entrada no formulário estiver sendo criada.
    - Se é edição de formulário: regra será aplicada quando uma entrada no formulário estiver sendo alterada.

### Customização Javascript

Caso a customização desejada, não esteja disponível, ainda assim é possível programá-la utilizando javascript. Para mais detalhes, acesse o [capítulo](http://wiki.agilityflow.io/books/manual-de-customiza%C3%A7%C3%A3o/page/customiza%C3%A7%C3%A3o-javascript "Customização javascript") sobre essa opção.

# Checkbox (Único)

Esse campo permite o usuário responder a uma pergunta cuja resposta tem duas opções.

### Grupo de informações

Dentro das configurações, é possível alterar o [grupo de informação](http://wiki.agilityflow.io/books/manual-de-customiza%C3%A7%C3%A3o/page/divis%C3%A3o-e-agrupamento-dos-campos "Divisão e agrupamento dos campos") ao qual o campo foi atribuído no momento da criação.

### Nome de Apresentação

Mostra o nome de apresentação informado no momento da criação. Esse é o nome que será mostrado na tela para o usuário.

### Texto ao lado do Checkbox

Nesse campo, é possível definir o texto quando o campo está marcado, e quando o campo está desmarcado. O texto escolhido quando o campo está marcado, será mostrado na tela, enquanto o texto do campo quando está desmarcado, apenas será mostrado na listagem e no filtro de dados.

![](http://wiki.agilityflow.io/uploads/images/gallery/2019-02-Feb/scaled-840-0/image-1550697051924.png)

#### Quando marcado

Texto a ser exibido ao lado do campo. Quando estiver marcado, esse texto será mostrado na listagem de dados.

![](http://wiki.agilityflow.io/uploads/images/gallery/2019-02-Feb/scaled-840-0/image-1550696926304.png)

#### Quando desmarcado

Esse texto não será exibido quando estiver desmarcado, mas será mostrado na listagem de dados.

![](http://wiki.agilityflow.io/uploads/images/gallery/2019-02-Feb/scaled-840-0/image-1550697002065.png)

### Coluna Banco de dados (SQL)

Esse é o nome interno, usado pelo sistema, a ser criado no banco de dados do agilityflow. É uma informação técnica e esse campo é preenchido automaticamente pelo sistema.

<p class="callout warning">Na maioria dos casos, você não precisa alterar o nome sugerido pelo sistema.</p>

Diferentemente do campo "Nome de Apresentação", esse campo não fica visível para o usuário.

> Para que serve o campo Coluna Banco de dados (SQL)?

Esse campo vai ser utilizado ao criar reports e dashboards. É através dele, que poderemos extrair informações e expor usando esses recursos do sistema.

### Informações de ajuda

Nesse campo é possível incluir um texto que ajudará o usuário a preenche-lo. Abaixo, um exemplo de dois campos: um campo sem informações de ajuda e outro com esse campo configurado:

[![informacoes_ajuda.gif](http://wiki.agilityflow.io/uploads/images/gallery/2019-02-Feb/informacoes_ajuda.gif)](http://wiki.agilityflow.io/uploads/images/gallery/2019-02-Feb/informacoes_ajuda.gif)

### Validação

Nessa parte, é possível configurar validações dos dados inseridos pelo usuário, garantindo um padrão de preenchimento.

> Como deixar um campo obrigatório?

#### Obrigatório

Caso marcado como "sim", não permite o salvamento do fomulário sem o preenchimento desse campo. Ao marcar como "sim" essa opção, são abertos duas outras opções:

##### Obrigatório mesmo que por algum motivo o campo esteja marcado como invisível?

Use essa opção para fazer um campo definido como obrigatório, deixar sua obrigatoriedade caso ele esteja [invisível](#bkmrk-%E2%A0-8).

##### Obrigatório a partir da etapa

Para os formulários com fluxo de etapas, é possível atrelar a obrigatoriedade de um campo à etapa em que se encontra o fluxo.

<iframe allowfullscreen="allowfullscreen" frameborder="0" height="425" src="https://player.vimeo.com/video/328685546" width="760"></iframe>

### Regras de Visibilidade e desativação

Usando essas opções, é possível tornar um campo visível, invisível, ativo ou inativo, e definir quando uma dessas ações deve ocorrer. É possível adicionar várias regras para cada campo.

#### Descrição

É um texto que ajuda a identificar a regra que se está criando. Muito útil quando existem múltiplas regras.

#### Ação

##### Ativar

Deixa o campo disponível para inserção de dados. É o estado padrão do campo.

##### Inativar

Deixa o campo indisponível para inserção de dados.

##### Visível

O campo é mostrado na tela, caso esteja inserido para tal, nas configurações de tela.

##### Invisível

O campo é não é mostrado na tela, mesmo que esteja inserido para tal, nas configurações de tela.

#### A partir da etapa / Até a etapa

Em formulários com etapas, é possível estabelecer que uma regra será aplicada em alguma(s) etapa(s). Para isso, basta selecionar as etapas nos campos "a partir da etapa" e "até a etapa", para definir em que momento do fluxo essa regra vai ser aplicada.

#### Quando

Define em que momento a ação deve acontecer.

##### Sempre

É o padrão do formulário.

##### Condicional

- Tipo de condição  
    Para fazer um validação condicional, estão disponíveis as seguintes condições:  
    
    - Se o campo: compara um campo com um valor, ou com outro campo.  
        Abaixo, uma tabela com os operadores disponíveis para as comparações:  
          
        <table border="1" style="border-collapse: collapse; width: 100%;"><tbody><tr><td style="width: 50%;">**Comparação por valor**</td><td style="width: 50%;">**Comparação por outro campo**</td></tr><tr><td style="width: 50%;">For igual a</td><td style="width: 50%;">É igual ao campo</td></tr><tr><td style="width: 50%;">For maior ou igual a</td><td style="width: 50%;">É diferente do campo</td></tr><tr><td style="width: 50%;">For menor ou igual a </td><td style="width: 50%;"> </td></tr><tr><td style="width: 50%;">For maior que</td><td style="width: 50%;"> </td></tr><tr><td style="width: 50%;">For menor que</td><td style="width: 50%;"> </td></tr><tr><td style="width: 50%;">For diferente de</td><td style="width: 50%;"> </td></tr><tr><td style="width: 50%;">Conter</td><td style="width: 50%;"> </td></tr><tr><td style="width: 50%;">Não conter</td><td style="width: 50%;"> </td></tr></tbody></table>
        
        <p class="callout success">É possível adicionar mais de um condição na mesma regra.</p>
    - Se é um novo formulário: regra será aplicada quando uma nova entrada no formulário estiver sendo criada.
    - Se é edição de formulário: regra será aplicada quando uma entrada no formulário estiver sendo alterada.

### Customização Javascript

Caso a customização desejada, não esteja disponível, ainda assim é possível programá-la utilizando javascript. Para mais detalhes, acesse o [capítulo](http://wiki.agilityflow.io/books/manual-de-customiza%C3%A7%C3%A3o/page/customiza%C3%A7%C3%A3o-javascript "Customização javascript") sobre essa opção.

# Lista aberta com escolha única (Radio)

Esse campo é muito similar ao tipo [Lista de Seleção](http://wiki.agilityflow.io/books/manual-de-customiza%C3%A7%C3%A3o/page/lista-de-sele%C3%A7%C3%A3o-%28combo%29 "Lista de seleção (Combo)"), mudando apenas a forma como é apresentado. Abaixo, um exemplo do campo radio (Lista aberta com escolha única):

![](http://wiki.agilityflow.io/uploads/images/gallery/2019-03-Mar/scaled-840-0/image-1553779733129.png)

### Grupo de informações

Dentro das configurações, é possível alterar o [grupo de informação](http://wiki.agilityflow.io/books/manual-de-customiza%C3%A7%C3%A3o/page/divis%C3%A3o-e-agrupamento-dos-campos "Divisão e agrupamento dos campos") ao qual o campo foi atribuído no momento da criação.

### Nome de Apresentação

Mostra o nome de apresentação informado no momento da criação. Esse é o nome que será mostrado na tela para o usuário.

### Coluna Banco de dados (SQL)

Esse é o nome interno, usado pelo sistema, a ser criado no banco de dados do agilityflow. É uma informação técnica e esse campo é preenchido automaticamente pelo sistema.

<p class="callout warning">Na maioria dos casos, você não precisa alterar o nome sugerido pelo sistema.</p>

Diferentemente do campo "Nome de Apresentação", esse campo não fica visível para o usuário.

> Para que serve o campo Coluna Banco de dados (SQL)?

Esse campo vai ser utilizado ao criar reports e dashboards. É através dele, que poderemos extrair informações e expor usando esses recursos do sistema.

### Informações de ajuda

Nesse campo é possível incluir um texto que ajudará o usuário a preenche-lo. Abaixo, um exemplo de dois campos: um campo sem informações de ajuda e outro com esse campo configurado:

[![informacoes_ajuda.gif](http://wiki.agilityflow.io/uploads/images/gallery/2019-02-Feb/informacoes_ajuda.gif)](http://wiki.agilityflow.io/uploads/images/gallery/2019-02-Feb/informacoes_ajuda.gif)

---

### Origem dos Dados

Como existe uma lista de opções pré-determinadas, é necessário definir a origem dos dados.

#### Origem dos Itens

São duas as possibilidades:

**1. Lista Dinâmica** <span style="color: #3366ff;">(Utilização recomendada)</span> **:** Nessa opção, os dados têm como origem um outro formulário. Ao selecionar esse outro formulário, é necessário informar qual o campo desse formulário será exibido.

**2. Lista Estática:** O usuário insere as opções nas configurações do campo. Com isso, o usuário que acessa o formulário não pode criar novas opções. Ao criar as opções, além do nome, é possível definir a ordem em que aparecerão na lista de seleção. Outra opção, é o Id Customizado (Banco de Dados). Essa opção, normalmente não precisa ser preenchido. Entretanto, em alguns casos, esse id pode ser customizado. Isso pode ser útil, para a criação de dashboard e reports, para montar mais facilmente as *queries*.

#### **Configuração de uma <span style="color: #000000;">Lista Dinâmica</span>**

Abaixo estão descritos os campos básicos de preenchimento para definição de uma lista dinâmica.

Abra a tela de edição do campo e clique na aba **Origem dos Dados**

![](http://wiki.agilityflow.io/uploads/images/gallery/2019-04-Apr/scaled-840-0/image-1555598725240.png)

##### **Campos para preenchimento:**

##### Origem dos dados

Defina como "Lista Dinâmica"

##### Quando os dados serão carregados?

Quando a lista é dinâmica, é possível definir algumas opções relativas ao carregamento da lista. Esse carregamento pode ocorrer de duas maneiras.

**<span style="color: #808080;">No carregamento inicial (On PageLoad):</span>** Assim que o formulário é carregado, as opções da lista de seleção também são carregados imediatamente.

<span style="color: #808080;">**Na alteração do valor de um determinado campo (On Change):** </span>As opções só serão carregadas quando um determinado campo mudar. Isso é útil, para uma lista de seleção selecionar níveis de outra lista de seleção. Ex: seleciona-se primeiro o estado e só depois, é selecionada a cidade. Esse campo Lista de Cidade, apenas é carregado quando o outro campo Lista de Estados é alterado. Para isso, é necessário também adicionar uma[ condição na base de dados](#h_50356803591550685996742).

##### Qual será a Base de dados

É o formulário que servirá de fonte para a Lista Dinâmica.

##### Campo de apresentação (Base de dados)

Essa é a informação que será apresentada para o usuário na apresentação do combo. Esse campo é referente ao formulário que foi selecionado no campo [Qual será a Base de dados](#h_695508394161550686141083).

##### Ordenar os itens pelo campo

A ordenação padrão do itens do combo é alfabética. Entretanto há casos onde queremos alterar essa ordem. Para isso, podemos utilizar um segundo campo como critério de ordenação, que não o campo de exibição. Como exemplo, vamos usar um formulário que só tem o campo nome, e os seguintes dados?

<table border="1" id="bkmrk-prioridade-alta-baix" style="border-collapse: collapse; width: 0%; height: 120px;"><tbody><tr><td style="width: 100%;">**Prioridade**</td></tr><tr><td style="width: 100%;">Alta</td></tr><tr><td style="width: 100%;">Baixa</td></tr><tr><td style="width: 100%;">Média</td></tr></tbody></table>

Ao usarmos o campo prioridade como critério de ordenação, os itens serão apresentados na ordem alfabética (Alta, Baixa e Média), quando o mais intuitivo seria apresentar a ordem como (Baixa, Média, Alta).

Para isso, podemos criar um campo chamado 'Ordem' nesse formulário, e incluir números. Dessa forma:

<table border="1" id="bkmrk-prioridade-ordem-alt" style="border-collapse: collapse; width: 100%;"><tbody><tr><td style="width: 50%;">**Prioridade**</td><td style="width: 50%;">**Ordem**</td></tr><tr><td style="width: 50%;">Alta</td><td style="width: 50%;">3</td></tr><tr><td style="width: 50%;">Baixa</td><td style="width: 50%;">2</td></tr><tr><td style="width: 50%;">Média</td><td style="width: 50%;">1</td></tr></tbody></table>

Feito isso, o campo Campo de Apresentação continua sendo o campo 'Prioridade', mas o campo selecionado para ordenação é o 'Ordem'. Com isso, os itens serão apresentados na ordem (Baixa, Média e Alta).

##### Condição na Base de Dados

Na condição, pode-se escolher um dos campos da [Base de dados](#h_695508394161550686141083) para ser usado em uma comparação por valor (É igual a, É diferente de, Conter e Não conter) ou por outro campo (É igual ao campo ou É diferente do campo) desse formulário.

<p class="callout success">O vídeo abaixo mostra a configuração da lista de seleção, mas também se aplica para o campo Lista aberta com escolha única (Radio). O processo de configuração e o comportamento é idêntico.</p>

<div id="bkmrk--3"><iframe allowfullscreen="allowfullscreen" frameborder="0" height="425" src="https://player.vimeo.com/video/318536339" width="760"></iframe>

</div><div id="bkmrk--4"></div><div id="bkmrk--5"></div>---

### Validação

Nessa parte, é possível configurar validações dos dados inseridos pelo usuário, garantindo um padrão de preenchimento.

> Como deixar um campo obrigatório?

#### Obrigatório

Caso marcado como "sim", não permite o salvamento do fomulário sem o preenchimento desse campo. Ao marcar como "sim" essa opção, são abertos duas outras opções:

##### Obrigatório mesmo que por algum motivo o campo esteja marcado como invisível?

Use essa opção para fazer um campo definido como obrigatório, deixar sua obrigatoriedade caso ele esteja [invisível](#bkmrk-%E2%A0-8).

##### Obrigatório a partir da etapa

Para os formulários com fluxo de etapas, é possível atrelar a obrigatoriedade de um campo à etapa em que se encontra o fluxo.

#### Valor do campo deve ser único em relação a todos os registros

O sistema, valida a inserção do campo, com os registros do mesmo campo, já salvos em outros formulários. Por exemplo, talvez exista uma necessidade de validação de um e-mail para o cadastro de um cliente. Caso o e-mail digitado já conste em outro registro, não será permitido o salvamento do formulário.

<iframe allowfullscreen="allowfullscreen" frameborder="0" height="425" src="https://player.vimeo.com/video/328685546" width="760"></iframe>

#### Valor do campo deve ser único em relação ao formulário PAI

Caso o formulário tenha uma relação com outro formulário (chamamos de formulário Pai), será validado que os dados inseridos são únicos, mas apenas para o registro filho.

#### Valor do campo deve ser único em relação APENAS ao CAMPO relacionado do formulário PAI

Caso haja, mais de um campo no formulário pai, relacionado ao mesmo formulário filho, a validação de valor único, ocorre apenas par cada campo do relacionamento.

Abaixo, um vídeo explica essas 3 últimas opções:

<div id="bkmrk--8"><iframe allowfullscreen="allowfullscreen" frameborder="0" height="425" src="https://player.vimeo.com/video/318250365" width="760"></iframe>

</div>### Regras de Visibilidade e desativação

Usando essas opções, é possível tornar um campo visível, invisível, ativo ou inativo, e definir quando uma dessas ações deve ocorrer. É possível adicionar várias regras para cada campo.

#### Descrição

É um texto que ajuda a identificar a regra que se está criando. Muito útil quando existem múltiplas regras.

#### Ação

##### Ativar

Deixa o campo disponível para inserção de dados. É o estado padrão do campo.

##### Inativar

Deixa o campo indisponível para inserção de dados.

##### Visível

O campo é mostrado na tela, caso esteja inserido para tal, nas configurações de tela.

##### Invisível

O campo é não é mostrado na tela, mesmo que esteja inserido para tal, nas configurações de tela.

#### A partir da etapa / Até a etapa

Em formulários com etapas, é possível estabelecer que uma regra será aplicada em alguma(s) etapa(s). Para isso, basta selecionar as etapas nos campos "a partir da etapa" e "até a etapa", para definir em que momento do fluxo essa regra vai ser aplicada.

#### Quando

Define em que momento a ação deve acontecer.

##### Sempre

É o padrão do formulário.

##### Condicional

- Tipo de condição  
    Para fazer um validação condicional, estão disponíveis as seguintes condições:  
    
    - Se o campo: compara um campo com um valor, ou com outro campo.  
        Abaixo, uma tabela com os operadores disponíveis para as comparações:  
          
        <table border="1" style="border-collapse: collapse; width: 100%;"><tbody><tr><td style="width: 50%;">**Comparação por valor**</td><td style="width: 50%;">**Comparação por outro campo**</td></tr><tr><td style="width: 50%;">For igual a</td><td style="width: 50%;">É igual ao campo</td></tr><tr><td style="width: 50%;">For maior ou igual a</td><td style="width: 50%;">É diferente do campo</td></tr><tr><td style="width: 50%;">For menor ou igual a </td><td style="width: 50%;"> </td></tr><tr><td style="width: 50%;">For maior que</td><td style="width: 50%;"> </td></tr><tr><td style="width: 50%;">For menor que</td><td style="width: 50%;"> </td></tr><tr><td style="width: 50%;">For diferente de</td><td style="width: 50%;"> </td></tr><tr><td style="width: 50%;">Conter</td><td style="width: 50%;"> </td></tr><tr><td style="width: 50%;">Não conter</td><td style="width: 50%;"> </td></tr></tbody></table>
        
        <p class="callout success">É possível adicionar mais de um condição na mesma regra.</p>
    - Se é um novo formulário: regra será aplicada quando uma nova entrada no formulário estiver sendo criada.
    - Se é edição de formulário: regra será aplicada quando uma entrada no formulário estiver sendo alterada.

### Customização Javascript

Caso a customização desejada, não esteja disponível, ainda assim é possível programá-la utilizando javascript. Para mais detalhes, acesse o [capítulo](http://wiki.agilityflow.io/books/manual-de-customiza%C3%A7%C3%A3o/page/customiza%C3%A7%C3%A3o-javascript "Customização javascript") sobre essa opção.

# Fórmula

Com o campo de fórmula, é possível fazer cálculos com valores dos campos disponíveis no formulário, além de utilizar valores fixos na composição da fórmula.

O campo de fórmula faz dois tipos de cálculos: com campos numéricos e com campos com data/hora. É na definição do campo que seleciona-se o tipo de cálculo.

### Grupo de informações

Dentro das configurações, é possível alterar o [grupo de informação](http://wiki.agilityflow.io/books/manual-de-customiza%C3%A7%C3%A3o/page/divis%C3%A3o-e-agrupamento-dos-campos "Divisão e agrupamento dos campos") ao qual o campo foi atribuído no momento da criação.

### Nome de Apresentação

Mostra o nome de apresentação informado no momento da criação. Esse é o nome que será mostrado na tela para o usuário.

### Coluna Banco de dados (SQL)

Esse é o nome interno, usado pelo sistema, a ser criado no banco de dados do agilityflow. É uma informação técnica e esse campo é preenchido automaticamente pelo sistema.

<p class="callout warning">Na maioria dos casos, você não precisa alterar o nome sugerido pelo sistema.</p>

Diferentemente do campo "Nome de Apresentação", esse campo não fica visível para o usuário.

> Para que serve o campo Coluna Banco de dados (SQL)?

Esse campo vai ser utilizado ao criar reports e dashboards. É através dele, que poderemos extrair informações e expor usando esses recursos do sistema.

### Informações de ajuda

Nesse campo é possível incluir um texto que ajudará o usuário a preenche-lo. Abaixo, um exemplo de dois campos: um campo sem informações de ajuda e outro com esse campo configurado:

[![informacoes_ajuda.gif](http://wiki.agilityflow.io/uploads/images/gallery/2019-02-Feb/informacoes_ajuda.gif)](http://wiki.agilityflow.io/uploads/images/gallery/2019-02-Feb/informacoes_ajuda.gif)

### Máscara

É a forma que o sistema utiliza para mostrar ao usuário, o conteúdo do campo de texto. Isso facilita a visualização da informação por parte do usuário. Por exemplo, é muito fácil ver o telefone "(11) 98765-4321" do que "11987654321".

#### Tipo de máscara

Existe uma série de máscaras disponíveis no agilityflow.

##### Número

> Como criar um campo numérico?

Um número não deixa de ser um texto. Portanto, para criar um campo numérico basta criar um campo textbox e aplicar uma máscara de número.

- Tipo de Número  
      
    
    - Inteiro: o campo não aceita "," ou "." no seu conteúdo. Ao digitar um desses símbolos, o sistema ignora a digitação. Por exemplo, digitando "1,5", o sistema ignora a vírgula e preenche "15". Caso o usuário cole o valor "1,5541", o sistema ignora a vírgula e o conteúdo à direita da vírgula, aceitando o valor "1".
    - Moeda (Real): coloca vírgula, deixando o campo com duas casas decimais;
    - Decimal (1 casa decimal): coloca vírgula, deixando o campo com duas casas decimais;
    - Decimal (2 casas decimais): coloca vírgula, deixando o campo com duas casas decimais;
    - Decimal (3 casas decimais): coloca vírgula, deixando o campo com duas casas decimais;
    - Decimal (4 casas decimais): coloca vírgula, deixando o campo com duas casas decimais;
    - Decimal (5 casas decimais): coloca vírgula, deixando o campo com duas casas decimais;

### Definição da Fórmula

São as configurações para os cálculos.

#### Tipo de Cálculo

Ao escolher o tipo, serão mostrados os campos disponíveis para serem usados.

##### Fórmula Numérica

é possível fazer as 4 operações aritméticas (soma, subtração, divisão e multiplicação) nesse campo. Para isso, basta selecionar um ou mais campos com a máscara do tipo numérico e escrever a fórmula.

<div id="bkmrk-"><iframe allowfullscreen="allowfullscreen" frameborder="0" src="https://player.vimeo.com/video/316087003"></iframe>

</div>##### Fórmula por data/hora

Fórmula por data/hora: nessa opção, é possível subtrair um campo do tipo data/hora, por outro campo do tipo data/hora. Como resultado, é possível obter:

- Número de Dias
- Número de Meses
- Número de Anos
- Número de Semanas
- Número de Horas:Minutos

<p class="callout info">Para fórmula com datas, só é possível fazer a operação de subtração.</p>

#### Fórmula

É a composição da fórmula. Basta começar a digitar o nome dos campos que estão mostrados logo abaixo e compor a fórmula. Esses campos são mostrados, de acordo com a máscara dos demais campos disponíveis do formulário. Além dos campos, é possível fazer a utilização dos operadores matemáticos.

[![composicao_formula.gif](http://wiki.agilityflow.io/uploads/images/gallery/2019-02-Feb/composicao_formula.gif)](http://wiki.agilityflow.io/uploads/images/gallery/2019-02-Feb/composicao_formula.gif)

### Regras de Visibilidade e desativação

Usando essas opções, é possível tornar um campo visível, invisível, ativo ou inativo, e definir quando uma dessas ações deve ocorrer. É possível adicionar várias regras para cada campo.

#### Descrição

É um texto que ajuda a identificar a regra que se está criando. Muito útil quando existem múltiplas regras.

#### Ação

##### Visível

O campo é mostrado na tela, caso esteja inserido para tal, nas configurações de tela.

##### Invisível

O campo é não é mostrado na tela, mesmo que esteja inserido para tal, nas configurações de tela.

#### A partir da etapa / Até a etapa

Em formulários com etapas, é possível estabelecer que uma regra será aplicada em alguma(s) etapa(s). Para isso, basta selecionar as etapas nos campos "a partir da etapa" e "até a etapa", para definir em que momento do fluxo essa regra vai ser aplicada.

#### Quando

Define em que momento a ação deve acontecer.

##### Sempre

É o padrão do formulário.

##### Condicional

- Tipo de condição  
    Para fazer um validação condicional, estão disponíveis as seguintes condições:  
    
    - Se o campo: compara um campo com um valor, ou com outro campo.  
        Abaixo, uma tabela com os operadores disponíveis para as comparações:  
          
        <table border="1" style="border-collapse: collapse; width: 100%;"><tbody><tr><td style="width: 50%;">**Comparação por valor**</td><td style="width: 50%;">**Comparação por outro campo**</td></tr><tr><td style="width: 50%;">For igual a</td><td style="width: 50%;">É igual ao campo</td></tr><tr><td style="width: 50%;">For maior ou igual a</td><td style="width: 50%;">É diferente do campo</td></tr><tr><td style="width: 50%;">For menor ou igual a </td><td style="width: 50%;"> </td></tr><tr><td style="width: 50%;">For maior que</td><td style="width: 50%;"> </td></tr><tr><td style="width: 50%;">For menor que</td><td style="width: 50%;"> </td></tr><tr><td style="width: 50%;">For diferente de</td><td style="width: 50%;"> </td></tr><tr><td style="width: 50%;">Conter</td><td style="width: 50%;"> </td></tr><tr><td style="width: 50%;">Não conter</td><td style="width: 50%;"> </td></tr></tbody></table>
        
        <p class="callout success">É possível adicionar mais de um condição na mesma regra.</p>
    - Se é um novo formulário: regra será aplicada quando uma nova entrada no formulário estiver sendo criada.
    - Se é edição de formulário: regra será aplicada quando uma entrada no formulário estiver sendo alterada.

### Customização Javascript

Caso a customização desejada, não esteja disponível, ainda assim é possível programá-la utilizando javascript. Para mais detalhes, acesse o [capítulo](http://wiki.agilityflow.io/books/manual-de-customiza%C3%A7%C3%A3o/page/customiza%C3%A7%C3%A3o-javascript "Customização javascript") sobre essa opção.

# Campo com Múltipla Escolha

Apesar do visual um pouco diferente, tem comportamento similar ao campo [checkbox](http://wiki.agilityflow.io/books/manual-de-customiza%C3%A7%C3%A3o/page/checkbox-%28%C3%BAnico%29 "Checkbox (Único)"), mas permite a escolha de mais de uma opção.

### Grupo de informações

Dentro das configurações, é possível alterar o [grupo de informação](http://wiki.agilityflow.io/books/manual-de-customiza%C3%A7%C3%A3o/page/divis%C3%A3o-e-agrupamento-dos-campos "Divisão e agrupamento dos campos") ao qual o campo foi atribuído no momento da criação.

### Nome de Apresentação

Mostra o nome de apresentação informado no momento da criação. Esse é o nome que será mostrado na tela para o usuário.

### Coluna Banco de dados (SQL)

Esse é o nome interno, usado pelo sistema, a ser criado no banco de dados do agilityflow. É uma informação técnica e esse campo é preenchido automaticamente pelo sistema.

<p class="callout warning">Na maioria dos casos, você não precisa alterar o nome sugerido pelo sistema.</p>

Diferentemente do campo "Nome de Apresentação", esse campo não fica visível para o usuário.

> Para que serve o campo Coluna Banco de dados (SQL)?

Esse campo vai ser utilizado ao criar reports e dashboards. É através dele, que poderemos extrair informações e expor usando esses recursos do sistema.

### Informações de ajuda

Nesse campo é possível incluir um texto que ajudará o usuário a preenche-lo. Abaixo, um exemplo de dois campos: um campo sem informações de ajuda e outro com esse campo configurado:

[![informacoes_ajuda.gif](http://wiki.agilityflow.io/uploads/images/gallery/2019-02-Feb/informacoes_ajuda.gif)](http://wiki.agilityflow.io/uploads/images/gallery/2019-02-Feb/informacoes_ajuda.gif)

---

### Origem dos Dados

Como existe uma lista de opções pré-determinadas, é necessário definir a origem dos dados.

#### Origem dos Itens

São duas as possibilidades:

**1. Lista Dinâmica** <span style="color: #3366ff;">(Utilização recomendada)</span> **:** Nessa opção, os dados têm como origem um outro formulário. Ao selecionar esse outro formulário, é necessário informar qual o campo desse formulário será exibido.

**2. Lista Estática:** O usuário insere as opções nas configurações do campo. Com isso, o usuário que acessa o formulário não pode criar novas opções. Ao criar as opções, além do nome, é possível definir a ordem em que aparecerão na lista de seleção. Outra opção, é o Id Customizado (Banco de Dados). Essa opção, normalmente não precisa ser preenchido. Entretanto, em alguns casos, esse id pode ser customizado. Isso pode ser útil, para a criação de dashboard e reports, para montar mais facilmente as *queries*.

#### **Configuração de uma <span style="color: #000000;">Lista Dinâmica</span>**

Abaixo estão descritos os campos básicos de preenchimento para definição de uma lista dinâmica.

Abra a tela de edição do campo e clique na aba **Origem dos Dados**

![](http://wiki.agilityflow.io/uploads/images/gallery/2019-04-Apr/scaled-840-0/image-1555598725240.png)

##### **Campos para preenchimento:**

##### Origem dos dados

Defina como "Lista Dinâmica"

##### Quando os dados serão carregados?

Quando a lista é dinâmica, é possível definir algumas opções relativas ao carregamento da lista. Esse carregamento pode ocorrer de duas maneiras.

**<span style="color: #808080;">No carregamento inicial (On PageLoad):</span>** Assim que o formulário é carregado, as opções da lista de seleção também são carregados imediatamente.

<span style="color: #808080;">**Na alteração do valor de um determinado campo (On Change):** </span>As opções só serão carregadas quando um determinado campo mudar. Isso é útil, para uma lista de seleção selecionar níveis de outra lista de seleção. Ex: seleciona-se primeiro o estado e só depois, é selecionada a cidade. Esse campo Lista de Cidade, apenas é carregado quando o outro campo Lista de Estados é alterado. Para isso, é necessário também adicionar uma[ condição na base de dados](#h_50356803591550685996742).

##### Qual será a Base de dados

É o formulário que servirá de fonte para a Lista Dinâmica.

##### Campo de apresentação (Base de dados)

Essa é a informação que será apresentada para o usuário na apresentação do combo. Esse campo é referente ao formulário que foi selecionado no campo [Qual será a Base de dados](#h_695508394161550686141083).

##### Ordenar os itens pelo campo

A ordenação padrão do itens do combo é alfabética. Entretanto há casos onde queremos alterar essa ordem. Para isso, podemos utilizar um segundo campo como critério de ordenação, que não o campo de exibição. Como exemplo, vamos usar um formulário que só tem o campo nome, e os seguintes dados?

<table border="1" id="bkmrk-prioridade-alta-baix" style="border-collapse: collapse; width: 0%; height: 120px;"><tbody><tr><td style="width: 100%;">**Prioridade**</td></tr><tr><td style="width: 100%;">Alta</td></tr><tr><td style="width: 100%;">Baixa</td></tr><tr><td style="width: 100%;">Média</td></tr></tbody></table>

Ao usarmos o campo prioridade como critério de ordenação, os itens serão apresentados na ordem alfabética (Alta, Baixa e Média), quando o mais intuitivo seria apresentar a ordem como (Baixa, Média, Alta).

Para isso, podemos criar um campo chamado 'Ordem' nesse formulário, e incluir números. Dessa forma:

<table border="1" id="bkmrk-prioridade-ordem-alt" style="border-collapse: collapse; width: 100%;"><tbody><tr><td style="width: 50%;">**Prioridade**</td><td style="width: 50%;">**Ordem**</td></tr><tr><td style="width: 50%;">Alta</td><td style="width: 50%;">3</td></tr><tr><td style="width: 50%;">Baixa</td><td style="width: 50%;">2</td></tr><tr><td style="width: 50%;">Média</td><td style="width: 50%;">1</td></tr></tbody></table>

Feito isso, o campo Campo de Apresentação continua sendo o campo 'Prioridade', mas o campo selecionado para ordenação é o 'Ordem'. Com isso, os itens serão apresentados na ordem (Baixa, Média e Alta).

##### Condição na Base de Dados

Na condição, pode-se escolher um dos campos da [Base de dados](#h_695508394161550686141083) para ser usado em uma comparação por valor (É igual a, É diferente de, Conter e Não conter) ou por outro campo (É igual ao campo ou É diferente do campo) desse formulário.

<p class="callout success">O vídeo abaixo mostra a configuração da lista de seleção, mas também se aplica para o campo Campo com Múltipla Escolha. O processo de configuração e o comportamento é idêntico.</p>

<div id="bkmrk--0"><iframe allowfullscreen="allowfullscreen" data-mce-fragment="1" frameborder="0" height="425" src="https://player.vimeo.com/video/318536339" width="760"></iframe>

</div>---

###  

### Validação

Nessa parte, é possível configurar validações dos dados inseridos pelo usuário, garantindo um padrão de preenchimento.

> Como deixar um campo obrigatório?

#### Obrigatório

Caso marcado como "sim", não permite o salvamento do fomulário sem o preenchimento desse campo. Ao marcar como "sim" essa opção, são abertos duas outras opções:

##### Obrigatório mesmo que por algum motivo o campo esteja marcado como invisível?

Use essa opção para fazer um campo definido como obrigatório, deixar sua obrigatoriedade caso ele esteja [invisível](#bkmrk-%E2%A0-8).

##### Obrigatório a partir da etapa

Para os formulários com fluxo de etapas, é possível atrelar a obrigatoriedade de um campo à etapa em que se encontra o fluxo.

#### Tipo de Validação

Para o campo com múltipla escolha, é possível fazer uma validação relativo à quantidade de itens marcados.

- Selecionar no máximo X itens: define um limite máximo de itens marcados;
- Selecionar no mínimo X itens: define um limite mínimo de itens marcados;
- Selecionar exatamente X itens: define um número exato de itens marcados;

### Regras de Visibilidade e desativação

Usando essas opções, é possível tornar um campo visível, invisível, ativo ou inativo, e definir quando uma dessas ações deve ocorrer. É possível adicionar várias regras para cada campo.

#### Descrição

É um texto que ajuda a identificar a regra que se está criando. Muito útil quando existem múltiplas regras.

#### Ação

##### Ativar

Deixa o campo disponível para inserção de dados. É o estado padrão do campo.

##### Inativar

Deixa o campo indisponível para inserção de dados.

##### Visível

O campo é mostrado na tela, caso esteja inserido para tal, nas configurações de tela.

##### Invisível

O campo é não é mostrado na tela, mesmo que esteja inserido para tal, nas configurações de tela.

#### A partir da etapa / Até a etapa

Em formulários com etapas, é possível estabelecer que uma regra será aplicada em alguma(s) etapa(s). Para isso, basta selecionar as etapas nos campos "a partir da etapa" e "até a etapa", para definir em que momento do fluxo essa regra vai ser aplicada.

#### Quando

Define em que momento a ação deve acontecer.

##### Sempre

É o padrão do formulário.

##### Condicional

- Tipo de condição  
    Para fazer um validação condicional, estão disponíveis as seguintes condições:  
    
    - Se o campo: compara um campo com um valor, ou com outro campo.  
        Abaixo, uma tabela com os operadores disponíveis para as comparações:  
          
        <table border="1" style="border-collapse: collapse; width: 100%;"><tbody><tr><td style="width: 50%;">**Comparação por valor**</td><td style="width: 50%;">**Comparação por outro campo**</td></tr><tr><td style="width: 50%;">For igual a</td><td style="width: 50%;">É igual ao campo</td></tr><tr><td style="width: 50%;">For maior ou igual a</td><td style="width: 50%;">É diferente do campo</td></tr><tr><td style="width: 50%;">For menor ou igual a </td><td style="width: 50%;"> </td></tr><tr><td style="width: 50%;">For maior que</td><td style="width: 50%;"> </td></tr><tr><td style="width: 50%;">For menor que</td><td style="width: 50%;"> </td></tr><tr><td style="width: 50%;">For diferente de</td><td style="width: 50%;"> </td></tr><tr><td style="width: 50%;">Conter</td><td style="width: 50%;"> </td></tr><tr><td style="width: 50%;">Não conter</td><td style="width: 50%;"> </td></tr></tbody></table>
        
        <p class="callout success">É possível adicionar mais de um condição na mesma regra.</p>
    - Se é um novo formulário: regra será aplicada quando uma nova entrada no formulário estiver sendo criada.
    - Se é edição de formulário: regra será aplicada quando uma entrada no formulário estiver sendo alterada.

### Customização Javascript

Caso a customização desejada, não esteja disponível, ainda assim é possível programá-la utilizando javascript. Para mais detalhes, acesse o [capítulo](http://wiki.agilityflow.io/books/manual-de-customiza%C3%A7%C3%A3o/page/customiza%C3%A7%C3%A3o-javascript "Customização javascript") sobre essa opção.

# Botão Customizado

Caso seja necessário uma ação no formulário que não exista no agilityflow, é possível criar um botão. Esse botão, executa um código [javascript](#bkmrk-customiza%E3%A7%E3%A3o-javas) personalizado, que deve ser criado pelo usuário. Para a configuração desse campo, é necessário conhecimento de [javascript](#bkmrk-customiza%E3%A7%E3%A3o-javas), já que qualquer ação com esse botão é 100% customizada.

### Grupo de informações

Dentro das configurações, é possível alterar o [grupo de informação](http://wiki.agilityflow.io/books/manual-de-customiza%C3%A7%C3%A3o/page/divis%C3%A3o-e-agrupamento-dos-campos "Divisão e agrupamento dos campos") ao qual o campo foi atribuído no momento da criação.

### Nome de Apresentação

Mostra o nome de apresentação informado no momento da criação. Esse é o nome que será mostrado na tela para o usuário.

### Regras de Visibilidade e desativação

Usando essas opções, é possível tornar um campo visível, invisível, ativo ou inativo, e definir quando uma dessas ações deve ocorrer. É possível adicionar várias regras para cada campo.

#### Descrição

É um texto que ajuda a identificar a regra que se está criando. Muito útil quando existem múltiplas regras.

#### Ação

##### Ativar

Deixa o campo disponível para inserção de dados. É o estado padrão do campo.

##### Inativar

Deixa o campo indisponível para inserção de dados.

##### Visível

O campo é mostrado na tela, caso esteja inserido para tal, nas configurações de tela.

##### Invisível

O campo é não é mostrado na tela, mesmo que esteja inserido para tal, nas configurações de tela.

#### A partir da etapa / Até a etapa

Em formulários com etapas, é possível estabelecer que uma regra será aplicada em alguma(s) etapa(s). Para isso, basta selecionar as etapas nos campos "a partir da etapa" e "até a etapa", para definir em que momento do fluxo essa regra vai ser aplicada.

#### Quando

Define em que momento a ação deve acontecer.

##### Sempre

É o padrão do formulário.

##### Condicional

- Tipo de condição  
    Para fazer um validação condicional, estão disponíveis as seguintes condições:  
    
    - Se o campo: compara um campo com um valor, ou com outro campo.  
        Abaixo, uma tabela com os operadores disponíveis para as comparações:  
          
        <table border="1"><tbody><tr><td>**Comparação por valor**</td><td>**Comparação por outro campo**</td></tr><tr><td>For igual a</td><td>É igual ao campo</td></tr><tr><td>For maior ou igual a</td><td>É diferente do campo</td></tr><tr><td>For menor ou igual a </td><td> </td></tr><tr><td>For maior que</td><td> </td></tr><tr><td>For menor que</td><td> </td></tr><tr><td>For diferente de</td><td> </td></tr><tr><td>Conter</td><td> </td></tr><tr><td>Não conter</td><td> </td></tr></tbody></table>
        
        <p class="callout success">É possível adicionar mais de um condição na mesma regra.</p>
    - Se é um novo formulário: regra será aplicada quando uma nova entrada no formulário estiver sendo criada.
    - Se é edição de formulário: regra será aplicada quando uma entrada no formulário estiver sendo alterada.

### Customização Javascript

A parte mais importante do botão customizado é a programação em javascript. É com ela que o botão será capaz de executar alguma ação no formulário.

Com a customização em Javascript, as possibilidade são inúmeras. Qualquer que seja o código javascript, ele pode ser usado aqui.

#### Exemplo de código

> Posso abrir o WhatsApp pelo agilityflow?

No exemplo abaixo, o botão customizado está configurado para abrir o WhatsApp Web e iniciar uma conversa com o número cadastrado no formulário.

```JavaScript
var fone = $("#telefone").val();

if (fone !== null)
    fone = fone.replaceAll(/\(/,"").replaceAll(/\)/,"").replaceAll(/-/,"").replaceAll(/ /,"");

window.open("https://web.whatsapp.com/send?phone="+fone);
```

##### Explicando o código

```JavaScript
var fone = $("#telefone").val();
```

Obtém-se o valor do campo telefone, e o armazena na variável chamada *fone*. Note que esse nome é exatamente o nome definidos na configuração [Coluna Banco de dados (SQL)](http://wiki.agilityflow.io/link/38#bkmrk-%E2%A0-0 "Coluna Banco de dados (SQL)").

```JavaScript
if (fone !== null)
    fone = fone.replaceAll(/\(/,"").replaceAll(/\)/,"").replaceAll(/-/,"").replaceAll(/ /,"");
```

Nesse ponto, checa se o valor é nulo. Caso não seja, limpa o número, removendo parêntesis e hifens.

<div data-lang="JavaScript" id="bkmrk-window.open%28%22https%3A%2F"><div data-lang="JavaScript"><textarea style="display: none;">window.open("https://web.whatsapp.com/send?phone="+fone);</textarea><div><div><textarea spellcheck="false" style="position: absolute; bottom: -1em; padding: 0px; width: 1000px; height: 1em; outline: none;" tabindex="0"></textarea></div></div></div></div>```JavaScript
window.open("https://web.whatsapp.com/send?phone="+fone);
```

<div data-lang="JavaScript" id="bkmrk-abre-se-uma-nova-jan"><div><div>Abre-se uma nova janela, passando o valor da variável *fone* na URL.</div></div></div><div id="bkmrk-"></div><div id="bkmrk--0"></div><div data-lang="JavaScript" id="bkmrk--1"><div><div><div></div></div><div></div></div></div>

# Formulários Relacionados

Basicamente, um formulário relacionado é um formulário dentro de outro formulário.

> Como criar um formulário relacionado?

Para criar um formulário relacionado, você deve criar um [formulário](http://wiki.agilityflow.io/books/manual-de-customiza%C3%A7%C3%A3o/chapter/formul%C3%A1rios "Formulários") comum, como qualquer outro. Além disso é necessário adicionar dois componentes adicionais:

- Ativar a opção de relacionamento com outros formulários:  
      
    ![](http://wiki.agilityflow.io/uploads/images/gallery/2019-02-Feb/scaled-840-0/image-1551110874990.png)
    
      
    Na definição básica do formulário, deve-se ativar a opção "*Pode ser usado como tabela filha de um outro formulário (Tabela de Formulário Relacionado)*". A opção "Abrir apenas através de um formulário pai", inibe que esse formulário seja aberto da maneira convencional, permitindo apenas que ele seja aberto através de outro formulário.
- Criar um campo de relacionamento com o formulário Pai:  
      
    Isso é fundamental para exista a relação entre os dois formulários. Para isso, é necessário criar um campo de autocompletar ou lista de seleção, com uma fonte dinâmica de dados, usando o formulário pai como fonte. Feito isso, escolhe-se um campo para que seja mostrado (de preferência o campo com maior importância desse formulário) e marca-se as seguintes duas opções:  
    
    - Esse campo pode ser Relacionado a um formulário Pai e preenchido automaticamente pelo ID (Primary Key) do formulário pai: essa opção deve ser marcada, para que o sistema automaticamente preencha essa opção. como esse formulário, vai ser aberto através do formulário pai, o preenchimento fica sendo automático e transparente para o usuário.
    - Esconder campo quando o formulário for aberto através do formulário pai (opcional): como esse campo vai ser preenchido automaticamente pelo formulário, podemos ocultar quando o formulário for aberto pelo formulário pai.

No exemplo abaixo, temos um formulário chamado Clientes, que é um cadastro de pessoas jurídicas. Para cada cadastro, queremos incluir N contatos com nomes de pessoas físicas que trabalham nessa empresa.

Para fazer isso, criamos um formulário chamado Contatos. Nas definições básicas desse formulário, marcamos a opção "*Pode ser usado como tabela filha de um outro formulário (Tabela de Formulário Relacionado)*". Além dos campos necessários para o cadastro dos contatos, criamos um campo chamado Relacionamento\_Clientes, que é o campo que vai se relacionar com o formulário *Clientes* (formulário Pai). A configuração desse campo fica assim:

![](http://wiki.agilityflow.io/uploads/images/gallery/2019-02-Feb/scaled-840-0/image-1551188642189.png)

Quando o formulário filho está configurado dessa forma, ele fica disponível para ser adicionado no formulário pai:

![](http://wiki.agilityflow.io/uploads/images/gallery/2019-02-Feb/scaled-840-0/image-1551188621161.png)

O uso é transparente para o usuário, não percebendo essa amarração entre os formulários.

<iframe allowfullscreen="allowfullscreen" frameborder="0" height="425" src="https://player.vimeo.com/video/319870425" width="760"></iframe>

Abaixo, as demais configurações de um formulário relacionado:

### Grupo de informações

Dentro das configurações, é possível alterar o [grupo de informação](http://wiki.agilityflow.io/books/manual-de-customiza%C3%A7%C3%A3o/page/divis%C3%A3o-e-agrupamento-dos-campos "Divisão e agrupamento dos campos") ao qual o campo foi atribuído no momento da criação.

### Nome de Apresentação

Mostra o nome de apresentação informado no momento da criação. Esse é o nome que será mostrado na tela para o usuário.

### Ordenação manual organizada pelo próprio usuário através de Arrastar e Soltar (Drag and Drop)

Permite ao usuário, ordenar as entradas do formulário relacionado.

[![reordenar_lista.gif](http://wiki.agilityflow.io/uploads/images/gallery/2019-02-Feb/reordenar_lista.gif)](http://wiki.agilityflow.io/uploads/images/gallery/2019-02-Feb/reordenar_lista.gif)

<iframe allowfullscreen="allowfullscreen" frameborder="0" height="425" src="https://player.vimeo.com/video/332437405" width="760"></iframe>

### Customização da Lista

Essas opções, permitem configurar aspectos da lista do formulário relacionado que serão exibidos

#### Coluna Visível

Caso não seja necessário, uma ou mais colunas podem ser ocultadas da visualização dentro do formulário pai. Isso ajuda na organização dos dados que são mostrados na tela.

##### Prefixo

Adiciona um texto opcional antes do conteúdo do campo.

##### Sufixo

Adicional um texto opcional após o conteúdo do campo.

##### Informação no Rodapé

No rodapé, é possível exibir uma informação extra, baseada nos campos numéricos do formulário relacionado. São elas:

- Soma da Coluna  
    Faz a soma de todos os valores dessa coluna e exibe o total.
- Média da Coluna  
    Faz a média de todos os valores dessa coluna e exibe o resultado.  
      
    Caso uma dessas opções seja selecionada, é preciso selecionar uma [máscara](http://wiki.agilityflow.io/link/38#bkmrk-m%E3%A1scara) para o rodapé.  
    
    - Moeda (Real)
    - Decimal (1 casa decimal)
    - Decimal (2 casas decimais)
    - Decimal (3 casas decimais)
    - Decimal (4 casas decimais)
    - Decimal (5 casas decimais)

### Lista do formulário que podem ser apresentadas como Sub Lista

Caso o formulário relacionado, contenha outro formulário relacionado, essas opções serão apresentadas.

#### Já abrir com as Sub Lista expandidas

O formulário relacionado que pertence a esse, será apresentado com a lista expandida. Essa configuração dá a opção do usuário definir o comportamento padrão. Isso é útil, caso hajam muitos dados, e nem todos precisam estar visíveis no primeiro momento, deixando a leitura do formulário mais simples.

#### Sub Lista visível

Aqui o usuário seleciona quais formulários relacionados devem estar visíveis.

### Apresentar nessa tabela de dados apenas os dados que foram cadastrados através desse campo da tela

Essa opção permite ao usuário mostrar apenas os dados cadastrados através do formulário pai, e não os registros cadastrados pelo formulário filho, mesmo que quando feito, tenha sido colocado o relacionamento com algum registro do formulário pai.

# Componentes CsHtml

Para acessar os detalhes desse conteúdo, [clique aqui](http://wiki.agilityflow.io/link/78#bkmrk-page-title).

# Label com Query SQL

Label com Query SQL é um campo de texto não editável, que é preenchido através de uma Query SQL definida por você. Esse campo é muito útil, quando se tem um campo de lista de seleção (ou pesquisa com auto-completar) com uma fonte dinâmica e há a necessidade mostrar outros campos do formulário usado como fonte por esse campo. Também pode ser útil para gerar um SUM, AVG e outras funções do SQL.

No exemplo abaixo, o formulário tem uma lista de seleção de clientes. Os outros dois campos, são Label com Query SQL com informações do formulário de cliente.

[![label_dinamica.gif](http://wiki.agilityflow.io/uploads/images/gallery/2019-02-Feb/label_dinamica.gif)](http://wiki.agilityflow.io/uploads/images/gallery/2019-02-Feb/label_dinamica.gif)

<div id="bkmrk-%E2%A0%E2%A0%E2%A0"><div><span class="icon text-primary"><svg class="svg-icon" data-icon="link" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"></svg> </span><span class="input-group"> <button class="button icon" data-clipboard-target="#pointer-url" title="Copia Link" type="button"><svg class="svg-icon" data-icon="copy" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"></svg></button> </span>[<svg class="svg-icon" data-icon="edit" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"></svg>](https://wiki.agilityflow.io/books/manual-de-customiza%C3%A7%C3%A3o/page/label-din%C3%A2mica/edit?content-id=bkmrk-ao-mudar-o-campo-de-&content-text=Ao%20mudar%20o%20campo%20de%20lista%20de%20sele%C3%A7%C3%A3o%2C%20a%20label%20din%C3%A2 "Editar conteúdo")</div></div>Ao mudar o campo de lista de seleção, a label com Query SQL é preenchida automaticamente.

# Tabela de dados customizada através de programação: Query SQL, C#, HTML e CSS

Para acessar os detalhes desse conteúdo, [clique aqui](https://wiki.agilityflow.io/link/78#bkmrk-criar-html-com-tabel).

# Campo de Assinatura

O campo de assinatura, permite que um usuário "desenhe" sua assinatura através do dedo (no celular) ou do mouse (no computador), ao final essa assinatura se transformará em uma imagem.

![](https://wiki.agilityflow.io/uploads/images/gallery/2020-07-Jul/scaled-840-0/image-1595285811190.png)

### Grupo de informações

Dentro das configurações, é possível alterar o [grupo de informação](http://wiki.agilityflow.io/books/manual-de-customiza%C3%A7%C3%A3o/page/divis%C3%A3o-e-agrupamento-dos-campos "Divisão e agrupamento dos campos") ao qual o campo foi atribuído no momento da criação.

### Nome de Apresentação

Mostra o nome de apresentação informado no momento da criação. Esse é o nome que será mostrado na tela para o usuário.

### Regras de Visibilidade e desativação

Usando essas opções, é possível tornar um campo visível, invisível, ativo ou inativo, e definir quando uma dessas ações deve ocorrer. É possível adicionar várias regras para cada campo.

#### Descrição

É um texto que ajuda a identificar a regra que se está criando. Muito útil quando existem múltiplas regras.

#### Ação

##### Ativar

Deixa o campo disponível para inserção de dados. É o estado padrão do campo.

##### Inativar

Deixa o campo indisponível para inserção de dados.

##### Visível

O campo é mostrado na tela, caso esteja inserido para tal, nas configurações de tela.

##### Invisível

O campo é não é mostrado na tela, mesmo que esteja inserido para tal, nas configurações de tela.

#### A partir da etapa / Até a etapa

Em formulários com etapas, é possível estabelecer que uma regra será aplicada em alguma(s) etapa(s). Para isso, basta selecionar as etapas nos campos "a partir da etapa" e "até a etapa", para definir em que momento do fluxo essa regra vai ser aplicada.

#### Quando

Define em que momento a ação deve acontecer.

##### Sempre

É o padrão do formulário.

##### Condicional

- Tipo de condição  
    Para fazer um validação condicional, estão disponíveis as seguintes condições:  
    
    - Se o campo: compara um campo com um valor, ou com outro campo.  
        Abaixo, uma tabela com os operadores disponíveis para as comparações:  
          
        <table border="1"><tbody><tr><td>**Comparação por valor**</td><td>**Comparação por outro campo**</td></tr><tr><td>For igual a</td><td>É igual ao campo</td></tr><tr><td>For maior ou igual a</td><td>É diferente do campo</td></tr><tr><td>For menor ou igual a </td><td> </td></tr><tr><td>For maior que</td><td> </td></tr><tr><td>For menor que</td><td> </td></tr><tr><td>For diferente de</td><td> </td></tr><tr><td>Conter</td><td> </td></tr><tr><td>Não conter</td><td> </td></tr></tbody></table>
        
        <p class="callout success">É possível adicionar mais de um condição na mesma regra.</p>
    - Se é um novo formulário: regra será aplicada quando uma nova entrada no formulário estiver sendo criada.
    - Se é edição de formulário: regra será aplicada quando uma entrada no formulário estiver sendo alterada.