Campos calculados em SKD 1s 8.2. Linguagem de expressão do sistema de composição de dados (1Cv8)

CalcularExpressãoé uma função ACS bastante difícil de entender e os exemplos de aplicação nas informações de referência são bastante escassos. Este artigo discute exemplos que certamente serão úteis para todos os desenvolvedores:

  1. total acumulado no agrupamento;
  2. total acumulado em uma tabela cruzada;
  3. obtendo o valor anterior;
  4. Saída PM em uma linha.

1. Obtenção de indicador pelo regime de competência

Vamos obter a quantidade de mercadorias como um total acumulado no nível do agrupamento. Para fazer isso, crie um campo calculado (veja a Figura 1).
Na aba "Recursos", defina a função para o campo calculado:
CalculaExpression("Soma(QuantidadeTurnover)", "Primeiro", "Atual")
que somará o número de produtos do primeiro registro ao atual (ver Figura 2).

Se a quantidade total acumulada de um item precisar ser obtida no nível de registros detalhados, definimos a função CalculaExpression para o campo calculado na guia “Campos calculados” (ver Figura 3).
Dependendo do nível de obtenção do total acumulado, criamos um agrupamento (ver Figura 4): ao nível dos recursos - agrupamento por mercadorias, ao nível do controlo remoto - agrupamento de registos detalhados.
Figura 4. Agrupamentos de relatórios com totais acumulados

2. Obtendo o valor do indicador da linha anterior

Vamos obter a taxa de câmbio da data e da data anterior. Para fazer isso, crie um campo calculado e escreva a seguinte expressão no campo de expressão (veja a Figura 5):
CalculaExpression("Taxa", "Anterior", "Anterior")
que levará o valor anterior da taxa de câmbio para a linha atual, o último parâmetro da função limita o recebimento de dados.
Como estamos trabalhando no nível de registros detalhados, vamos imediatamente para a aba “Configurações” e criamos um agrupamento - registros detalhados.

3. Obtenção de um indicador como um total acumulado em uma tabela cruzada

Vamos obter a quantidade de mercadorias pelo regime de competência por período. Para fazer isso, crie um campo calculado (veja a Figura 1). Na aba "Recursos", especificamos a seguinte expressão para o campo calculado (ver Figura 6):
CalculaExpression("Soma(QuantidadeTurnover)", "Período", "Primeiro", "Atual")
que no nível do agrupamento calculará a quantidade de mercadorias no intervalo da primeira linha até a atual no contexto do período de cada item.
Na aba “Configurações”, crie uma tabela agrupando por item em uma linha e agrupando por período em uma coluna (ver Figura 7).

4. Saída de dados tabulares em uma linha

Métodos para exibir dados tabulares em uma linha, incluindo o método que usa a função CalculaExpression, são discutidos no artigo

Uma das ferramentas de desenvolvimento mais convenientes e exclusivas em 1C é o sistema de composição de dados (DCS). Poucos sistemas de informação permitem que os desenvolvedores criem relatórios sem escrever código. Este mecanismo foi desenvolvido para simplificar e acelerar o desenvolvimento de formulários de relatórios e dar mais oportunidades aos utilizadores no trabalho com os dados de saída. Este último é muito valorizado pelos usuários avançados, que graças a isso podem personalizar de forma independente o relatório de acordo com suas necessidades, sem esperar pelas ações dos desenvolvedores.

Criando um relatório em 1C via SKD

O processo de desenvolvimento de um relatório utilizando ACS pode ser dividido nas seguintes etapas:

  1. Criando uma solicitação. Você pode escrever uma solicitação manualmente ou sem código usando uma interface conveniente;
  2. Configurando o relatório. Selecione campos, totais, agrupamentos, parâmetros, design de relatório;
  3. Depois disso, basta conectar o relatório resultante à configuração de qualquer forma disponível.

Apesar da possibilidade dos usuários personalizarem relatórios sobre o sistema de controle de acesso, eles devem ser criados através do configurador.

Vejamos um exemplo de criação de um relatório externo sobre um sistema de controle de acesso:


Agora vamos para 1C, abrimos nosso relatório para ter certeza de que as ações tomadas estão corretas. Todos os dados são refletidos, os agrupamentos podem ser recolhidos e expandidos. Como você pode ver, o sistema de controle de acesso permite receber relatórios completos sem escrever código, com exceção de requisitos não padronizados. Considerando que a maioria dos relatórios possui estrutura semelhante, o conhecimento do sistema de controle de acesso reduzirá significativamente o tempo de desenvolvimento desses objetos.

Este mecanismo tornou-se muito popular devido ao seu suporte para extensas capacidades de relatórios. Além disso, não apenas os desenvolvedores, mas também os usuários comuns podem usá-los.

Capacidades ACS

Há situações em que fizemos uma denúncia e aí chega um usuário e pede para fazer uma pequena modificação. Por exemplo, em vez de nomes de produtos, exiba os números dos artigos. SKD permite que os usuários façam tais modificações de forma independente usando o botão “Mais” - “Alterar opção...”.


