Expressão de campo personalizado 1s 8.3. Linguagem de expressão do sistema de composição de dados (1Cv8)

Qualquer organização comercial para uma gestão competente precisa receber prontamente informações sobre o estado atual das mercadorias, vendas e lucros. No entanto, se você considerar que as organizações geralmente trabalham com uma ampla gama de produtos e grande quantia contrapartes, a ferramenta de elaboração do relatório analítico desempenha um papel importante na obtenção a informação que você precisa... Vamos examinar mais de perto o procedimento para trabalhar com campos personalizados nos relatórios de um programa típico (rev. 11).

O desenvolvimento da plataforma 1C: Enterprise 8 oferece cada vez mais oportunidades aos usuários. Assim, por exemplo, na versão 8.2, os relatórios se tornaram mais flexíveis, permitindo que sejam customizados para vários requisitos sem a ajuda de programadores qualificados.

Alterar configurações de relatório

Para visualizar ou alterar as configurações do relatório, vá para o menu Todas as Ações e selecione o comando Alterar Variante. Depois disso, uma janela com configurações para um relatório aberto é aberta para o usuário.

Na parte superior da janela de configurações, você pode ver a estrutura do relatório, que nada mais é do que um reflexo visual das colunas do relatório e agrupamentos de suas linhas, o que essencialmente torna possível apresentar a ordem em que os dados analíticos estão exibido neste relatório.

Na parte inferior da janela de configurações, são exibidas as configurações reais de informações e campos, referentes ao relatório ou aos elementos de sua estrutura (colunas e agrupamentos de linhas).

Os campos personalizados

Em um programa 1C: Gestão Comercial 8 a edição 11 das configurações do relatório oferece aos usuários mais opções em sua formação.

Na janela de edição das configurações e estrutura dos relatórios, gostaríamos de chamar a atenção dos usuários para a guia “Campos personalizados”, que permite criar seus próprios campos e adicioná-los ao relatório. Deve-se lembrar que anteriormente o usuário só podia usar os campos que foram implementados pelo desenvolvedor.

Vamos considerar o uso desta função usando um exemplo.

Suponha que o chefe de uma empresa comercial que vende mercadorias em Moscou e regiões deseja customizar o relatório Histórico de Vendas, desejando exibir nele dados sobre a venda de itens em Moscou e nas regiões em geral, bem como aos parceiros. É muito fácil fazer isso usando campos personalizados.

Assim, um exemplo ilustrativo mostra que as configurações flexíveis para campos personalizados em um programa típico 1C: Gestão Comercial 8 fornecer ao usuário amplas oportunidades nas configurações de relatórios, permitindo-lhe receber rapidamente as informações necessárias de forma conveniente.

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:

  • esquema de composição de dados - para descrever campos calculados, campos totais, expressões de relacionamento, etc.
  • configurações de composição de dados - para descrever expressões de campo personalizadas;
  • modelo de composição de dados - para descrever expressões de relacionamento de conjunto de dados, descrever parâmetros de modelo, etc.

Literais

As expressões podem conter literais. Literais dos seguintes tipos são possíveis:

  • Linha;
  • Número;
  • A data;
  • Boleano.

Linha

Um literal de string é escrito nos caracteres “” ”, por exemplo:

"String literal"

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

Por exemplo:

“Literal“ “entre aspas“ ““

Número

O número é escrito sem espaços, em formato decimal. Fração separados por um "." Por exemplo:

10.5 200

a data

O literal de data é escrito usando o literal de chave DATETIME. Depois disto palavra-chave, entre parênteses, separados por vírgulas, o ano, mês, dia, horas, minutos, segundos são listados. O horário é opcional.

Por exemplo:

DATA HORA (1975, 1, 06) - 6 de janeiro de 1975 DATA (2006, 12, 2, 23, 56, 57) - 2 de dezembro de 2006, 23 horas 56 minutos 57 segundos, 23 horas 56 minutos 57 segundos

boleano

Os valores booleanos podem ser escritos usando os literais True, False.

Significado

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

Valor (tipo de conta. Ativo)

Operações em números

Unário -

Esta operação visa inverter o sinal de um número. Por exemplo:

Sales.Quantity

+ Unário

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

Sales.Quantity

Binário -

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

Saldos e movimentações. Saldo inicial - Saldos e movimentações. Saldos finais e movimentações. Saldo inicial - 100 400 - 357

