English Bandeira English Español Bandeira Español Deutsch Bandeira Deutsch Italiano Bandeira Italiano Polski Bandeira Polski Nederlands Bandeira Nederlands Português Bandeira Português Français Bandeira Français 中文 Bandeira 中文 日本語 Bandeira 日本語 हिन्दी Bandeira हिन्दी اللغة العربية Bandeira اللغة العربية Русский Bandeira Русский Українська Bandeira Українська עִברִית Bandeira עִברִית Ελληνικά Bandeira Ελληνικά Türk Bandeira Türk Latvietis Bandeira Latvietis Dansk Bandeira Dansk Norsk Bandeira Norsk Íslenska Bandeira Íslenska 한국어 Bandeira 한국어 Suomen Bandeira Suomen Gaeilge Bandeira Gaeilge Bahasa Melayu Bandeira Bahasa Melayu Svenska Bandeira Svenska Čeština Bandeira Čeština
Usuário ÍconeLogin
Português Bandeira Português

Login

 

Funções e scripts (campo Fórmula)

Como usar as funções Minimum/Maximum, Ceil up/Ceil down (round) e scripts Ruby

Conteúdo

Funções mínimas/máximas
Funções de teto para cima/para baixo

Scripts (Ruby)

Operadores aritméticos e condicionais
Funções matemáticas

 

Dicas e Truques

Classificação de registros
Сálculos complexos

Contando datas usando scripts

Link para exibição de registro

Funções mínimas/máximas

Vamos ver como as funções funcionam, usando a tabela de produtos como exemplo.

Esta tabela contém as seguintes colunas:
Nome da marca e modelo;
Imagem;
Preço para junho, julho e agosto.

A tarefa é mostrar o preço mais baixo para todos os três meses.

A primeira etapa é adicionar o campo Fórmula ao formulário.

Selecione "Função" na primeira lista suspensa:

Selecione "Mínimo" na segunda lista suspensa:

Em seguida, você precisa selecionar os campos para comparação. Neste caso, são três campos de preço.
E clique no botão "Criar".

Agora apareceu o campo "Menor preço" em nossa tabela, que compara os três valores do registro e mostra o mínimo deles:

A função "Máximo" funciona exatamente ao contrário.

 

Funções de teto para cima/para baixo

Considere as funções "Teto para cima" e "Teto baixo". Aqui está uma tabela com os clientes e seus pedidos.

A tarefa é arredondar o valor na coluna "Valor a pagar".

Crie um novo campo de fórmula e selecione o "Teto para cima" (ou "Teto baixo");
Em seguida, você precisa selecionar o campo obrigatório na lista suspensa e especificar o significado.

Como resultado, obtemos uma coluna com um valor arredondado:

 

Scripts (Ruby)

Os scripts permitem que você execute operações lógicas e aritméticas. Usaremos a tabela "Vendas de verão" como exemplo. Esta tabela contém uma coluna com gerentes, sua duração de trabalho e a soma das vendas do verão.

Vamos criar um novo campo Fórmula, selecione a opção Função e o item Script (Ruby) na lista a seguir. Você pode usar nomes de campo HTML como operandos. Clique no link sob o campo de função "Como inserir dados de registro":

Uma lista de campos disponíveis aparecerá. Selecione um campo da lista e copie o nome HTML:

Além disso, você pode alterar o nome do campo HTML aqui. Basta inserir um novo nome e clicar no botão "Atualizar":

Os seguintes operadores aritméticos e condicionais estão disponíveis:

(+) adição

(-) subtração

(*) multiplicação

(/) divisão

(>) verdadeiro, se o operando esquerdo for maior que o direito

(<) verdadeiro, se o operando esquerdo for menor que o direito

(%) divisão de módulo

(==) verdadeiro, se os valores dos dois operandos forem iguais.


Operadores condicionais:

(if) usando para testar se uma condição é verdadeira. Os valores de condição false e nil são false, enquanto todos os outros serão True.

(elsif) usando para condições adicionais.

(||) usando para testar várias condições.