A janela que se abre é semelhante à janela de configurações do relatório do configurador e também possui funções semelhantes. Para resolver a tarefa, o usuário deve ir até a aba “Campos” e alterar o campo “Nomenclatura”. Este campo de edição é aberto com um duplo clique e o botão “Selecionar...” fica disponível.


A janela que se abre nos dá a oportunidade de selecionar qualquer valor que aparecerá no campo “Nomenclatura”. Alguns campos possuem um sinal de mais à esquerda - o desenvolvedor colocou links nesses campos, o que significa que podemos ver seus detalhes. Abrimos “Nomenclatura” e vemos o artigo que necessitamos. Selecione-o e selecione-o.


A janela para alterar as opções do relatório contém muitas funções úteis do sistema de composição de dados. Por exemplo, o usuário pode alterar independentemente a ordem dos agrupamentos, adicionar seleção ou aplicar design condicional. Concluímos a edição e geramos um relatório - como vocês podem ver, toda a gama de produtos agora é exibida na forma de artigos.


O mecanismo SKD 1C:Enterprise 8.3 também expandiu a funcionalidade para desenvolvedores. Ao desenvolver o relatório, utilizamos apenas 2 abas - “Conjuntos de dados” e “Configurações”, mas há muito mais delas no ACS. Para utilizar todas as funções do sistema de composição de dados, você precisa entender para que serve cada uma das abas:

  1. Conjuntos de dados – todas as consultas envolvidas na geração do relatório estão listadas aqui;
  2. Conexões de conjuntos de dados – usadas para construir conexões entre diferentes consultas a partir da primeira aba;
  3. Campos calculados – uma lista de campos adicionados que não são da consulta. Mais frequentemente utilizado nos casos em que, com base nos valores de vários campos, é necessário obter 1 valor da solicitação;
  4. Recursos. Em 1C, este é o nome dos campos cujos resultados você precisa conhecer. Os recursos suportam diversas operações aritméticas – soma, quantidade, máximo e outras;
  5. Opções. São utilizados se para gerar um relatório for necessário que o usuário insira determinados dados – data, divisões ou nomenclatura, por exemplo;
  6. Layouts. Projetado para casos em que os usuários desejam ver um relatório com design exclusivo. Você pode criar um local separado para assinaturas ou uma nova parte superior do relatório - tudo isso pode ser feito aqui;
  7. Diagramas aninhados. Eles são necessários quando o seu relatório deve conter dados de outros relatórios;
  8. Configurações. A seção declara os campos exibidos, agrupamentos e configura a aparência do relatório.


O número de possibilidades incorporadas ao mecanismo ACS pelos desenvolvedores é grande, mas muitas delas são utilizadas extremamente raramente. Mesmo programadores 1C experientes podem não usar algumas funções após anos de trabalho. Para começar a trabalhar com sucesso no sistema de controle de acesso, basta conhecer os conceitos básicos e configurações frequentemente utilizadas. Em casos raros, a documentação virá em socorro.

Faça login no site como estudante

Faça login como aluno para acessar materiais escolares

Sistema de composição de dados 1C 8.3 para iniciantes: contando os resultados (recursos)

O objetivo desta lição será:

  • Escreva um relatório que exiba uma lista de produtos (diretório de alimentos), seu conteúdo calórico e sabor.
  • Agrupe os produtos por cor.
  • Saiba mais sobre resumo (recursos) e campos calculados.

Criar um novo relatório

Como nas lições anteriores, abrimos o banco de dados " Delicatessen"no configurador e crie um novo relatório através do menu" Arquivo"->"Novo...":

Tipo de documento - relatório externo:

No formulário de configuração do relatório, escreva o nome " Lição 3" e pressione o botão " Diagrama de composição de dados abertos":

Deixe o nome do esquema padrão e clique no botão " Preparar":

Adicionando uma solicitação por meio do construtor

Na aba " Conjunto de dados" clique verde sinal de mais e selecione " Adicionar conjunto de dados – consulta":

Em vez de escrever o texto da solicitação manualmente, nós o executamos novamente construtor de consulta:

Na "guia" Tabelas"arraste a mesa" Comida"da primeira coluna para a segunda:

Selecione na tabela " Comida"campos que iremos solicitar. Para isso, arraste e solte os campos" Nome", "Gosto", "Cor" E " Conteúdo calórico"da segunda coluna para a terceira:

Aconteceu assim:

Aperte o botão " OK" - o texto da solicitação foi gerado automaticamente:

Criando configurações de apresentação de relatório

Vá para a guia " Configurações" e clique em varinha mágica, chamar designer de configurações:

Selecione o tipo de relatório " Lista..." e pressione o botão " Avançar":

Arraste da coluna da esquerda para a direita os campos que serão exibidos na lista e clique em " Avançar":

Arraste da coluna esquerda para o campo direito " Cor" - isso vai acontecer agrupamento linhas no relatório. Clique em " OK":