Binário +

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

Saldos e movimentações. Saldo inicial + Saldos e movimentações. Saldos e movimentações de giro. Saldo inicial + 100 400 + 357

Trabalhar

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

Nomenclature.Price * 1,2 2 * 3,14

Divisão

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

Nomenclature.Price / 1.2 2 / 3.14

Resto da divisão

Esta operação visa obter o resto da divisão de um operando por outro. Por exemplo:

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

Operações de string

Concatenação (Binário +)

Esta operação tem como objetivo concatenar duas strings. Por exemplo:

Nomenclature.Artigo + “:” + Nomenclature.Name

Como

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

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

Os seguintes personagens em<Строке_шаблона>faz sentido além do caractere da próxima linha:

  • % - porcentagem: uma seqüê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 por um ou mais caracteres: qualquer caractere exceto aqueles listados após o ícone de negação;

Qualquer outro símbolo significa a si mesmo e não carrega nenhum significado adicional. Se for necessário escrever um dos caracteres listados como você mesmo, deve ser precedido por<Спецсимвол>especificado após a palavra-chave ESCAPE.

Por exemplo, o modelo

“% ABC [abcg] \ _ abc%” SÍMBOLO 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; caractere de sublinhado; letras a; letras b; letras c. Além disso, essa 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 para igualdade. Por exemplo:

Sales.Contractor = Sales.NomenclatureMainSupplier

Não igual

Esta operação foi projetada para comparar dois operandos para desigualdade. Por exemplo:

Vendas, empreiteiro<>Sales.NomenclatureMainSupplier

Menos

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

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

Mais

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

SalesCurrent.Total> SalesPast.Amount

Menor ou igual

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

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

Mais ou igual

Esta operação visa 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 (& Item1, & Item2)

A operação de verificação da existência de um valor em um conjunto de dados

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

Vendas. Contraparte para contrapartes

A operação de verificação de um valor para NULL

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

Sales.Contractor IS NULL

A operação de verificação de um valor para a desigualdade NULL

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

Sales.Contractor IS NOT NULL

Operações lógicas

As operações lógicas usam expressões booleanas como operandos.

Operação NÃO

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

NOT Document.Consignee = Document.Shipper

Operação E

O operador AND retorna Verdadeiro se ambos os operandos forem Verdadeiros e Falso se um dos operandos for Falso. Por exemplo:

Document.Consignee = Document.Shipper AND Document.Consignee = & Contraparte

Operação OR

A operação OR retorna Verdadeiro se um dos operandos for Verdadeiro e Falso se ambos os operandos forem Falso. Por exemplo:

Document.Consignee = Document.Carrier OR Document.Consignee = & Contraparte

Funções agregadas

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

Soma

A função de agregação Sum calcula a soma dos valores de expressão passados ​​a ela como um argumento para todos os registros de detalhes. Por exemplo:

Quantidade (Sales.AmountTurnover)

Quantidade

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

Quantidade (Vendas. Empreiteiro)

Número de diferentes

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

Quantidade (várias vendas. Empreiteiro)

Máximo

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

Máximo (Saldos.Quantidade)

Mínimo

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

Mínimo (Saldos.Quantidade)

Média

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

Média (Saldos.Quantidade)

Outras operações

Operação SELECT

Seleção de operação foi projetada para selecionar um de vários valores quando certas condições são atendidas. Por exemplo:

Escolha quando a quantidade> 1000, a seguir, a quantidade, caso contrário, 0 final

Regras para comparar dois valores

Se os tipos de valores comparados diferem uns dos outros, então a relação entre os valores é determinada com base na prioridade dos tipos:

  • NULL (mais baixo);
  • Boleano;
  • Número;
  • A data;
  • Linha;
  • Tipos de referência

As relações entre os vários tipos de referência são determinadas com base nos números de referência das tabelas correspondentes a um tipo específico.

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

  • O tipo booleano tem um valor TRUE maior do que o valor FALSE;
  • o tipo de número tem as regras usuais de comparação para números;
  • o tipo de data tem datas anteriores menores que as posteriores;
  • para o tipo String - comparações de strings de acordo com as características nacionais estabelecidas da base de dados;
  • os tipos de referência são comparados com base em seus valores (números de registro, etc.).

Trabalhando com um valor NULL