Vamos voltar, por exemplo. A tarefa é calcular o bônus para os gerentes.

Assuma que a taxa de bônus depende de vários fatores. O primeiro é a experiência de trabalho na empresa.

Vamos criar o seguinte script:

 

if work_months > 12

  300

 

Isso significa que, se um funcionário trabalhar na empresa por mais de 12 meses, receberá um bônus de  300 $.

Vamos criar outra condição. Se o gerente fez mais de 7.000 vendas, receberá 150 $ + 25%.

O script deve ficar assim:

elsif sales > 7000
 (150*0.25)+150

Em todos os outros casos, o bônus será de 150 $

else
 150

É necessário especificar end, para que o script funcione corretamente.

 

 

Agora podemos calcular o bônus para cada gerente:

Métodos e operadores disponíveis: to_f, to_i, to_s, round, floor, ceil, ceiling_up, ceiling_down, include?, if, elsif, else, end.
Para verificar se o campo contém um valor específico, você também pode usar o elemento [].

Exemplo de uso:

if 'suprimentos' ['estoque']
   true
else
   false
end

Além disso, você pode usar duas variáveis: ab

Além dos operadores aritméticos, você pode usar raízes e funções trigonométricas, logarítmicas e transcendentais básicas. As funções devem ser escritas da seguinte forma: Math::function(Field_name). Por exemplo, Math::acos(Field_csIfon). Lista detalhada de funções matemáticas:

Funções trigonométricas

(::cos) Retorna o cosseno do argumento fornecido.
(::sin) Retorna o seno do argumento fornecido.
(::tan) Retorna a tangente do argumento fornecido.

Funções trigonométricas inversas

(::acos) Retorna o arco cosseno do argumento fornecido.
(::asin) Retorna o arco seno do argumento fornecido.
(::atan) Retorna o arco tangente do argumento fornecido.
(::atan2) Retorna a tangente arg de dois argumentos fornecidos.


Funções trigonométricas hiperbólicas

(::cosh) Retorna o cosseno hiperbólico do argumento fornecido.
(::sinh) Retorna o seno hiperbólico do argumento fornecido.
(::tanh) Retorna a tangente hiperbólica do argumento fornecido.


Funções trigonométricas hiperbólicas inversas

(::acosh) Retorna o cosseno hiperbólico inverso do argumento fornecido.
(::asinh) Retorna o seno hiperbólico inverso do argumento fornecido.
(::atanh) Retorna a tangente hiperbólica inversa do argumento fornecido.


Exponenciação e funções logarítmicas

(::exp) Retorna o valor de um determinado valor elevado a uma determinada potência.
(::log) Retorna o logaritmo de um determinado valor em uma determinada base.
(::log10) Retorna o logaritmo de base 10 do argumento fornecido.
(::log2) Retorna o logaritmo de base 2 do argumento fornecido.


Funções de fração e expoente

(::frexp) Retorna a fração e o expoente do argumento fornecido.
(::ldexp) Retorna o valor de uma determinada fração e expoente.


Funções Raiz

(::cbrt) Retorna a raiz cúbica do argumento fornecido.
(::sqrt) Retorna a raiz quadrada do argumento fornecido.


Funções de erro

(::erf) Retorna o valor da função de erro de Gauss para o argumento fornecido.
(::erfc) Retorna o valor da função de erro complementar para o argumento fornecido.


Funções Gama

(::gamma) Retorna o valor da função gama para o argumento fornecido.
(::lgamma) Retorna o valor da função gama logarítmica para o argumento fornecido.

Função Hipotenusa

(::hypot) Retorna sqrt(a**2 + b**2) para os dados a e b.

 

Dicas e Truques

Aqui estão alguns exemplos de como simplificar seu trabalho usando funções.

Temos uma tabela de candidatos a emprego:

A tarefa é dividir os candidatos em três grupos: um candidato adequado, um candidato reserva e um candidato inadequado.

Podemos usar o Formulário de Pesquisa, mas depois teremos que usar todos os critérios:

Um campo de fórmula com uma função vem em socorro. Vamos criar uma nova fórmula de "Seleção".