E aqui está o resultado do trabalho do designer. Hierarquia do nosso relatório:

  • o relatório como um todo
  • agrupamento "Cor"
  • entradas detalhadas - linhas com nomes de alimentos

Salvar o relatório (botão disquete) E sem fechar Abriremos imediatamente o configurador em modo de usuário. Aconteceu assim:

Alterando a ordem das colunas

Mas vamos vamos mudar a ordem colunas (setas para cima e para baixo) para que fique como na figura abaixo:

Vamos salvar o relatório e abri-lo novamente em modo usuário:

Ótimo, isso é muito melhor.

Vamos resumir o conteúdo calórico

Seria bom resumir o conteúdo calórico dos alimentos por grupo. Para ver a soma do conteúdo calórico de todos os produtos, digamos, brancos ou amarelos. Ou descubra o conteúdo calórico total de todos os produtos do banco de dados.

Para tanto, existe um mecanismo de cálculo de recursos.

Vá para a guia " Recursos"e arraste o campo" Conteúdo calórico"(vamos resumir) da coluna da esquerda para a direita.

Neste caso, no campo, selecione a expressão na lista suspensa " Quantidade (calorias)", já que o total será a soma de todos os elementos incluídos no total:

Salvamos e geramos um relatório:

Agora temos resultados para cada um dos grupos e para o relatório como um todo.

Vamos resumir (média) em termos de calorias

Agora vamos fazer com que apareça em outra coluna média conteúdo calórico dos produtos por grupos e no relatório como um todo.

Você não pode tocar na coluna “Calorias” existente - o total já está exibido nela, então vamos criar outro campo, que será uma cópia exata do campo "Calorias".

Para criar tal campo “virtual”, usaremos o mecanismo campos calculados.

Vá para a guia " Campos calculados" e pressione verde sinal de mais:

Em uma coluna " Caminho de dados"escrevemos o nome do novo campo ( perfeitamente, sem espaços). Que seja chamado de " Conteúdo médio de calorias", e na coluna" Expressão"escrevemos o nome de um campo existente com base no qual o novo campo será calculado. Escrevemos lá " Conteúdo calórico". Coluna " Cabeçalho" será preenchido automaticamente.

Adicionamos um novo campo (" Conteúdo médio de calorias"), mas não aparecerá no relatório por si só - você precisa ligar novamente designer de configurações("varinha mágica") ou adicione este campo manualmente.

Vamos fazê-lo segundo caminho. Para fazer isso, vá até a aba " Configurações", selecione " Relatório"(afinal, queremos adicionar o campo como um todo ao relatório), selecione a aba na parte inferior" Campos selecionados"e arraste o campo" Conteúdo médio de calorias"da coluna da esquerda para a direita:

Aconteceu assim:

Salvamos e geramos um relatório:

O campo apareceu e vemos que seus valores são os valores do campo “Calorias”. Ótimo!

Para fazer isso, usaremos novamente o mecanismo que já conhecemos recursos(resumindo). Vá para a guia " Recursos"e arraste o campo" Conteúdo médio de calorias"da coluna da esquerda para a direita:

Além disso, na coluna " Expressão"escolher" Média (calorias médias)":

Salvamos e geramos um relatório:

Vemos que para os grupos, ou seja, para cada cor, e para o relatório como um todo, o valor médio foi calculado de forma absolutamente correta. Mas eles estão presentes entradas extras para produtos individuais (não grupos) que gostaria de remover do relatório.

Você sabe por que eles apareceram (valores não por grupo)? Porque quando adicionamos o campo " Conteúdo médio de calorias"nas configurações do relatório, na segunda etapa selecionamos todo o relatório e esse novo campo entrou no elemento " Detalhado registros".

Vamos corrigir o erro. Para fazer isso, volte para a aba " Configurações", selecione " Entradas detalhadas" primeiro de cima (etapa 2) e depois " Entradas detalhadas"de baixo (etapa 3), vá para o marcador" Selecionado Campos" e veremos na coluna da direita o elemento " Auto".

Elemento " Auto" - este não é um campo. São vários campos que caem aqui automaticamente com base em configurações de nível superior.

Para ver quais são esses campos, clique no elemento " Auto" certo botão e selecione " Expandir":

Elemento " Auto" expandido para os seguintes campos:

E aqui está o nosso campo" Conteúdo médio de calorias"que veio aqui do ponto" Relatório" quando o arrastamos para lá. Apenas vamos remover marque a caixa ao lado deste campo para remover sua saída.

Examinamos com algum detalhe as configurações dos relatórios implementados com base em sistemas de controle de acesso. Agora vamos examinar configurações mais sutis e detalhadas para opções de relatório. A janela de configurações “avançadas” da opção de relatório é chamada pelo comando “Mais” - “Outros” - “Alterar opção de relatório”.

A janela para alteração da versão do relatório está dividida em duas partes:

1. Estrutura do relatório.

2. Configurações do relatório.


A seção de estrutura de opções do relatório é semelhante à guia “Estrutura” das configurações padrão do relatório. A finalidade e a configuração dos agrupamentos são discutidas detalhadamente na Parte 1 do artigo.