Qualquer operação em que o valor de um dos operandos seja NULL resultará em NULL.

Existem exceções:

  • a operação AND retornará NULL somente se nenhum dos operandos for False;
  • a operação OR retornará NULL somente se nenhum dos operandos for True.

Prioridades de operação

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

  • B IS NULL IS NOT NULL;
  • =, <>, <=, <, >=, >;
  • 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 avaliar 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 deve ser avaliada. Se uma string vazia for usada como um nome de agrupamento, o cálculo será executado no contexto do agrupamento atual. Se a string GeneralTotal for usada como o nome do agrupamento, o cálculo será executado no contexto do total geral. Caso contrário, o cálculo será executado no contexto do agrupamento pai com o mesmo nome. Por exemplo:
Amount (Sales.Turnover Amount) / Calculate ("Amount (Sales.Turnover Amount)", "TotalTotal")

Neste exemplo, o resultado será a proporção do total para o campo Sales.Total do registro de agrupamento com o total do mesmo campo em todo o layout.

Nível

A função destina-se a obter o nível de gravação atual.

Nível()

NumberOrder

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

NumberOrder ()

NumberOrderInGroup

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

NumberOrderInGrouping ()

Formato

Obtenha a string formatada do valor passado.

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

Parâmetros:

  • Significado;
  • String de formato.

Formato (Faturas.SumDoc, "NPT = 2")

Início do período

Parâmetros:

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

Início do período (DateTime (2002, 10, 12, 10, 15, 34), "Mês")

Resultado:

01.10.2002 0:00:00

Fim do Período

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

Parâmetros:

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

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

Resultado:

13.10.2002 23:59:59

Adicionar à Data

A função visa agregar um determinado valor à data.

Parâmetros:

  • Tipo de ampliação. Digite String. Contém um dos valores:
    • Minuto;
    • Dia;
    • Uma semana;
    • Mês;
    • Trimestre;
    • Década;
    • Meio ano.
  • Valor - em quanto a data deve ser aumentada. Digite o número. A parte fracionária é ignorada.

Adicionar à data (DateTime (2002, 10, 12, 10, 15, 34), "Mês", 1)

Resultado:

12.11.2002 10:15:34

Diferença de data

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

Parâmetros:

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

DIFERENÇA (DATA HORA (2002, 10, 12, 10, 15, 34), DATA HORA (2002, 10, 14, 9, 18, 06), "DIA")

Resultado:

Substring

Esta funçãoé projetado para extrair uma substring de uma string.

Parâmetros:

  • Linha. Digite String. A string da qual extrair a substring;
  • Posição. Digite o número. A posição do caractere da qual a substring a ser extraída da string começa;
  • Comprimento. Digite o número. O comprimento da substring a ser selecionada.

SUBSTRATO (Contratantes.Endereço, 1, 4)

Comprimento da linha

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

Parâmetro:

  • Linha. Digite String. A string a ser especificada em comprimento.

String (Accounts.Address)

Ano

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

Parâmetro:

  • A data. Digite a data. A data em que o ano é determinado.

ANO (data da fatura)

Trimestre

Esta função tem como objetivo extrair um número de um quarto de um valor do tipo Data. O número do trimestre está normalmente na faixa de 1 a 4.

Parâmetro

  • A data. Digite a data. A data em que o trimestre é determinado
QUARTER (Data de Consignação)

Mês

Esta função tem como objetivo extrair o número do mês de um valor do tipo Data. O número do mês está normalmente na faixa de 1 a 12.

  • A data. Digite a data. A data em que o mês é determinado.
MÊS (data da fatura)

Dia do ano

Esta função tem como objetivo obter o dia do ano a partir de um valor do tipo Data. O dia do ano está normalmente na faixa de 1 a 365 (366).

  • A data. Digite a data. A data em que o dia do ano é determinado.
DIA DO ANO (Data da Fatura)

Dia

Esta função tem como objetivo obter o dia do mês a partir de um valor do tipo Data. O dia do mês está normalmente na faixa de 1 a 31.

  • A data. Digite a data. A data em que o dia do mês é determinado.
DAY (data da fatura)

Uma semana

Esta função tem como objetivo 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.

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

Dia da semana

Esta função tem como objetivo obter o dia da semana a partir de um valor do tipo Data. O dia da semana é normalmente entre 1 (segunda-feira) e 7 (domingo).

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

