1c SKD exibe apenas resultados gerais. Exemplos de uso da função SKD - calcular expressão

Nesta breve nota, quero mostrar como você pode resumir valores em vários níveis de agrupamento em um relatório usando um sistema de composição de dados.
Conforme mostrado na imagem, somente no nível de agrupamento “Grupos de Itens” é calculado o recurso “Pedido”, que exibe quanto precisa ser pedido para o grupo de itens atual com base em determinadas condições:


Este valor só pode ser calculado neste nível de agrupamento, pois não existem valores acima ou abaixo para calcular. Por exemplo, ao nível dos registos detalhados, não existem dados sobre numero maximo no grupo, porque esses dados são verdadeiros apenas para o grupo como um todo, e não para seus componentes individuais.

Assim, agora é necessário calcular os totais dos agrupamentos acima (“Armazéns”, “Tipos de Armazéns”) e o total global.
Para fazer isso, use a função CalculaExpressionWithGroupArray:
AVALIAR EXPRESSÃO COM GROUPARRAY (EVALEXPRESSIONWITHGROUPARRAY)
Sintaxe:
AvalieExpressionWithGroupArray(,)
Descrição:
A função retorna uma matriz, cada elemento contém o resultado da avaliação de uma expressão para agrupamento pelo campo especificado.
O compositor de layout, ao gerar um layout, converte os parâmetros da função em termos de campos de layout de composição de dados. Por exemplo, o campo Conta será convertido em DataSet.Account.
O construtor de layout, ao gerar expressões para a saída de um campo customizado cuja expressão contém apenas a função CalculaArrayWithGroupArray(), gera a expressão de saída para que as informações de saída sejam ordenadas. Por exemplo, para um campo personalizado com a expressão:

CalculaExpressionWithGroupArray("Valor(ValorTurnover)", "Contraparte")
O construtor de layout irá gerar a seguinte expressão para saída:

ConnectRows(Array(Order(CalculateExpressionWithGroupingValueTable("View(Sum(DataSet.AmountTurnover)),Sum(DataSet.AmountTurnover)",,"DataSet.Account"),"2")))

Opções:

Tipo: String. A expressão a ser avaliada. String, por exemplo, Amount(AmountTurnover).

Tipo: String. Expressões de campos de agrupamento – expressões de campos de agrupamento, separadas por vírgulas. Por exemplo, Contratante, Parte.

Tipo: String. Uma expressão que descreve a seleção aplicada aos registros detalhados. A expressão não suporta o uso de funções agregadas. Por exemplo,DeletionFlag = False.

Tipo: String. Uma expressão que descreve a seleção aplicada aos registros de grupo. Por exemplo, Valor(Valor de giro) > &Parâmetro1.
Exemplo:

Maximum(CalculateExpressionWithGroupArray("Valor(ValorTurnover)", "Contraparte"));

Uma descrição detalhada da sintaxe da função pode ser encontrada em http://its.1c.ru/db/v837doc#bookmark:dev:TI000000582
Agora, para o cálculo, duplicamos o campo “Ordem”, com valores diferentes “Calcular por...”, utilizando as seguintes expressões, observe que em cada nível superior são utilizados os valores dos níveis abaixo dos agrupamentos .

Como resultado, obtemos a seguinte construção:

Ao criar relatórios, há uma série de tarefas que, quando resolvidas de frente, muitas vezes levam à redação consultas pesadas ou consultas em loop ou saída manual de dados para uma tabela.

Aqui estão alguns exemplos de tais tarefas:

  • Obtenção de volume de vendas crescente por mês, por exemplo, para saída na forma de gráfico
  • Cálculo da diferença nas vendas do período atual e anterior - para todas as linhas do relatório
  • Comparação do volume de vendas de cada gestor com o valor de referência, que é calculado durante a geração deste relatório
  • Obtendo um total cumulativo horizontal e verticalmente em tabelas cruzadas

E todos esses problemas são resolvidos simplesmente usando as funções ACS - literalmente em alguns minutos. Sem consultas em loop e código torto.

Hoje veremos o uso de algumas funções ACS usando exemplos específicos.

Vídeo 1. Como obter o valor do relatório como total acumulado?

Problemas semelhantes são frequentemente encontrados na prática. O exemplo mais típico é que o relatório deve exibir as vendas por período; você precisa saber não apenas o valor das vendas do mês atual, mas também o total acumulado desde o início da geração do relatório.

Na verdade, este problema pode ser resolvido através de uma consulta (sem funções ACS), mas existem 2 problemas:

  • Por si só, tal solicitação será complexa - levará tempo para desenvolvê-la e depurá-la.
  • Tal solicitação carregará seriamente o sistema - e quanto mais dados, mais lento ele funcionará.

Utilizando as funções ACS, esta tarefa é resolvida com uma linha de código, e o relatório funcionará o mais rápido possível, veja:

Vídeo 2. Como obter um valor da linha anterior de um relatório?

Esta funcionalidade pode ser útil quando é necessário acompanhar a tendência de um determinado recurso - há uma diminuição ou aumento em relação ao estado anterior, mais o delta deve ser calculado.