A tabela de estrutura de variantes do relatório, além da coluna real com agrupamentos, contém várias colunas adicionais:

A seção de configurações de opções de relatório oferece ao usuário amplas oportunidades para configurar o relatório de acordo com suas necessidades. Coincide quase completamente com as configurações de relatório padrão discutidas na Parte 1. Vejamos todas as guias da seção e observemos as diferenças.

A seção de configurações consiste nas seguintes guias:

1. Parâmetros. Contém parâmetros ACS disponíveis para o usuário.

O parâmetro SKD é um valor usado para obter dados do relatório. Este pode ser um valor de condição para seleção ou verificação de dados, bem como um valor auxiliar.


A tabela de parâmetros é apresentada no formato “Parâmetro” - “Valor”. Se necessário, você pode alterar os valores dos parâmetros. Clicar no botão “Propriedades do item de configurações personalizadas” abre as configurações personalizadas do elemento.


Nesta janela é possível selecionar se o elemento será incluído nas configurações do usuário (ou seja, visível para o usuário na configuração do relatório), definir o modo de apresentação e edição do elemento (acesso rápido no cabeçalho do relatório, normal no configurações de relatório e inacessíveis).

As propriedades do item de configurações personalizadas também possuem campos agrupáveis, margens, seleções e elementos de aparência condicional.

2. Campos personalizados. Contém campos que são gerados pelo próprio usuário com base nos dados selecionados pelo relatório.


O usuário pode adicionar dois tipos de campos:

  • Novo campo de seleção...
  • Novo campo de expressão...

Os campos de seleção permitem calcular um valor com base em uma determinada condição. A janela de edição do campo de seleção contém um título do campo e uma tabela na qual são especificados a seleção, o valor e a apresentação do campo. A seleção é uma condição dependendo da qual o valor desejado será substituído.


Por exemplo, vamos calcular uma estimativa do número de vendas. Assumiremos que se forem vendidas menos de 10 unidades de um produto, vendemos pouco, e se forem mais de 10 unidades, vendemos muito. Para isso, definiremos 2 valores para o campo calculado: o primeiro será com a seleção “Número de mercadorias menor ou igual a “10””, o segundo com a seleção “Número de mercadorias maior que “10” ””.

Os campos de expressão permitem calcular um valor usando algoritmos arbitrários. Eles podem usar as funções da linguagem de consulta e da linguagem de programação 1C integrada. A janela de edição do campo de expressão contém dois campos para expressões de registros detalhados e resumidos. Os registros totais são agrupamentos configurados na área “Estrutura do Relatório”; devem utilizar funções agregadas (“Soma”, “Mínimo”, “Máximo”, “Quantidade”).

Por exemplo, vamos calcular a porcentagem média de desconto. O percentual médio de desconto é calculado pela fórmula: [Valor de vendas sem desconto] - [Valor de vendas com desconto] / [Valor de vendas sem desconto]. É importante lembrar que o valor da venda sem desconto pode ser zero, por isso utilizamos o operador SELECT para verificar. Obtemos as seguintes expressões:

· Para entradas detalhadas:

Escolha

Quando [Valor de vendas sem desconto] = 0

Então 0

Caso contrário [Valor de vendas sem desconto] - [Valor de vendas com desconto] / [Valor de vendas sem desconto]

Fim

· Para registros resumidos:

Escolha

Quando Amount([Valor de vendas sem desconto]) = 0

Então 0

Caso contrário Sum([Valor de vendas sem desconto]) - Sum([Valor de vendas com desconto]) / Sum([Valor de vendas sem desconto])

Fim

Conforme mencionado anteriormente, na expressão do total de registros utilizamos a função agregada “Soma”.

3. Campos agrupáveis. Contém campos pelos quais os resultados da variante do relatório serão agrupados. Os campos agrupados são configurados separadamente para cada agrupamento, mas você pode definir campos agrupados gerais para uma opção de relatório se selecionar a raiz “Relatório” na árvore de estrutura. Você pode adicionar um campo do resultado do relatório, um campo personalizado ou selecionar um campo automático e o sistema selecionará os campos automaticamente. Esta guia também permite alterar a ordem dos campos agrupados.


4. Campos. Contém os campos que serão gerados como resultado da variante do relatório. Os campos são configurados separadamente para cada agrupamento, mas você pode definir campos comuns para uma opção de relatório se selecionar a raiz “Relatório” na árvore de estrutura. Você pode adicionar um campo do resultado do relatório, um campo personalizado ou selecionar um campo automático e o sistema selecionará os campos automaticamente. Esta guia também permite alterar a ordem dos campos.

Os campos podem ser agrupados para destacar logicamente qualquer parte do relatório ou para especificar uma disposição especial de colunas. Ao adicionar um grupo, a coluna “Localização” fica ativa e permite selecionar uma das opções de localização:

  • Auto – o sistema coloca os campos automaticamente;
  • Horizontal – os campos são posicionados horizontalmente;
  • Vertical – os campos são organizados verticalmente;
  • Em uma coluna separada - os campos estão localizados em colunas diferentes;
  • Juntos - os campos estão localizados em uma coluna.