Hora

Esta função tem como objetivo obter a hora do dia a partir de um valor do tipo Data. A hora do dia varia de 0 a 23.

  • A data. Digite a data. A data em que a hora do dia é determinada.
HORA (data da fatura)

Minuto

Esta função tem como objetivo obter o minuto da hora a partir de um valor do tipo Data. O minuto da hora varia de 0 a 59.

  • A data. Digite a data. A data em que o minuto da hora é determinado.
MINUTE (data da fatura)

Segundo

Esta função tem como objetivo obter o segundo do minuto a partir de um valor do tipo Data. O segundo de um minuto varia de 0 a 59.

  • A data. Digite a data. A data em que os segundos do minuto são determinados.
SEGUNDO (data da fatura)

Expressar

Essa função tem como objetivo extrair um tipo de uma expressão que pode conter um tipo complexo. Se a expressão contiver um tipo diferente do necessário, um valor NULL será retornado.

Parâmetros:

  • A expressão a ser convertida;
  • Indicação de tipo. Digite String. Contém uma string do tipo. Por exemplo, "Número", "String", etc. Além de tipos primitivos string dada pode conter o nome da tabela. Nesse caso, será feita uma tentativa de expressar uma referência à tabela especificada.

Express (Data.Props1, "Número (10.3)")

SimNulo

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

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

YesNULL (Amount (Sales.SumTurnover), 0)

Funções de módulo comuns

Uma expressão de mecanismo de composição de dados pode conter chamadas para funções de módulos de configuração comuns globais. 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 das funções dos módulos comuns é permitido apenas quando o parâmetro correspondente do processador de composição de dados é especificado.

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

Complementando relatórios prontos com suas próprias colunas.
No relatório feito utilizando o "Esquema de composição de dados" desde o modo de usuário, você pode adicionar seus próprios Campos, que serão exibidos durante a geração.
É permitido usar operações aritméticas nestes campos.

Há muito tempo escrevi um relatório "Vendas de mercadorias por remessa" http://infostart.ru/public/16477/. Nesta publicação, não discutiremos sua relevância e méritos. Este relatório será usado como um modelo para experimentos e modificações. Além disso, nos comentários eles perguntaram como adicionar Campos.

Abra "Configurações ..." e vá para a guia "Configurações do usuário".

2. Adicionar "Novo Campo de Expressão"

Adicionar campos significa prescrever operações aritméticas entre os campos disponíveis (isso é permitido, marcado com um quadrado verde). Além disso, um recurso, se o nome de tal campo consistir em duas ou mais palavras, ele deve ser colocado entre colchetes... O resultado será assim - [valor da venda].

Após salvar, este campo ficará disponível para seleção:

Aqui, com a ajuda de manipulações simples, você obtém o valor que precisa para si mesmo. Essa oportunidade permitem adicionar os campos obrigatórios. Em tais opções de cálculo como você precisa. Rentabilidade, eficiência e outros valores serão considerados em sua lógica aritmética.

Nesse caso, seu trabalho não será perdido e você poderá usá-lo na próxima vez que abrir o relatório.

Funções usadas ao escrever campos.

  • Aritmética "+, -, *, /" é compreensível com isso, acho que não é necessário explicar o princípio de seu funcionamento.
  • Expressões booleanas c são usados ​​para determinar as seleções. ">,< , = , >= , <= , <>, AND, OR, NOT ". Essas expressões são usadas com uma operação de seleção.
  • Operações de seleção. Aplicar para obter um dos valores possíveis de acordo com as condições especificadas

ESCOLHA
QUANDO< Операция выбора >ENTÃO<Выражение>
DE OUTRA FORMA<Выражение>
O FIM
Exemplo:
ESCOLHA
QUANDO Quantidade> 0 e Quantidade> 0 ENTÃO "Correto"
OUTRO "Erro"
O FIM

Decifrando-se da seguinte forma: desde que o valor seja maior que zero e as somas maiores que zero, aparecerá o texto "Correto" e, se pelo menos uma das condições não for atendida, aparecerá "Erro".

  • Uma função embutida permite que você faça certas transformações com campos.

