> For the complete documentation index, see [llms.txt](https://kb.stoque.com.br/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://kb.stoque.com.br/zeev/como-construir-processos/como-desenhar-processos/o-que-sao-atividades/como-configurar-atividades-humanas/como-configurar-formulario.md).

# Como configurar formulário

## Visão geral

Os formulários são alguns dos principais elementos dentro de um aplicativo de processo. Apesar de nem todos os aplicativos possuírem formulários (ex.: um aplicativo de documentos), a maioria utiliza este recurso como método de estruturação das informações digitadas pelos solicitantes e participantes do processo. Assim, na maior parte das vezes, você irá [criar um formulário associado a um aplicativo de processo.](/zeev/como-construir-processos/como-criar-formularios.md)

**Cada aplicativo de processo pode possuir somente um formulário**. Mas, não se preocupe! Dentro das configurações de [tarefas humanas](/zeev/como-construir-processos/como-desenhar-processos/o-que-sao-atividades/como-configurar-atividades-humanas.md), você irá definir quais campos ou grupo de campos do formulário serão visíveis e quais serão editáveis. Ou seja, no Zeev, você irá construir um grande formulário que inclui todas as informações necessárias para seu aplicativo rodar.  E esse formulário poderá ser quebrado em múltiplas visões, ao longo das tarefas

## Como configurar

Dentro das configurações de uma[ tarefa humana](/zeev/como-construir-processos/como-desenhar-processos/o-que-sao-atividades/como-configurar-atividades-humanas.md), você terá acesso a uma tabela com todos os campos e grupos do formulário do aplicativo. Se não existir nenhum campo ainda, quer dizer que você ainda [não criou o formulário](/zeev/como-construir-processos/como-criar-formularios.md).

Para cada campo ou grupo de campos do formulário, você irá informar, por padrão, se ele é **visível e/ou editável**, nessa tarefa em específico.

Ao clicar no botão da engrenagem, você também determinará se esse campo é **programável** e se seus **identificadores serão exibidos ou ocultados**. Ao habilitar as opções os itens são exibidos e ao desabilitar são ocultados.

<figure><img src="/files/iD6dfI905jwParUt9NEX" alt=""><figcaption></figcaption></figure>

**Visível**

Ao informar que o campo ou o grupo de campos é **visível**, você está informando que, nesta tarefa, o responsável poderá **ver** o valor do campo. Esse valor poderá estar em branco ou virá preenchido com algum valor preenchido em uma etapa anterior do processo.&#x20;

![](/files/sYXGtKxLaa6f6vldiN44)

### **Editável**

Ao informar que o campo é **editável**, você está informando que o campo está habilitado para ter seu valor modificado pelo responsável pela tarefa. Caso o campo já tenha sido preenchido antes, ele já virá pré-preenchido.

Se o campo é editável, ele será obrigatoriamente [visível ](#visivel)e também [manipulável](#manipulavel).&#x20;

Ser editável não significa que ele é obrigatório, ou seja, não significa que é obrigatório preenchê-lo. A obrigatoriedade ou não do campo será definida:

* No cadastro do campo, se ele foi configurado como obrigatório;
* No [botão de ação](/zeev/como-construir-processos/como-desenhar-processos/o-que-sao-atividades/como-configurar-atividades-humanas/como-configurar-botoes-de-acao.md) que finaliza a tarefa, se o botão foi configurado para validar a obrigatoriedade do preenchimento do formulário ou não;

![](/files/HJKBMl8MS9zE9ngTt3GO)

### **Programável**

Ao marcar um campo como programável, você indica que o valor dele pode ser lido ou modificado por customizações técnicas, como scripts em JavaScript ou integrações via API. Essa é uma configuração avançada que controla como o sistema lida com a persistência dos dados naquela tarefa específica.

#### O que acontece ao desmarcar o "Programável"?&#xD;

Se você desmarcar essa opção, o campo perde a capacidade de ser "manipulado" externamente naquela etapa. Isso resulta em alguns comportamentos importantes:

***Scripts JavaScript:*** Alterações feitas via código não serão aplicadas ao campo.\
\&#xNAN;***Integrações:*** As integrações vinculadas ao campo não serão executadas automaticamente quando a tela da tarefa for aberta pelo usuário.\
\&#xNAN;***Consolidação de dados:*** As ações realizadas no campo durante aquela tarefa específica não serão consolidadas (salvas) no banco de dados.

#### &#xD;Quando desmarcar essa função pode ser útil?&#xD;

Existem cenários estratégicos para desativar a função programável:

***Proteção de Customizações JavaScript:*** Caso você queira garantir que o valor do campo não sofra interferências de scripts automáticos durante aquela etapa do processo.\
\&#xNAN;***Controle de Execução de Integrações:*** Se você não deseja que uma integração vinculada ao campo dispare assim que o usuário abrir a tela de execução da tarefa.\
\&#xNAN;***Segurança em Modificações de Valores (Concorrência):*** Se o campo possui uma variável que é modificada constantemente via API ou por tarefas paralelas, desmarcá-lo impede que o valor preenchido na tarefa humana sobrescreva acidentalmente o que foi modificado pela outra origem externa.

{% hint style="warning" %}
**Atenção:** Se você não for um programador ou não tiver total conhecimento sobre as regras técnicas do seu processo, tenha muito cuidado ao desmarcar a opção programável. Alterar essa configuração sem necessidade pode interromper o funcionamento de automações críticas.
{% endhint %}

### **Localizar campos**

Para facilitar a localização dos campos, temos um seletor com busca textual. Ao se deparar com um processo com muitos campos de formulário pode ser importante buscar o campo por seu título.

<figure><img src="/files/3IRJrr5L787aPd5EDhrw" alt=""><figcaption></figcaption></figure>

### **Identificadores dos campos**

Ao escolher exibir os identificadores do campo, esta informação será exibida em um botão e um ícone de "copiar" também será exibido. Ao clicar sobre o identificador de algum campo do formulário, o identificador é copiado para a área de transferência.

## **Definir o valor padrão**

É possível definir o valor padrão do campo em uma tarefa, ou seja, preenchê-lo previamente com um valor fixo ou dinâmico. Esse valor irá sobrepor qualquer outro valor que tenha sido antes preenchido em outra tarefa.

Para isso, clique no botão disponível junto a configuração do campo na configuração do formulário na atividade humana.

<figure><img src="/files/XlNKTx0Ua38vaLVwdQ3V" alt=""><figcaption></figcaption></figure>

Na tela que será aberta, digite um valor fixo ou um valor dinâmico (usando [tokens](/zeev/outras-configuracoes-avancadas/dicionario-de-tokens-de-variaveis.md)), ou uma combinação de ambos. Alguns exemplos:

* `{Requester.Name}` irá preencher o campo do formulário com o nome do solicitante;
* `{Instance.Id}` irá preencher o campo do formulário com o ID da solicitação;
* `{Form.data}` irá preencher o campo do formulário com o valor de outro campo do formulário cujo identificador é "data";
* `Insumos tecnológicos` irá preencher o campo do formulário com o valor fixo "Insumos tecnológicos";

Ao invés de digitar os [tokens](/zeev/outras-configuracoes-avancadas/dicionario-de-tokens-de-variaveis.md), você pode selecioná-los em uma lista apresentada ao clicar nas chaves { } ao lado do campo.

<figure><img src="/files/u1H3pCS6MyNHTNJaVPzJ" alt=""><figcaption></figcaption></figure>

{% hint style="danger" %}
Caso o campo “Valor pré-definido” seja preenchido com uma informação proibida, será apresentado um alerta.
{% endhint %}

{% hint style="info" %}
**Dica**: esse recurso apresenta limitações se você está no [evento de início](/zeev/como-construir-processos/como-desenhar-processos/como-usar-eventos/evento-de-inicio.md). Algumas variáveis ainda não foram inicializadas no evento de início e os tokens poderão estar em branco. [Veja mais detalhes como usar uma tarefa de regra de negócio](/zeev/como-construir-processos/como-desenhar-processos/como-usar-eventos/evento-de-inicio.md#numero-da-solicitacao-e-tokens) após o evento de início para resolver isso.&#x20;
{% endhint %}

{% embed url="<https://youtu.be/XGe72_mjJmk>" %}