5. Seleção. Contém seleções usadas na variante do relatório. A configuração das seleções foi discutida em detalhes na parte 1 deste artigo. Os filtros são configurados separadamente para cada agrupamento, mas você pode definir filtros gerais para uma opção de relatório se selecionar a raiz “Relatório” na árvore de estrutura.


6. Classificação. Contém os campos de classificação usados ​​na variante do relatório. A configuração de campos de classificação foi discutida em detalhes na Parte 1 deste artigo. A classificação é configurada separadamente para cada agrupamento, mas você pode definir campos de classificação geral para uma opção de relatório se selecionar a raiz “Relatório” na árvore de estrutura.


7. Registro condicional. Contém elementos de design condicional usados ​​na variante de relatório. A configuração da aparência condicional foi discutida detalhadamente na Parte 1 deste artigo. A aparência condicional é configurada separadamente para cada agrupamento, mas você pode definir elementos gerais de aparência condicional para uma opção de relatório se selecionar a raiz “Relatório” na árvore de estrutura.


8. Configurações adicionais. Contém configurações adicionais de design de relatório. Permite selecionar a aparência geral do relatório, a localização dos campos, agrupamentos, detalhes, recursos, totais, definir configurações do gráfico, controlar a exibição do título, parâmetros e seleção, determinar a posição dos recursos e corrigir o cabeçalho e agrupamento colunas da versão do relatório.


Concluindo, gostaria de observar que as configurações do relatório não só podem ser salvas como uma opção de relatório, mas também carregadas em um arquivo (menu “Mais” - “Salvar configurações”). Para fazer o download, você deve selecionar “Carregar configurações” e selecionar o arquivo salvo. Assim, podemos transferir configurações de variantes de relatório entre diferentes bancos de dados que possuem a mesma configuração.


Com base nisso, podemos resumir que o usuário pode não apenas personalizar o relatório de forma independente para atender às suas necessidades, mas também salvar suas configurações e utilizá-las no futuro, se necessário.

Linguagem de expressão do sistema de composição de dados

A linguagem de expressão do sistema de composição de dados foi projetada para escrever expressões usadas em várias partes do sistema.

As expressões são usadas nos seguintes subsistemas:

  • diagrama de layout de dados - para descrever campos calculados, campos totais, expressões de relacionamento, etc.;
  • configurações de layout de dados - para descrever expressões de campos personalizados;
  • layout de layout de dados - para descrever expressões para conectar conjuntos de dados, descrever parâmetros de layout, etc.

Literais

A expressão pode conter literais. Os seguintes tipos de literais são possíveis:

  • Linha;
  • Número;
  • Data de;
  • Boleano.

Linha

Uma string literal é escrita em caracteres “”, por exemplo:

“String literal”

Se você precisar usar o caractere “” dentro de uma string literal, você deve usar dois desses caracteres.

Por exemplo:

“Literal ““entre aspas”““

Número

O número é escrito sem espaços, em formato decimal. A parte fracionária é separada pelo símbolo "." Por exemplo:

10.5 200

data

Um literal de data é escrito usando a chave literal DATETIME. Após esta palavra-chave, o ano, mês, dia, horas, minutos e segundos são listados entre parênteses, separados por vírgulas. A especificação de tempo não é necessária.

Por exemplo:

DATETIME(1975, 1, 06) – 6 de janeiro de 1975 DATETIME(2006, 12, 2, 23, 56, 57) – 2 de dezembro de 2006, 23 horas 56 minutos 57 segundos, 23 horas 56 minutos 57 segundos

boleano

Valores booleanos podem ser escritos usando os literais True (True), False (False).

Significado

Para especificar literais de outros tipos (enumerações de sistema, dados predefinidos), é utilizada a palavra-chave Value, seguida do nome do literal entre parênteses.

Valor(AccountType. Ativo)

Operações em números

Unário –

Esta operação tem como objetivo alterar o sinal de um número para o oposto. Por exemplo:

Vendas.Quantidade

Unário +

Esta operação não executa nenhuma ação no número. Por exemplo:

Vendas.Quantidade

Binário -

Esta operação tem como objetivo calcular a diferença de dois números. Por exemplo:

ResiduaisAndTurnovers.InitialRemaining – RemainingsAndTurnovers.FinalResidualsRemainingsAndTurnovers.InitialRemaining - 100 400 – 357

Binário +

Esta operação foi projetada para calcular a soma de dois números. Por exemplo:

RemainingsAndTurnover.InitialRemaining + RemainingAndTurnover.Turnover ResíduosAndTurnover.InitialRemaining + 100 400 + 357

Trabalhar

Esta operação foi projetada para calcular o produto de dois números. Por exemplo:

Nomenclatura.Preço * 1,2 2 * 3,14

Divisão