SUBSTRING ("Expressão", "Posição inicial", "Posição final") - seleciona a parte da "Expressão", limitada pelos frames "Início ..." e "Fim ...".
Como isso acontece com o valor da Nomenclatura - "Pasta de chocolate" a fórmula Substring (Nomenclatura, 1,5) irá gerar o valor "Colar"

As funções são usadas para trabalhar com a data

ANO(<Дата>), TRIMESTRE (<Дата>), MÊS(<Дата>), DIA (<Дата>), DIA(<Дата>), UMA SEMANA(<Дата>), DIA DA SEMANA (<Дата>),HORA(<Дата>), MINUTE (<Дата>), SEGUNDO (<Дата>)

O valor correspondente ao nome da função será exibido.

INÍCIO DO PERÍODO ("Data", "Período do turno"), FIM DO PERÍODO ("Data", "Período do turno"). Para dados de função, o valor da expressão de Data está no início ou no final da data especificada.

ADICIONE À DATA ("Data", "Período de deslocamento", "O valor pelo qual você deseja aumentar a data") - a função permite aumentar ou diminuir a data em um determinado valor.

DATA DE DIFERENÇA ("Data1", "Data2", "Período de turno") - A função é projetada para obter a diferença entre duas datas.

"Período de turno" é um de "Minuto, Hora, Dia, Semana, Mês, Trimestre, Ano, Década, Meio Ano".

5. Funções agregadas da linguagem de consulta são usadas ao agrupar resultados, calcular totais

SOMA (<>) a soma aritmética de todos os valores incluídos na amostra.
MÉDIA (<>) calcula a média de todos os da amostra
MÍNIMO (<>) calcula o valor mínimo de todos os valores da amostra
MÁXIMO (<>) calcula o valor máximo de todos os valores da amostra
QUANTIA (<>) conta o número de valores de parâmetro na amostra. Este recurso permite casos de uso. QUANTIDADE (*) - permite contar o número de linhas no resultado. QUANTIDADE (VÁRIAS "Expressões") - permite contar o número de valores diferentes do campo especificado.

Quantidade (escolha
Quando Substring (Nomenclature, 1, 5) = "Paste"
Então Quantidade * 0,2
Caso contrário, valor * 0,35
Fim)

O resultado é a soma dos valores quando no início do nome do item há "Massa", neste caso a quantidade aumenta em 0,2, se não estiver presente aumenta em 0,35.

Ano ([Document.Date])

O ano em que o documento foi escrito / postado será exibido.

Mais exemplo complexo, sem decodificação.

Escolha
When Quarter ([Document.Date]) = 1 AND Substring (Nomenclature, 1, 5) = "Paste"
Então Quantidade * 0,2
Caso contrário, escolha
Quando Trimestre ([Document.Date]) = 2
Então Quantidade * 0,3
Caso contrário, escolha
Quando Trimestre ([Document.Date]) = 3
Então Quantidade * 0,4
Caso contrário, escolha
Quando Trimestre ([Document.Date]) = 4
Então Quantidade * 0,5
Fim
Fim
Fim
Fim

Examinamos com algum detalhe as configurações dos relatórios implementados com base no ACS. Agora, vamos dar uma olhada nas configurações mais refinadas e detalhadas das opções de relatório. A janela de configurações "avançadas" da variante do relatório é chamada pelo comando "Mais" - "Outro" - "Alterar a variante do relatório".

A janela para alterar a variante do relatório é dividida em duas partes:

1. Estrutura do relatório.

2. Configurações de relatório.


A seção de estrutura de uma variante de relatório é semelhante à guia "Estrutura" das configurações de relatório padrão. O objetivo e a configuração dos agrupamentos são discutidos em detalhes na Parte 1 do artigo.

A tabela da estrutura da variante do relatório, além da coluna com os próprios agrupamentos, contém várias colunas adicionais:

A seção de configurações da opção de relatório oferece ao usuário ampla oportunidade de configurar o relatório de acordo com suas necessidades. Coincide quase completamente com configurações padrão do relatório, discutido na parte 1. Vamos considerar todas as guias da seção e observar 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 ACS é algum valor usado para obter dados de relatório. Este pode ser um valor de condição para selecionar ou validar dados, bem como um valor auxiliar.


A tabela de parâmetros é apresentada no formato "Parâmetro" - "Valor". Os valores dos parâmetros podem ser alterados, se necessário. Clicar no botão Propriedades do item de configurações personalizadas abre as configurações personalizadas para o item.