Temos que dividir os candidatos em três grupos condicionais.

Caso o candidato possua:

- Idade inferior a 45 anos;

- Ensino superior;

- Experiência profissional superior a 5 anos;

- Uma recomendação de um empregador anterior, então tal candidato recebe o status "Adequado".

Para o grupo "Reserva", um candidato precisa ter menos de 50 anos, ensino superior ou superior e mais de 5 anos de experiência profissional.

Todos os outros candidatos recebem o status "Inadequado".

 

Vamos escrever o seguinte código para a função:

if age<45 && "Educação" == "Higher" && exp>5 && "recomendar" == "Yes"
   "Suitable"
elsif age<50 && "Educação" == "Higher" || "Tertiary" && exp>5
   "Reserve"
else
   "Unsuitable "
end

Observe: valores numéricos (incluindo nomes de campo html) não são citados. As aspas são usadas apenas para valores de string.

Como você pode ver na captura de tela a seguir, cada candidato recebeu um status com base nos critérios:

É muito mais fácil pesquisar em um único campo em vez de vários critérios:

O mesmo com a formatação condicional em uma tabela:

Utilizamos o campo "Seleção" para formatar registros na tabela:

É muito mais conveniente gerar um Relatório após pesquisar ou agrupar por um campo:

Que contém todos os candidatos por critérios selecionados:

Não se esqueça das Ações Condicionais e do campo Ação. Por exemplo, crie um botão com a ação "Enviar e-mail", que está disponível no registro apenas com os candidatos "Adequados".

Um campo de função pode ser usado como um critério nas regras de campo. Por exemplo, habilite o campo "Seleção" no formulário:

Em seguida, vamos criar um novo campo "Adicionar à fila" (botão de rádio) com uma escolha de dois valores:

Crie uma regra.

Se o campo "Seleção" consistir em "Reserva", mostre o campo "Adicionar à fila":

É assim que fica no formulário:

As funções permitirão não apenas um gerenciamento de dados mais eficiente, mas também cálculos mais complexos. Por exemplo, considere uma tabela de definição de lucro:

A tarefa é calcular o lucro total.

A fórmula fica assim: lucro total = receita - custo total

Se realizarmos esse cálculo usando fórmulas padrão, teremos que dividir o cálculo em várias fórmulas (calcular separadamente a receita e o custo total).

Usando funções Ruby, você pode fazer este cálculo em um campo:

(preço_de_venda*quantidade)-(custo_de_compra*quantidade)

Lucro total na tabela:

Observação: para o cálculo correto, você deve usar o tipo de campo "Decimal".

 

Contando dias entre datas

Por exemplo, usaremos uma tabela com contratos. Tarefa: mostre quantos dias o contrato terminará.

Crie o seguinte script:

exp_date.mjd - DateTime.now

Onde:

exp_date - nome do campo html.

.mjd method - converte a data para o formato do calendário juliano.

DateTime.now - objeto cujo valor é a data e hora locais atuais.

Como resultado, obtemos uma coluna com o número de dias até o final do contrato.

Aqui está outro exemplo.

Tarefa: determinar o ano de nascimento, tendo apenas a idade de uma pessoa.

Crie o seguinte script:

DateTime.year - era

Where:

era - nome do campo html.

DateTime.year - objeto cujo valor é o ano atual.

Como resultado, obtemos uma coluna com o ano de nascimento de cada pessoa.


Link para visualização de registro

Usando o script, você pode criar um link para a visualização do registro. Vá para o menu "Registros" e abra a visualização do registro.

Open the record view
Copie o link na barra de endereço:
Copy the record view link
Crie um campo de Fórmula. Selecione "Script (Ruby)" na lista. Você precisa usar a variável "a" e um link de registro da etapa anterior (escrito entre aspas). Substitua o ID do registro por "Número de ID de entrada" da lista por |internal_id| valor:
Replace the record ID
Assim, você obterá um link para o registro na tabela:
Link to record view by the table
Você pode usar um link para o widget de registro da mesma maneira:

Link to Record widget