Esta operação tem como objetivo obter o resultado da divisão de um operando por outro. Por exemplo:

Nomenclatura.Preço / 1,2 2 / 3,14

Resto da divisão

Esta operação tem como objetivo obter o resto quando um operando é dividido por outro. Por exemplo:

Nomenclatura. Preço % 1,2 2 % 3,14.

Operações de cordas

Concatenação (binário +)

Esta operação foi projetada para concatenar duas strings. Por exemplo:

Nomenclatura.Artigo + “: ”+ Nomenclatura.Nome

Como

Esta operação verifica se a string corresponde ao padrão passado.

O valor do operador LIKE é TRUE se o valor<Выражения>satisfaz o padrão e FALSE caso contrário.

Os seguintes caracteres em<Строке_шаблона>tem um significado diferente de apenas outro caractere na linha:

  • % - porcentagem: uma sequência contendo zero ou mais caracteres arbitrários;
  • _ - sublinhado: um caractere arbitrário;
  • […] - um ou mais caracteres entre colchetes: um caractere, qualquer um dos listados entre colchetes. A enumeração pode conter intervalos, por exemplo a-z, significando um caractere arbitrário incluído no intervalo, incluindo as extremidades do intervalo;
  • [^...] - entre colchetes um ícone de negação seguido de um ou mais caracteres: qualquer caractere exceto aqueles listados após o ícone de negação;

Qualquer outro símbolo significa si mesmo e não carrega nenhuma carga adicional. Se um dos caracteres listados precisar ser escrito como ele mesmo, ele deverá ser precedido por<Спецсимвол>, especificado após a palavra-chave SPECIAL CHARACTER (ESCAPE).

Por exemplo, modelo

“%ABV[abvg]\_abv%” CARÁTER ESPECIAL “\”

significa uma substring que consiste em uma sequência de caracteres: a letra A; letras B; letras B; um dígito; uma das letras a, b, c ou d; sublinhado; letras a; letras b; cartas v. Além disso, esta sequência pode ser localizada a partir de uma posição arbitrária na linha.

Operações de comparação

É igual a

Esta operação tem como objetivo comparar dois operandos quanto à igualdade. Por exemplo:

Vendas.Counterparty = Vendas.NomenclaturaPrincipalFornecedor

Não igual

Esta operação tem como objetivo comparar dois operandos quanto à desigualdade. Por exemplo:

Vendas.Contraparte<>Vendas.NomenclaturaPrincipalFornecedor

Menos

Esta operação tem como objetivo verificar se o primeiro operando é menor que o segundo. Por exemplo:

VendasCurrent.Amount< ПродажиПрошлые.Сумма

Mais

Esta operação tem como objetivo verificar se o primeiro operando é maior que o segundo. Por exemplo:

SalesCurrent.Sum > SalesPast.Sum

Menor ou igual

Esta operação tem como objetivo verificar se o primeiro operando é menor ou igual ao segundo. Por exemplo:

VendasCurrent.Amount<= ПродажиПрошлые.Сумма

Mais ou igual

Esta operação tem como objetivo verificar se o primeiro operando é maior ou igual ao segundo. Por exemplo:

SalesCurrent.Amount >= SalesPast.Amount

Operação B

Esta operação verifica a presença de um valor na lista de valores passada. O resultado da operação será True se o valor for encontrado, ou False caso contrário. Por exemplo:

Item B (&Produto1, &Produto2)

Operação de verificação da presença de um valor em um conjunto de dados

A operação verifica a presença de um valor no conjunto de dados especificado. O conjunto de dados de validação deve conter um campo. Por exemplo:

Vendas de contraparte para contrapartes.

Operação de verificação de um valor para NULL

Esta operação retorna True se o valor for NULL. Por exemplo:

Vendas.Contraparte É NULO

Operação de verificação de um valor para desigualdade NULL

Esta operação retorna True se o valor não for NULL. Por exemplo:

Vendas de contraparte NÃO É NULA.

Operações lógicas

As operações lógicas aceitam expressões do tipo Boolean como operandos.

Operação NÃO

A operação NOT retorna True se seu operando for False e False se seu operando for True. Por exemplo:

NÃO Documento.Consignee = Documento.Consignor

Operação I

A operação AND retorna True se ambos os operandos forem True e False se um dos operandos for False. Por exemplo:

Document.Consignee = Document.Consignor AND Document.Consignee = &Consignee

OU operação

A operação OR retorna True se um de seus operandos for True e False se ambos os operandos forem False. Por exemplo:

Documento.Consignatário = Documento.Consignatário OU Documento.Consignatário = &Consignatário

Funções agregadas

As funções agregadas executam alguma ação em um conjunto de dados.

Soma

A função soma agregada calcula a soma dos valores das expressões passadas a ela como argumento para todos os registros detalhados. Por exemplo:

Valor(Vendas.ValorTurnover)

Quantidade

A função Count calcula o número de valores diferentes de NULL. Por exemplo:

Quantidade(Vendas.Contraparte)

Número de diferentes