Nesta janela, você pode selecionar se o elemento será incluído nas configurações do usuário (ou seja, visível para o usuário ao configurar o relatório), definir a apresentação do elemento e o modo de edição ( acesso rápido no cabeçalho do relatório, normal nas configurações do relatório e indisponível).

As propriedades do item de personalização também possuem campos, campos, filtros e elementos condicionais agrupáveis.

2. Campos personalizados. Contém campos que o próprio usuário forma 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 selecionados permitem calcular um valor com base em uma determinada condição. A janela de edição do campo de seleção contém o título do campo e a tabela na qual se configuram a seleção, o valor e a apresentação do campo. A seleção é uma condição, dependendo da qual o valor necessário será substituído.


Por exemplo, vamos calcular uma estimativa do número de vendas. Assumiremos que, se menos de 10 unidades de um produto forem vendidas, eles venderão pouco e, se forem vendidas mais de 10 unidades, muito. Para isso, definiremos 2 valores do campo calculado: o primeiro estará 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 integrada 1C. A janela de edição do campo de expressão contém dois campos para expressões de detalhe e resumo. Os registros de totais são agrupamentos configurados na área "Estrutura do Relatório", nos quais devem ser utilizadas funções de agregação ("Soma", "Mínimo", "Máximo", "Quantidade").

Por exemplo, vamos calcular a porcentagem média de desconto. A porcentagem média de desconto é calculada pela fórmula: [Valor das vendas sem desconto] - [Valor das vendas com desconto] / [Valor das vendas sem desconto]. Deve-se lembrar que o valor das vendas sem desconto pode ser zero, por isso usamos o operador SELECT para verificar. Obtemos as seguintes expressões:

· Para notas detalhadas:

Escolha

Quando [Quantidade de vendas sem desconto] = 0

Então 0

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

Fim

· Para registros de totais:

Escolha

Quando o valor ([valor das vendas sem desconto]) = 0

Então 0

Caso contrário, Quantia ([Quantia das vendas sem desconto]) - Quantia ([Quantia das vendas com desconto]) / Quantia ([Quantia das vendas sem desconto])

Fim

Conforme mencionado anteriormente, na expressão de totais usamos a função de agregação "Soma".

3. Campos agrupáveis. Contém os campos pelos quais o resultado da variante do relatório será agrupado. Os campos de agrupamento são configurados separadamente para cada um dos agrupamentos, mas você pode definir campos de agrupamento gerais para uma variante 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, então o sistema selecionará os campos automaticamente. Além disso, esta guia permite alterar a ordem dos campos agrupados.


4. Campos. Contém os campos que serão produzidos no resultado da variante do relatório. Os campos são configurados separadamente para cada um dos agrupamentos, mas você pode definir campos gerais para a variante do 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, então o sistema selecionará os campos automaticamente. Além disso, esta guia permite alterar a ordem dos campos.

Os campos podem ser agrupados para destacar logicamente alguma parte do relatório ou para definir um arranjo especial de colunas. Ao adicionar um grupo, a coluna "Local" torna-se ativa e permite que você selecione uma das opções de local:

  • Auto - o sistema coloca os campos automaticamente;
  • Horizontal - os campos são organizados horizontalmente;
  • Verticalmente - os campos são organizados verticalmente;
  • Em uma coluna separada - os campos estão localizados em colunas diferentes;
  • Juntos - os campos são organizados 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 um dos agrupamentos, mas você pode definir filtros gerais para uma variante do 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 personalização dos campos de classificação foi abordada em detalhes na Parte 1 deste artigo. A classificação é configurada separadamente para cada um dos agrupamentos, mas você pode definir campos de classificação gerais para uma variante de relatório se selecionar a raiz "Relatório" na árvore de estrutura.


7. Design condicional. Contém elementos de estilo condicional usados ​​em uma variante de relatório. A configuração da aparência condicional foi discutida em detalhes na Parte 1 deste artigo. A aparência condicional é configurada separadamente para cada um dos agrupamentos, mas você pode definir elementos de aparência condicional comuns para uma variante de relatório se selecionar a raiz "Relatório" na árvore de estrutura.


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