Aqui estão alguns exemplos em que isso pode ser útil:

  • Análise de contas a receber por dia - calculamos a tendência e aumento ou diminuição absoluta da dívida em relação ao período anterior
  • Análise das taxas de câmbio e avaliação do lucro ou perda das diferenças cambiais - você precisa obter o delta entre as taxas atuais e anteriores e multiplicar pelo restante Dinheiro em moeda.

Esses problemas também exigem muito trabalho para serem resolvidos usando uma consulta, mas no ACS isso é feito em uma linha:

Vídeo 3. Como comparar o total da linha atual com o valor de referência?

Um exemplo de quando esta funcionalidade pode ser útil:

  • O sistema mantém registros de vendas por gerentes
  • O chefe do departamento realiza vendas pessoais junto com os gerentes
  • É necessária a exibição de relatório de vendas por gerente
  • O relatório também precisa exibir o delta relativo ao volume de vendas do chefe de departamento.

Ou seja, estamos falando da necessidade de comparar cada linha de vendas do gestor com as vendas do chefe de departamento.

E esses dados podem, por exemplo, ser usados ​​para calcular bônus.

E novamente, com a ajuda do SKD, esse problema é resolvido em uma linha:

Vídeo 4. Obtendo um total cumulativo em uma tabela cruzada

Em um relatório de tabela cruzada, o total acumulado pode ser calculado verticalmente (por linhas) e horizontalmente (por colunas).

Mostraremos como controlar a direção do cálculo dos totais usando um parâmetro ACS:

Vídeo 5. Exibindo a parte tabular em uma célula separada do relatório

Digamos que você precise desenvolver um relatório que exiba informações sobre documentos. Neste caso, uma célula separada deve conter a parte tabular do documento.

Para resolver um problema semelhante usando uma consulta regular, você precisará escrever manualmente o resultado em uma planilha.

Na composição de dados configurando totais parece um pouco diferente do que nos pedidos. Vamos definir o conjunto de dados “Consulta” no sistema de composição de dados.

Na solicitação em si não configuramos os totais, mas vamos até a aba “Recursos” da composição dos dados. No nível do esquema de composição de dados, determinar recursos. Estes são os campos que precisam ser contados no nível do agrupamento. Clique no botão “>>” e o próprio sistema irá transferir todos os campos numéricos e defini-los como recursos.

Você também pode especificar campos não numéricos em recursos. Por exemplo, se você selecionar o atributo “Link”, o sistema contará a quantidade de documentos em nossos grupos. Esta informação também pode ser útil. Então, no diagrama de layout definimos apenas recursos e os próprios agrupamentos são configurados no nível da variante do relatório. O usuário também pode criar os agrupamentos que deseja ver nas configurações de opções do seu relatório.

Vamos criar uma configuração padrão de composição de dados.
Clique no botão “Abrir designer de configurações”.

Selecione o tipo de relatório - lista. Clique no botão “Avançar”.

Vamos selecionar todos os campos e mover o campo da contraparte para a posição superior. Clique no botão “Avançar”.

Vamos selecionar todos os campos e mover o campo da contraparte para a posição superior. Clique no botão “OK”.

O resultado é a seguinte configuração:

Como você pode ver, ao configurar uma opção de relatório, os recursos são destacados com um ícone verde para que possam ser rapidamente diferenciados de outros campos.

Se abrirmos nosso relatório no modo 1C:Enterprise e gerá-lo, veremos que os dados finais são gerados no nível de agrupamento. Resultados por rubrica e por contrapartes.

Configurando recursos no esquema de composição de dados 1C

Agora vamos voltar nossa atenção para configurações que existem para recursos. No campo “Expressão” podemos especificar uma função agregada que pode ser usada para obter o valor do recurso. Na lista suspensa você pode ver várias funções padrão, mas não todas. Por exemplo, não há funções.

Aqui no campo “Expressão” podemos escrever nossa própria expressão.

No campo “Expressão” também podemos acessar as funções dos módulos comuns.

Além disso, você pode especificar no campo “Calcular por...” por quais agrupamentos o recurso deve ser calculado. Se o campo “Calcular por...” não for preenchido, o valor final do recurso será calculado em todos os níveis de agrupamento que estão definidos nas configurações das opções do relatório. No nosso caso, precisamos preencher o campo “Calcular por...” do recurso “Quantidade”, pois podemos vender mercadorias com diferentes unidades de medida. Por exemplo: óleo em litros e rodas em pedaços. Não é verdade que seria ilógico somar as quantidades destes bens? Portanto, precisamos deixar a soma da quantidade no nível do item e no nível da contraparte
Vamos remover a soma.

Se gerarmos um relatório, veremos que os totais de quantidades são calculados apenas por item e os totais de quantidades para empreiteiros estão vazios.

Possibilidades ao descrever recursos no esquema de composição de dados 1C

vamos considerar uma série de recursos não óbvios relacionados à descrição de recursos.

  • Cada recurso pode definir várias vezes. Mas isso só faz sentido se
    o recurso será calculado em diferentes níveis de agrupamentos. Por exemplo, se a quantidade, num caso
    é somado para o item, e para empreiteiros obtemos o valor mínimo.