Esta função calcula o número de valores distintos. Por exemplo:

Quantidade (Várias Vendas.Contraparte)

Máximo

A função obtém o valor máximo. Por exemplo:

Máximo (quantidade restante)

Mínimo

A função obtém o valor mínimo. Por exemplo:

Mínimo (Quantidade.Remanescente)

Média

A função obtém a média de valores não NULOS. Por exemplo:

Média (Quantidade.Remanescente)

Outras operações

Operação SELECIONAR

A operação Select tem como objetivo selecionar um entre vários valores quando certas condições são atendidas. Por exemplo:

Selecione quando Valor > 1000 Então Valor Caso contrário 0 Fim

Regras para comparar dois valores

Se os tipos de valores comparados forem diferentes entre si, as relações entre os valores serão determinadas com base na precedência dos tipos:

  • NULO (mais baixo);
  • Boleano;
  • Número;
  • Data de;
  • Linha;
  • Tipos de referência

As relações entre diferentes tipos de referência são determinadas com base nos números de referência das tabelas correspondentes a um determinado tipo.

Se os tipos de dados forem iguais, os valores serão comparados de acordo com as seguintes regras:

  • para o tipo Booleano o valor TRUE é maior que o valor FALSE;
  • o tipo Number possui as regras usuais de comparação para números;
  • para o tipo Data, as datas anteriores são menores que as posteriores;
  • para o tipo String - comparação de strings de acordo com as características nacionais estabelecidas na base de dados;
  • os tipos de referência são comparados com base em seus valores (número do registro, etc.).

Trabalhando com valor NULL

Qualquer operação em que um dos operandos seja NULL produzirá um resultado NULL.

Existem exceções:

  • A operação AND retornará NULL somente se nenhum dos operandos for False;
  • A operação OR só retornará NULL se nenhum de seus operandos for True.

Prioridades de operação

As operações têm as seguintes prioridades (a primeira linha tem a prioridade mais baixa):

  • B, É NULO, NÃO É NULO;
  • =, <>, <=, <, >=, >;
  • Binário +, Binário – ;
  • *, /, %;
  • Unário +, Unário -.

Funções de linguagem de expressão do sistema de composição de dados

Calcular

A função Calcular foi projetada para calcular uma expressão no contexto de algum agrupamento. A função possui os seguintes parâmetros:

  • Expressão. Digite String. Contém uma expressão calculada;
  • Agrupamento. Digite String. Contém o nome do agrupamento no contexto do qual a expressão será avaliada. Se uma string vazia for usada como nome do agrupamento, o cálculo será realizado no contexto do agrupamento atual. Se a string GrandTotal for usada como nome do grupo, o cálculo será realizado no contexto do total geral. Caso contrário, o cálculo será realizado no contexto do agrupamento pai com o mesmo nome. Por exemplo:
Soma(Vendas.SumTurnover) / Calcular("Soma(Vendas.SumTurnover)", "Total")

Neste exemplo, o resultado será a razão entre o valor do campo "Vendas.ValorTurnover" do registro de agrupamento e o valor do mesmo campo em todo o layout.

Nível

A função foi projetada para obter o nível de gravação atual.

Nível()

NúmeroEmOrdem

Obtenha o próximo número de sequência.

NúmeroPorPedido()

NumberInOrderInGrouping

Retorna o próximo número ordinal no agrupamento atual.

NúmeroByOrderInGroup()

Formatar

Obtenha uma string formatada do valor passado.

A string de formato é definida de acordo com a string de formato 1C:Enterprise.

Opções:

  • Significado;
  • Cadeia de formato.

Formato(Faturas de Consumíveis.Valor do Documento, "NPV=2")

Início do período

Opções:

    • Minuto;
    • Dia;
    • Uma semana;
    • Mês;
    • Trimestre;
    • Década;
    • Meio ano.

StartPeriod(DateTime(2002, 10, 12, 10, 15, 34), "Mês")

Resultado:

01.10.2002 0:00:00

Fim do período

A função foi projetada para extrair uma data específica de uma determinada data.

Opções:

  • Data de. Digite Data. Data especificada;
  • Tipo de período. Digite String. Contém um dos seguintes valores:
    • Minuto;
    • Dia;
    • Uma semana;
    • Mês;
    • Trimestre;
    • Década;
    • Meio ano.

EndPeriod(DateTime(2002, 10, 12, 10, 15, 34), "Semana")

Resultado:

13.10.2002 23:59:59

Adicionar à data

A função foi projetada para adicionar um determinado valor a uma data.

Opções:

  • Tipo de ampliação. Digite String. Contém um dos seguintes valores:
    • Minuto;
    • Dia;
    • Uma semana;
    • Mês;
    • Trimestre;
    • Década;
    • Meio ano.
  • Quantidade – em quanto você precisa para aumentar a data. Digite Número. A parte fracionária é ignorada.

AddToDate(DateTime(2002, 10, 12, 10, 15, 34), "Mês", 1)

Resultado:

12.11.2002 10:15:34