Concluindo, gostaria de observar que as configurações do relatório não podem ser salvas apenas como uma variante do relatório, mas também carregadas em um arquivo (menu "Mais" - "Salvar configurações"). Para fazer o download, você precisa selecionar "Carregar configurações" e selecionar o arquivo salvo. Assim, podemos transferir as configurações da variante do relatório entre diferentes bases que possuem a mesma configuração.


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

O relatório recebe os saldos de mercadorias nos armazéns em vários aspectos (características, séries, unidades de medida, etc.). Para não complicar o exemplo, deixaremos apenas o agrupamento pela nomenclatura e exibiremos apenas o saldo final na data do relatório. A tabela de resumo mostrará os estoques do item no estoque dos armazéns.

Mas então o usuário disse que precisava adicionar dois campos adicionais:

  1. Alerta de quantidade. Se o número for menor ou igual a 5, o alerta é "Insuficiente". Se o número for maior que 5, menor ou igual a 10, o alerta é "Normal". Se o número for maior que 10, "Excesso de oferta".
  2. A fórmula para calcular o saldo final. Na coluna adicional, o usuário deseja ver quais ações o programa executou para obter o valor do resto final. Ou seja, a fórmula “Saldo inicial + Volume de negócios = Saldo final”, onde os valores correspondentes serão substituídos.

Obviamente, um programador pode intervir aqui e alterar a consulta do esquema de composição de dados e as configurações do relatório, mas realizaremos a tarefa no modo de usuário sem alterar o relatório no modo configurador.

Campos adicionais

E então, vamos começar. Vamos para as configurações da opção de relatório:

Antes de nós abriremos o construtor de configurações para a opção de relatório ACS. Indo para a guia "Campos personalizados", vamos começar a criá-los.

A imagem já mostra dois campos personalizados criados, cuja funcionalidade foi descrita acima. Vamos considerar as configurações de cada um. Vamos começar com o campo Alerta.

Na configuração, precisamos definir o título do campo, que será exibido no relatório, bem como definir as expressões para formar o valor no campo de registros detalhados e nos totais deste campo. Como não há necessidade de mostrar uma notificação nos totais, escreveremos uma expressão apenas para registros detalhados.

A sintaxe da expressão é semelhante à linguagem de consulta 1C: Enterprise. Existem algumas diferenças, mas não as trataremos em detalhes neste artigo. A expressão usa o operador de seleção:

"Escolha quando então, de outra forma, terminar ",

semelhante ao operador na linguagem de consulta. Os campos em expressões de campo personalizado são especificados por sua apresentação. Para que a plataforma entenda que a visualização inserida denota um determinado campo, o nome da visualização está entre colchetes "". Se a representação do campo tiver uma palavra, os colchetes são opcionais. No exemplo acima, estamos nos referindo ao campo Saldo Final.

As configurações do campo "Fórmula para cálculo do saldo final" são definidas de forma semelhante:


Aqui, preciso dizer sobre algumas das nuances:

  1. Podemos mostrar a fórmula em uma célula apenas como uma string. Portanto, convertemos todos os valores numéricos em uma string usando o método de linguagem de expressão ACS "String ()", que converte qualquer valor em uma string. Em seguida, executamos a concatenação de strings.
  2. Para que o campo seja exibido nos totais do relatório, adicionaremos uma fórmula semelhante à expressão dos registros de totais. Basta adicionar as funções de agregação "SUM ()" para cada valor de acordo com os totais.

Está tudo pronto para usar os campos do relatório!

Configurando e gerando um relatório

Adicione o campo "Fórmula de cálculo do saldo final" aos campos de saída do relatório:

Adicione a expressão "Alerta" aos registros de itens detalhados. Para fazer isso, adicione o campo de expressão "Alerta" ao agrupamento "Nomenclatura". Depois disso, a estrutura do relatório assumirá a seguinte forma:

A configuração do relatório agora está concluída. Se necessário, as configurações adicionadas podem ser salvas para reuso... Vamos gerar um relatório:

Como podemos ver, campos foram adicionados ao relatório de acordo com as condições da tarefa. Ao mesmo tempo, não houve necessidade de modificar o relatório no modo configurador. Esta é a principal vantagem dos campos personalizados! Um usuário treinado para usá-los pode usá-los para criar um relatório de acordo com seus requisitos. por conta deles, sem a participação de um programador.

Acredite em mim, você pode treiná-lo para usar esses recursos, porque é muito mais fácil do que escrever fórmulas em planilhas Excel.