Se gerarmos um relatório, veremos que para a contraparte “Deriya” a compra mínima é de cinco unidades da linha de produtos “Papel autoadesivo”.

  • No campo “Expressão”, além de escrever uma fórmula, você pode usar função especial composição de dados chamada “Calcular”. Esta função permite calcular algum valor final usando uma determinada fórmula. Por exemplo, para cada contraparte é necessário saber a percentagem de compras em unidades naturais relativamente ao volume total. Mas como obter o volume total de compras por quantidade? Para isso, utilize a função “Calcular” e escreva a seguinte expressão no campo “Expressão”:
Soma(Quantidade)/Calcular("Soma(Quantidade)", "TotalTotal")*100

Como visto, todos os parâmetros da função "Calcular" são strings. Para que o campo de quantidade seja exibido de forma bonita no relatório, iremos configurá-lo na aba “Conjuntos de dados”. Na linha de quantidade encontraremos o campo “Opções de Edição”. Vamos abrir a caixa de diálogo, encontrar a linha “Formato” e editar a linha de formato nela, definindo o valor “Precisão” como dois na guia “Número”.

Vamos executar o relatório e ver o resultado do cálculo do percentual de compras da contraparte “AUPP KOS LLP” em relação a
volume total:


No final do artigo, quero recomendar um artigo gratuito de Anatoly Sotnikov. Este é um curso de um programador experiente. Ele mostrará separadamente como construir relatórios no sistema de controle de acesso. Você só precisa ouvir com atenção e lembrar! Você receberá respostas para as seguintes perguntas:
  • Como criar um relatório de lista simples?
  • Para que servem as colunas Campo, Caminho e Título na guia “Campos”?
  • Quais são as limitações para campos de layout?
  • Como configurar funções corretamente?
  • Quais são as funções dos campos de layout?
  • Onde posso encontrar a guia de composição de dados em uma consulta?
  • Como configurar parâmetros no sistema de controle de acesso?
  • Fica ainda mais interessante...
Provavelmente, você não deveria tentar navegar na Internet em busca de informação necessária? Além disso, tudo está pronto para uso. Basta começar! Todos os detalhes sobre o que está nas videoaulas gratuitas

Aqui está uma das lições sobre como marcar a composição de dados em uma consulta:

Vejamos um exemplo:

Várias unidades da mercadoria são enviadas ao cliente com descontos diferenciados. Você precisa exibir os valores de desconto de cada produto em um relatório e calcular o desconto médio. Vamos criar um relatório sobre o sistema de controle de acesso.
Para todos os campos para os quais precisamos exibir totais, definiremos uma expressão (método) para seu cálculo na aba “Recursos”. Para o Campo “Desconto”, defina o método de cálculo como “Média”.

Geramos o relatório:

Como você pode ver, o total do campo “Desconto” é calculado como a média aritmética dos valores do campo, ou seja, a soma de todos os valores dividida pelo número de valores. Mas porque Como os volumes de mercadorias expedidas com descontos diferentes são diferentes, o desconto médio pode ser calculado de outra forma: por exemplo, como a razão entre a quantidade total de mercadorias expedidas, levando em consideração o desconto, e a quantidade total de mercadorias expedidas. Mas aqui surge uma dúvida: se você pode escrever uma fórmula para calcular os valores dos campos de registros detalhados no ACS, então os totais são calculados automaticamente de acordo com a expressão especificada na aba “Recursos”, e aí, como vimos anteriormente, “Média” é calculada como a média aritmética dos valores exibidos, como Neste caso, devo calcular o total nesta coluna usando minha própria fórmula?
Na verdade não é difícil. Para isso, ajustaremos nosso relatório adicionando a ele os campos necessários que participarão do cálculo, no nosso caso são “AmountWithDiscount” e “AmountAtPrice”.

Para “ensinar” o ACS a exibir nossos resultados, tomamos as seguintes medidas:
1. na aba “Configurações”, atribua um nome ao agrupamento “”, por exemplo, “ResultSKD”, para isso chame o menu de contexto do agrupamento e clique em “atribuir um nome”;

2. na aba “Layouts”, adicione um “layout de cabeçalho de agrupamento”, onde selecionamos o nome previamente atribuído “TotalSKD”;

3. traçamos uma linha do layout, onde deixamos todos os resultados, cujo cálculo nos convém, como estão, e para calcular o percentual médio de desconto escrevemos uma fórmula de cálculo;

Se tudo estiver correto, quando o relatório for exibido, duas linhas de total serão exibidas abaixo dele, primeiro a que é gerada automaticamente, depois a que você criou.

Para deixar a saída apenas da sua linha total, você precisa na guia “Configurações” na seção “Outras configurações” da saída do layout, desabilitar a saída para “Layout do total geral horizontal” e “Layout do total geral vertical”

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 aparecer 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 acabou 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.



Continuando o tópico:
Sistema de taxas

Muitas pessoas sonham em abrir seu próprio negócio, mas não conseguem. Muitas vezes, como principal obstáculo que os impede, citam a falta de...