Data da diferença

A função foi projetada para obter a diferença entre duas datas.

Opções:

  • Expressão. Digite Data. Data original;
  • Expressão. Digite Data. Data subtraída;
  • Tipo de diferença. Digite String. Contém um dos seguintes valores:
    • Segundo;
    • Minuto;
    • Dia;
    • Mês;
    • Trimestre;

DATADIFERENÇA(DATETIME(2002, 10, 12, 10, 15, 34), DATETIME(2002, 10, 14, 9, 18, 06), "DIA")

Resultado:

Substring

Esta função foi projetada para extrair uma substring de uma string.

Opções:

  • Linha. Digite String. A string da qual a substring é extraída;
  • Posição. Digite Número. A posição do caractere a partir do qual começa a substring a ser extraída da string;
  • Comprimento. Digite Número. Comprimento da substring alocada.

SUBSTRING(Contas.Endereço, 1, 4)

Comprimento da linha

A função foi projetada para determinar o comprimento de uma string.

Parâmetro:

  • Linha. Digite String. Uma string cujo comprimento é determinado.

Linha(Contrapartes.Endereço)

Ano

Esta função foi projetada para extrair o ano de um valor do tipo Data.

Parâmetro:

  • Data de. Digite Data. A data em que o ano é determinado.

ANO(Despesa.Data)

Trimestre

Esta função foi projetada para extrair o número do trimestre de um valor do tipo Data. O número do quarto normalmente varia de 1 a 4.

Parâmetro

  • Data de. Digite Data. A data em que o trimestre é determinado
TRIMESTRE(Despesa.Data)

Mês

Esta função foi projetada para extrair o número do mês de um valor do tipo Data. O número do mês normalmente varia de 1 a 12.

  • Data de. Digite Data. A data em que o mês é determinado.
MÊS(Despesa.Data)

Dia do ano

Esta função foi projetada para obter o dia do ano a partir de um valor do tipo Data. O dia do ano normalmente varia de 1 a 365 (366).

  • Data de. Digite Data. A data em que o dia do ano é determinado.
DIAANO(ContaDespesa.Data)

Dia

Esta função foi projetada para obter o dia do mês a partir de um valor do tipo Data. O dia do mês normalmente varia de 1 a 31.

  • Data de. Digite Data. A data em que o dia do mês é determinado.
DIA(Despesa.Data)

Uma semana

Esta função foi projetada para obter o número da semana do ano a partir de um valor do tipo Data. As semanas do ano são numeradas a partir de 1.

  • Data de. Digite Data. A data em que os números da semana são determinados.
SEMANA(Despesa.Data)

Dia da semana

Esta função foi projetada para obter o dia da semana a partir de um valor do tipo Data. O dia normal da semana varia de 1 (segunda-feira) a 7 (domingo).

  • Data de. Digite Data. A data em que o dia da semana é determinado.
DIA DA SEMANA (Data da Fatura de Despesa)

Hora

Esta função foi projetada para obter a hora do dia a partir de um valor do tipo Data. A hora do dia varia de 0 a 23.

  • Data de. Digite Data. A data em que a hora do dia é determinada.
HORA(Despesa.Data)

Minuto

Esta função foi projetada para obter o minuto da hora a partir de um valor do tipo Data. O minuto da hora varia de 0 a 59.

  • Data de. Digite Data. A data pela qual o minuto da hora é determinado.
MINUTO(Despesa.Data)

Segundo

Esta função foi projetada para obter o segundo de um minuto de um valor do tipo Data. O segundo de um minuto varia de 0 a 59.

  • Data de. Digite Data. A data pela qual os segundos do minuto são determinados.
SEGUNDO(Despesa.Data)

Expressar

Esta função foi projetada para extrair um tipo de uma expressão que pode conter um tipo composto. Se a expressão contiver um tipo diferente do tipo requerido, NULL será retornado.

Opções:

  • Expressão para converter;
  • Indicação de tipo. Digite String. Contém uma string de tipo. Por exemplo, "Número", "String" etc. Além dos tipos primitivos, esta linha pode conter o nome da tabela. Neste caso, será feita uma tentativa de expressar uma referência à tabela especificada.

Expressar(Data.Props1, "Número(10,3)")

É nulo

Esta função retorna o valor do segundo parâmetro se o valor do primeiro parâmetro for NULL.

Caso contrário, será retornado o valor do primeiro parâmetro.

SimNULL(Valor(Vendas.ValorTurnover), 0)

Funções de módulos comuns

Uma expressão do mecanismo de composição de dados pode conter chamadas para funções de módulos de configuração global comum. Nenhuma sintaxe adicional é necessária para chamar tais funções.

Neste exemplo, a função "AbbreviatedName" será chamada a partir do módulo de configuração geral.

Observe que o uso de funções comuns do módulo só é permitido se o parâmetro apropriado do processador de composição de dados for especificado.

Além disso, funções de módulos comuns não podem ser usadas em expressões de campos personalizados.



 

Pode ser útil ler: