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

Olá, querido leitor! Temos outra lição sobre os fundamentos do sistema de layout. Em você conheceu as funções da linguagem de expressão SKD, viu os recursos do sistema de layout e também entendeu as configurações básicas dos campos de layout. Agora veremos o novo material. Ir!

Configurações adicionais para campos ACS.

Coluna "Tipo de valor" Permite especificar o tipo de dados do campo de layout. Por que especificar o tipo, por exemplo, para o campo “Nomenclatura”, se você já sabe de que tipo é? Isso é necessário se o campo de layout for do tipo composto. Você pode selecionar um tipo específico, então ao selecionar por este campo serão selecionados valores deste tipo.

Coluna "Valores disponíveis" permite especificar os valores disponíveis para seleção e limitar a escolha do usuário a determinados limites.

Coluna "Decoração" permite especificar o design de um campo de layout sem usar layouts. Você pode especificar a cor da fonte, a cor da moldura, a orientação do texto, etc.

Coluna "Opções de edição" Permite especificar como editar o campo de layout. Por exemplo, você pode especificar uma seleção rápida de elementos de uma lista em uma seleção. Por padrão, um campo de layout herda todas as opções de edição do objeto de metadados.

Campos calculados

Na aba “Campos Calculados” da composição de dados, você pode criar seus próprios campos calculados.

Por que você precisa de campos calculados quando pode criá-los no nível da consulta? Nem todos os campos podem ser descritos usando uma consulta. Se você precisar criar um campo complexo a partir de diferentes conjuntos de dados, por exemplo, como uma consulta e um objeto, não poderá ficar sem campos calculados. Você não pode adicionar um campo de composição de dados se a fonte de dados for uma consulta e o preenchimento automático estiver habilitado, mas usando campos calculados você pode adicionar quantos campos desejar.

Na coluna “Expressão” do campo calculado, é necessário escrever uma expressão arbitrária que utilize os campos de composição de dados, acessando seu caminho (a coluna “Caminho” da aba “Conjuntos de Dados”). Você pode usar funções de transformação matemática ou acessar as funções de módulos comuns. Por exemplo, vamos escrever na coluna “Caminho dos Dados” o nome do campo calculado “Desvio”, e no campo “Expressão” o seguinte.

À luz da próxima versão 8.2.14, tentarei descrever algumas novas funções do sistema de composição de dados.

Abra o diagrama de layout de dados, de preferência em um relatório externo, para facilitar a edição.

Adicionamos um conjunto de dados do tipo consulta e escrevemos, manualmente ou usando o designer de consulta, uma consulta simples:

1. Configure uma solicitação no sistema de controle de acesso.

2. Configure campos calculados no sistema de controle de acesso

3. Configure o layout de dados na guia de configurações

4. Inicie 1C Enterprise 8.2.14. Abra o relatório. Formamos, recebemos.

Descrição das próprias novas funções:

1. A data atual()

Retorna a data do sistema. Ao compor um layout de layout, em todas as expressões presentes no layout, a função CurrentDate() é substituída pelo valor da data atual.

2. COMPUTEEXPRESSÃO()

Sintaxe:

CalcularExpressão(,)

Descrição:

A função foi projetada para avaliar uma expressão no contexto de algum agrupamento.

A função leva em consideração a seleção de agrupamentos, mas não leva em conta as seleções hierárquicas.

A função não pode ser aplicada a um agrupamento na seleção de grupo desse agrupamento. Por exemplo, ao selecionar o agrupamento Nomenclatura, não é possível utilizar a expressão CalculaExpression("Soma(SomaTurnover)", "TotalTotal") > 1000. Mas tal expressão pode ser usada na seleção hierárquica.

Se o registro final preceder o registro inicial, considera-se que não há registros para cálculo de dados detalhados e cálculo de funções agregadas.

Ao calcular expressões de intervalo para um total geral (o parâmetro Grouping está definido como GrandTotal), presume-se que não há registros para calcular dados detalhados e calcular funções agregadas.

Vinculador de layout ao gerar uma expressão de função CalcularExpressão, se a expressão de ordenação contiver campos que não podem ser usados ​​no agrupamento, substitui a função CalcularExpressão sobre NULO.

Opções

Tipo: Linha. A expressão a ser avaliada.

Tipo: Linha. 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 GeneralTotal 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)/Calculate("Soma(Vendas.SumTurnover)", "Total")

Neste exemplo, o resultado será a razão da soma por campo Vendas.QuantidadeTurnover agrupar registros à soma de um mesmo campo em todo o layout;

Tipo: Linha. O parâmetro pode assumir os seguintes valores:

· total geral— a expressão será calculada para todos os registros de agrupamento.

· Hierarquia— a expressão será avaliada para o registro hierárquico pai, se houver, e para todo o agrupamento, se não houver registro hierárquico pai.

· Agrupamento— a expressão será avaliada para o registro de agrupamento de grupo atual.

· AgrupamentoNonResource— ao calcular uma função para um registro de grupo por recursos, a expressão será calculada para o primeiro registro de grupo do agrupamento original.

Ao calcular uma função CalcularExpressão() com significado AgrupamentoNonResource para registros de grupo que não são agrupados por recursos, a função é calculada da mesma forma que seria calculada se o valor do parâmetro fosse igual ao valor Agrupamento.

O construtor de layout de composição de dados, ao gerar um layout de composição de dados ao gerar um campo de recurso pelo qual o agrupamento é realizado para o layout, coloca uma expressão no layout que é calculada usando a função CalcularExpressão() , indicando o parâmetro AgrupamentoNonResource. Para outros recursos, as expressões de recursos usuais são colocadas no agrupamento de recursos.

Tipo: Linha. Indica de qual registro o fragmento deve começar, em qual função de expressão agregada deve ser calculada e de qual registro obter valores de campo fora das funções agregadas. O valor pode ser um dos seguintes:

· Primeiro

· Último (último)

· Anterior

· Próximo (Próximo)

· Atual

· Valor Limitante(Valor Limite) Valor Limitante

Tipo: Linha. Indica para qual registro o fragmento deverá continuar, no qual deverão ser calculadas as funções agregadas da expressão. O valor pode ser um dos seguintes:

· Primeiro. É necessário obter o primeiro registro de agrupamento. Após a palavra entre colchetes, você pode especificar uma expressão, cujo resultado será usado como deslocamento desde o início do agrupamento. O valor resultante deve ser um número inteiro maior que zero. Por exemplo, First(3) - recebendo o terceiro registro desde o início do agrupamento.

Se o primeiro registro estiver fora do agrupamento, considera-se que não há registros. Por exemplo, se houver 3 registros e você quiser obter o Primeiro (4), considera-se que não há registros.

· Último (último). Você precisa obter o último registro de agrupamento. Após a palavra entre colchetes, você pode especificar uma expressão cujo resultado será usado como deslocamento do final do agrupamento. O valor resultante deve ser um número inteiro maior que zero. Por exemplo, Last(3) - recebendo o terceiro registro do final do grupo.

Se o último registro estiver fora do agrupamento, considera-se que não há registros. Por exemplo, se houver 3 registros e você quiser obter Last(4), considera-se que não há registros.

· Anterior. Você precisa obter o registro de agrupamento anterior. Após a palavra entre colchetes, você pode especificar uma expressão, cujo resultado será usado como um deslocamento do registro de agrupamento atual. Por exemplo, Previous(2) – obtendo o anterior do registro anterior.

Se o registro anterior ultrapassar o agrupamento (por exemplo, para o segundo registro de agrupamento você precisa obter Anterior(3)), então o primeiro registro de agrupamento será obtido.

Ao recuperar o registro anterior para um total de agrupamento, considera-se que o primeiro registro é obtido.

· Próximo (Próximo). Você precisa obter o próximo registro de agrupamento. Após a palavra entre colchetes, você pode especificar uma expressão, cujo resultado será usado como um deslocamento da entrada de agrupamento atual. Por exemplo, Next(2) – obtendo o próximo do próximo registro.

Se o próximo registro ultrapassar o agrupamento, considera-se que não há registros. Por exemplo, se houver 3 entradas e a terceira entrada receber Next() , então considera-se que não há entradas.

Quando é recebido o próximo registro para o total do agrupamento, considera-se que não há registro.

· Atual. Você precisa obter o registro atual.

Ao recuperar um total de agrupamento, o primeiro registro é obtido.

· Valor Limitante(Valor Limite). A necessidade de obter um registro pelo valor especificado. Depois da palavra Valor Limitante entre colchetes você precisa indicar a expressão com cujo valor deseja iniciar o fragmento, o primeiro campo de ordenação.

O primeiro registro cujo valor do campo de ordenação for maior ou igual ao valor especificado será retornado como registro. Por exemplo, se o campo Período for usado como campo de ordenação e tiver os valores 01/01/2010, 01/02/2010, 01/03/2010, e você deseja obter LimitandoValor(DateTime(2010, 1, 15)), então será recebido um registro com a data 01/02/2010.

Tipo: Linha. Lista expressões, separadas por vírgulas, que descrevem as regras de ordenação. Se não for especificado, a ordenação será executada da mesma forma que para o agrupamento para o qual a expressão é avaliada. Após cada expressão você pode especificar uma palavra-chave Idade(para ordenar em ordem crescente), descendente(para ordenação em ordem decrescente) e Pedido automático(para ordenar os campos de referência pelos campos pelos quais você deseja ordenar o objeto referenciado). Palavra Pedido automático pode ser usado como com a palavra Idade, então com a palavra descendente.

Tipo: Linha. Igual ao parâmetro Ordenação. Usado para organizar registros hierárquicos. Se não for especificado, o construtor de layout gera a ordenação de acordo com a ordenação especificada no parâmetro Ordenação.

Tipo: Linha. Especifica a regra para determinação do registro anterior ou seguinte caso existam vários registros com o mesmo valor de ordenação:

· Separadamente indica que uma sequência de registros ordenados é usada para determinar os registros anteriores e seguintes. Valor padrão.

· Junto indica que os registros anteriores e seguintes são determinados com base nos valores das expressões de ordenação.

Por exemplo, se a sequência resultante for ordenada por data:

data Nome completo Significado
1 01 de janeiro de 2001

Ivanov M.

10
2 02 de janeiro de 2001 Petrov S. 20
3 03 de janeiro de 2001 Sidorov R. 30
4 04 de janeiro de 2001 Petrov S. 40

Separadamente, Que:

§ a entrada anterior à entrada 3 será a entrada 2.

Atual, Atual(respectivamente, parâmetros Começar E Fim), então para o registro 2 este fragmento consistirá em um registro 2. A expressão será igual a 20.

Se o valor do parâmetro for Junto, Que:

§ a entrada anterior à entrada 3 será a entrada 1.

§ se o fragmento de cálculo for definido como Atual, Atual(respectivamente, parâmetros Começar E Fim), então para o registro 2 este fragmento consistirá nos registros 2 e 3. Expressão CalculaExpression("Soma(Valor)", Atual, Atual) será igual a 50.

Ao especificar um valor de parâmetro igual a Junto, em parâmetros Começar E Fim você não pode especificar um deslocamento para posições Primeiro, Último, Anterior, Próximo.

CalculaExpression("Soma(SomaTurnover)", "Primeiro", "Atual")

Se quiser obter o valor de agrupamento na linha anterior, você pode usar a seguinte expressão:

CalculaExpression("Taxa", "Anterior")

Lista novo funções:

CalculaExpressionWithGroupArray(,) -

A função retorna uma matriz, cada elemento contém o resultado da avaliação de uma expressão para agrupamento pelo campo especificado.

CalculaExpressionWithGroupValueTable(,) -

A função retorna uma tabela de valores, cada linha contendo o resultado da avaliação de expressões para agrupamento pelo campo especificado

Valor preenchido() - Retorna True se o valor for diferente do valor padrão deste tipo, diferente de NULL, diferente de uma referência vazia, diferente de Indefinido. Os valores booleanos são verificados para valores NULL. As strings são verificadas quanto à ausência de caracteres que não sejam espaços em branco

Formatar(, ) - Recebe uma string formatada do valor passado. A string de formato é definida de acordo com a string de formato do sistema 1C:Enterprise.

Substring(, , ) - Esta função foi projetada para extrair uma substring de uma string.

Comprimento da linha() - A função foi projetada para determinar o comprimento de uma string. O parâmetro é uma expressão de string

Linha() - Se um array for passado como parâmetro, a função retorna uma string contendo representações de todos os elementos do array, separados por caracteres "; ". Se uma tabela de valores for passada como parâmetro, a função retorna uma string contendo representações de string de todas as linhas da tabela de valores, com as representações de células de cada linha separadas por caracteres ";" personagem. Se a representação de string de um elemento estiver vazia, uma string será exibida em vez de sua representação.

À luz da próxima versão 8.2.14, tentarei descrever algumas novas funções do sistema de composição de dados.

Abra o diagrama de layout de dados, de preferência em um relatório externo, para facilitar a edição.

Adicionamos um conjunto de dados do tipo consulta e escrevemos, manualmente ou usando o designer de consulta, uma consulta simples:

1. Configure uma solicitação no sistema de controle de acesso.

2. Configure campos calculados no sistema de controle de acesso

3. Configure o layout de dados na guia de configurações

4. Inicie 1C Enterprise 8.2.14. Abra o relatório. Formamos, recebemos.

Descrição das próprias novas funções:

1. A data atual()

Retorna a data do sistema. Ao compor um layout de layout, em todas as expressões presentes no layout, a função CurrentDate() é substituída pelo valor da data atual.

2. COMPUTEEXPRESSÃO()

Sintaxe:

CalcularExpressão(,)

Descrição:

A função foi projetada para avaliar uma expressão no contexto de algum agrupamento.

A função leva em consideração a seleção de agrupamentos, mas não leva em conta as seleções hierárquicas.

A função não pode ser aplicada a um agrupamento na seleção de grupo desse agrupamento. Por exemplo, ao selecionar o agrupamento Nomenclatura, não é possível utilizar a expressão CalculaExpression("Soma(SomaTurnover)", "TotalTotal") > 1000. Mas tal expressão pode ser usada na seleção hierárquica.

Se o registro final preceder o registro inicial, considera-se que não há registros para cálculo de dados detalhados e cálculo de funções agregadas.

Ao calcular expressões de intervalo para um total geral (o parâmetro Grouping está definido como GrandTotal), presume-se que não há registros para calcular dados detalhados e calcular funções agregadas.

Vinculador de layout ao gerar uma expressão de função CalcularExpressão, se a expressão de ordenação contiver campos que não podem ser usados ​​no agrupamento, substitui a função CalcularExpressão sobre NULO.

Opções

Tipo: Linha. A expressão a ser avaliada.

Tipo: Linha. 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 GeneralTotal 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)/Calculate("Soma(Vendas.SumTurnover)", "Total")

Neste exemplo, o resultado será a razão da soma por campo Vendas.QuantidadeTurnover agrupar registros à soma de um mesmo campo em todo o layout;

Tipo: Linha. O parâmetro pode assumir os seguintes valores:

· total geral— a expressão será calculada para todos os registros de agrupamento.

· Hierarquia— a expressão será avaliada para o registro hierárquico pai, se houver, e para todo o agrupamento, se não houver registro hierárquico pai.

· Agrupamento— a expressão será avaliada para o registro de agrupamento de grupo atual.

· AgrupamentoNonResource— ao calcular uma função para um registro de grupo por recursos, a expressão será calculada para o primeiro registro de grupo do agrupamento original.

Ao calcular uma função CalcularExpressão() com significado AgrupamentoNonResource para registros de grupo que não são agrupados por recursos, a função é calculada da mesma forma que seria calculada se o valor do parâmetro fosse igual ao valor Agrupamento.

O construtor de layout de composição de dados, ao gerar um layout de composição de dados ao gerar um campo de recurso pelo qual o agrupamento é realizado para o layout, coloca uma expressão no layout que é calculada usando a função CalcularExpressão() , indicando o parâmetro AgrupamentoNonResource. Para outros recursos, as expressões de recursos usuais são colocadas no agrupamento de recursos.

Tipo: Linha. Indica de qual registro o fragmento deve começar, em qual função de expressão agregada deve ser calculada e de qual registro obter valores de campo fora das funções agregadas. O valor pode ser um dos seguintes:

· Primeiro

· Último (último)

· Anterior

· Próximo (Próximo)

· Atual

· Valor Limitante(Valor Limite) Valor Limitante

Tipo: Linha. Indica para qual registro o fragmento deverá continuar, no qual deverão ser calculadas as funções agregadas da expressão. O valor pode ser um dos seguintes:

· Primeiro. É necessário obter o primeiro registro de agrupamento. Após a palavra entre colchetes, você pode especificar uma expressão, cujo resultado será usado como deslocamento desde o início do agrupamento. O valor resultante deve ser um número inteiro maior que zero. Por exemplo, First(3) - recebendo o terceiro registro desde o início do agrupamento.

Se o primeiro registro estiver fora do agrupamento, considera-se que não há registros. Por exemplo, se houver 3 registros e você quiser obter o Primeiro (4), considera-se que não há registros.

· Último (último). Você precisa obter o último registro de agrupamento. Após a palavra entre colchetes, você pode especificar uma expressão cujo resultado será usado como deslocamento do final do agrupamento. O valor resultante deve ser um número inteiro maior que zero. Por exemplo, Last(3) - recebendo o terceiro registro do final do grupo.

Se o último registro estiver fora do agrupamento, considera-se que não há registros. Por exemplo, se houver 3 registros e você quiser obter Last(4), considera-se que não há registros.

· Anterior. Você precisa obter o registro de agrupamento anterior. Após a palavra entre colchetes, você pode especificar uma expressão, cujo resultado será usado como um deslocamento do registro de agrupamento atual. Por exemplo, Previous(2) – obtendo o anterior do registro anterior.

Se o registro anterior ultrapassar o agrupamento (por exemplo, para o segundo registro de agrupamento você precisa obter Anterior(3)), então o primeiro registro de agrupamento será obtido.

Ao recuperar o registro anterior para um total de agrupamento, considera-se que o primeiro registro é obtido.

· Próximo (Próximo). Você precisa obter o próximo registro de agrupamento. Após a palavra entre colchetes, você pode especificar uma expressão, cujo resultado será usado como um deslocamento da entrada de agrupamento atual. Por exemplo, Next(2) – obtendo o próximo do próximo registro.

Se o próximo registro ultrapassar o agrupamento, considera-se que não há registros. Por exemplo, se houver 3 entradas e a terceira entrada receber Next() , então considera-se que não há entradas.

Quando é recebido o próximo registro para o total do agrupamento, considera-se que não há registro.

· Atual. Você precisa obter o registro atual.

Ao recuperar um total de agrupamento, o primeiro registro é obtido.

· Valor Limitante(Valor Limite). A necessidade de obter um registro pelo valor especificado. Depois da palavra Valor Limitante entre colchetes você precisa indicar a expressão com cujo valor deseja iniciar o fragmento, o primeiro campo de ordenação.

O primeiro registro cujo valor do campo de ordenação for maior ou igual ao valor especificado será retornado como registro. Por exemplo, se o campo Período for usado como campo de ordenação e tiver os valores 01/01/2010, 01/02/2010, 01/03/2010, e você deseja obter LimitandoValor(DateTime(2010, 1, 15)), então será recebido um registro com a data 01/02/2010.

Tipo: Linha. Lista expressões, separadas por vírgulas, que descrevem as regras de ordenação. Se não for especificado, a ordenação será executada da mesma forma que para o agrupamento para o qual a expressão é avaliada. Após cada expressão você pode especificar uma palavra-chave Idade(para ordenar em ordem crescente), descendente(para ordenação em ordem decrescente) e Pedido automático(para ordenar os campos de referência pelos campos pelos quais você deseja ordenar o objeto referenciado). Palavra Pedido automático pode ser usado como com a palavra Idade, então com a palavra descendente.

Tipo: Linha. Igual ao parâmetro Ordenação. Usado para organizar registros hierárquicos. Se não for especificado, o construtor de layout gera a ordenação de acordo com a ordenação especificada no parâmetro Ordenação.

Tipo: Linha. Especifica a regra para determinação do registro anterior ou seguinte caso existam vários registros com o mesmo valor de ordenação:

· Separadamente indica que uma sequência de registros ordenados é usada para determinar os registros anteriores e seguintes. Valor padrão.

· Junto indica que os registros anteriores e seguintes são determinados com base nos valores das expressões de ordenação.

Por exemplo, se a sequência resultante for ordenada por data:

data Nome completo Significado
1 01 de janeiro de 2001

Ivanov M.

10
2 02 de janeiro de 2001 Petrov S. 20
3 03 de janeiro de 2001 Sidorov R. 30
4 04 de janeiro de 2001 Petrov S. 40

Separadamente, Que:

§ a entrada anterior à entrada 3 será a entrada 2.

Atual, Atual(respectivamente, parâmetros Começar E Fim), então para o registro 2 este fragmento consistirá em um registro 2. A expressão será igual a 20.

Se o valor do parâmetro for Junto, Que:

§ a entrada anterior à entrada 3 será a entrada 1.

§ se o fragmento de cálculo for definido como Atual, Atual(respectivamente, parâmetros Começar E Fim), então para o registro 2 este fragmento consistirá nos registros 2 e 3. Expressão CalculaExpression("Soma(Valor)", Atual, Atual) será igual a 50.

Ao especificar um valor de parâmetro igual a Junto, em parâmetros Começar E Fim você não pode especificar um deslocamento para posições Primeiro, Último, Anterior, Próximo.

CalculaExpression("Soma(SomaTurnover)", "Primeiro", "Atual")

Se quiser obter o valor de agrupamento na linha anterior, você pode usar a seguinte expressão:

CalculaExpression("Taxa", "Anterior")

Lista novo funções:

CalculaExpressionWithGroupArray(,) -

A função retorna uma matriz, cada elemento contém o resultado da avaliação de uma expressão para agrupamento pelo campo especificado.

CalculaExpressionWithGroupValueTable(,) -

A função retorna uma tabela de valores, cada linha contendo o resultado da avaliação de expressões para agrupamento pelo campo especificado

Valor preenchido() - Retorna True se o valor for diferente do valor padrão deste tipo, diferente de NULL, diferente de uma referência vazia, diferente de Indefinido. Os valores booleanos são verificados para valores NULL. As strings são verificadas quanto à ausência de caracteres que não sejam espaços em branco

Formatar(, ) - Recebe uma string formatada do valor passado. A string de formato é definida de acordo com a string de formato do sistema 1C:Enterprise.

Substring(, , ) - Esta função foi projetada para extrair uma substring de uma string.

Comprimento da linha() - A função foi projetada para determinar o comprimento de uma string. O parâmetro é uma expressão de string

Linha() - Se um array for passado como parâmetro, a função retorna uma string contendo representações de todos os elementos do array, separados por caracteres "; ". Se uma tabela de valores for passada como parâmetro, a função retorna uma string contendo representações de string de todas as linhas da tabela de valores, com as representações de células de cada linha separadas por caracteres ";" personagem. Se a representação de string de um elemento estiver vazia, uma string será exibida em vez de sua representação.

1. Calcular (Avaliar)- destina-se a avaliar uma expressão no contexto de algum agrupamento. A função é utilizada para compatibilidade com versões anteriores da plataforma. Recomenda-se usar a função CalculaExpression.

Sintaxe:
Calcular(Expressão, Agrupamento, CalculationType)

Opções:

  • Expressão(Linha). Contém uma expressão calculada;
  • Agrupamento(Linha). 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 grupo 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.
  • Tipo de cálculo(Linha). Se este parâmetro estiver definido como "TotalTotal", a expressão será calculada para todos os registros do agrupamento. Caso o valor do parâmetro seja “Agrupamento”, os valores serão calculados para o registro do grupo de agrupamento atual.
2. Avaliar Expressão (EvalExpression) - destina-se a avaliar uma expressão no contexto de algum agrupamento. A função leva em consideração a seleção de agrupamentos, mas não leva em conta as seleções hierárquicas. A função não pode ser aplicada a um agrupamento na seleção de grupo desse agrupamento.

Sintaxe:
CalculaExpression(Expressão, Agrupamento, CalculationType, Início, Fim, Classificação, HierarchicalSort, ProcessingIdenticalOrderValues)

Opções:

  • Expressão(Linha). Contém uma expressão calculada;
  • Agrupamento(Linha). 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 esse nome;
  • Tipo de cálculo(Linha). Se este parâmetro estiver definido como "TotalTotal", a expressão será calculada para todos os registros do agrupamento. Caso o valor do parâmetro seja “Agrupamento”, os valores serão calculados para o registro do grupo de agrupamento atual. Se o parâmetro estiver definido como "Agrupamento sem recursos", ao calcular a função para um registro de grupo por recurso, a expressão será avaliada para o primeiro registro de grupo do agrupamento original. Ao avaliar a função CalculaExpression com o valor "GroupingNonResource" para registros de grupos que não são agrupamentos por recurso, a função é avaliada da mesma forma que seria avaliada com o valor do parâmetro "Grouping". O construtor de layout de composição de dados, ao gerar um layout de composição de dados ao gerar um campo - um recurso pelo qual o agrupamento é realizado, para o layout, gera para o layout uma expressão calculada usando a função CalculaExpression com o parâmetro "GroupingNon-Resource" especificado. Para outros recursos agrupados por recurso, são retornadas expressões de recursos normais. Se o parâmetro estiver definido como "Hierarquia", então a expressão deverá ser avaliada para o registro hierárquico pai, se houver, e para todo o agrupamento, se não houver nenhum registro hierárquico pai. O construtor de layout, ao gerar uma expressão para o campo % no Grupo de Hierarquia, gera uma expressão contendo o relacionamento da expressão de recurso com a função CalculaExpression para a expressão de recurso que está sendo calculada para o agrupamento atual com tipo de cálculo Hierarquia.
  • Começar. Indica de qual registro o fragmento deve começar, em qual função de expressão agregada deve ser calculada e de qual registro obter valores de campo fora das funções agregadas. Uma string contendo um dos seguintes:
    • "Primeiro" É necessário obter o primeiro registro de agrupamento. Após a palavra entre colchetes, você pode especificar uma expressão, cujo resultado será usado como deslocamento desde o início do agrupamento. O valor resultante deve ser um número inteiro maior que zero. Por exemplo, Primeiro(3) – recebendo o terceiro registro do início do agrupamento. Se o primeiro registro estiver fora do agrupamento, considera-se que não há registros. Por exemplo, se houver 3 registros e você quiser obter o Primeiro (4), considera-se que não há registros.
    • "Durar" Você precisa obter o último registro de agrupamento. Após a palavra entre colchetes, você pode especificar uma expressão cujo resultado será usado como deslocamento do final do agrupamento. O valor resultante deve ser um número inteiro maior que zero. Por exemplo, Last(3) – recebendo o terceiro registro do final do grupo. Se o último registro estiver fora do agrupamento, considera-se que não há registros. Por exemplo, se houver 3 registros e você quiser obter Last(4), considera-se que não há registros.
    • "Anterior" Você precisa obter o registro de agrupamento anterior. Após a palavra entre colchetes, você pode especificar uma expressão, cujo resultado será usado como um deslocamento do registro de agrupamento atual. Por exemplo, Anterior(2) – obtendo o anterior do registro anterior. Se o registro anterior estiver fora do agrupamento (por exemplo, o segundo registro de agrupamento requer a obtenção de Anterior(3)), então o primeiro registro de agrupamento será obtido. Ao receber o registro anterior para o total do agrupamento, obtém-se o primeiro registro.
    • "Próximo" Você precisa obter o próximo registro de agrupamento. Após a palavra entre colchetes, você pode especificar uma expressão, cujo resultado será usado como um deslocamento a partir do registro de agrupamento atual. Por exemplo, Next(2) – obtendo o próximo do próximo registro. Se o próximo registro ultrapassar o agrupamento, considera-se que não há registros. Por exemplo, se houver 3 entradas e a terceira entrada receber Next, considera-se que não há entradas. Quando é recebido o próximo registro para o total do agrupamento, considera-se que não há registro.
    • "Atual". Você precisa obter o registro atual. Ao recuperar um total de agrupamento, o primeiro registro é obtido.
    • "Valor Limite". A necessidade de obter um registro pelo valor especificado. Após a palavra LimitingValue entre parênteses, é necessário indicar a expressão com cujo valor deseja iniciar o fragmento, o primeiro campo de ordenação. O primeiro registro cujo valor do campo de ordenação for maior ou igual ao valor especificado será retornado como registro. Por exemplo, se o campo Período for usado como campo de ordenação e tiver os valores 01/01/2010, 01/02/2010, 01/03/2010, e você quiser obter o LimitingValue(DateTime(2010 , 1, 15)), então será obtido um registro com a data 01/02 2010.
  • Fim. Indica para qual registro o fragmento deve continuar, no qual a expressão agregada deve ser calculada. Uma string contendo um dos seguintes:
    • "Primeiro"
    • "Durar"
    • "Anterior"
    • "Próximo"
    • "Atual".
    • "Valor Limite".
  • Ordenação. Uma string que lista as expressões, separadas por vírgulas, na direção em que a sequência deve ser ordenada. Se não for especificado, a ordenação será executada da mesma forma que para o agrupamento para o qual a expressão é avaliada. Após cada expressão, você pode especificar a palavra-chave Ascendente, para ordenar em ordem crescente, Decrescente, para ordenar em ordem decrescente, Ordenação Automática, para ordenar os campos de referência pelos campos pelos quais deseja ordenar o objeto que está sendo referenciado. A palavra Ordem automática pode ser usada tanto com a palavra Crescente quanto com a palavra Decrescente.
  • Classificação Hierárquica. Semelhante à classificação. Usado para organizar registros hierárquicos. Se não for especificado, o compositor de layout gera a ordenação de acordo com a ordenação especificada no parâmetro Sort.
  • Processando os mesmos valores do pedido. Uma string contendo um dos seguintes:
    • "Juntos" significa que uma sequência de registros ordenados é usada para determinar os registros anteriores e seguintes;
    • “Separadamente” significa que os registros anteriores e seguintes são determinados com base nos valores das expressões de ordenação;
    Por exemplo, se a sequência resultante for ordenada por data:
    1. 01 de janeiro de 2001 Ivanov M. 10
    2. 02 de janeiro de 2001 Petrov S. 20
    3. 02 de janeiro de 2001 Sidorov R. 30
    4. 03 de janeiro de 2001 Petrov S. 40
    Ao utilizar o processamento de valores idênticos da ordem “Separadamente”, o anterior para o registro 3 será o registro 2, e ao utilizar “Juntos” - o registro 1. E o fragmento do registro atual para o registro 2 para “Separadamente” será o registro 2, e para “Juntos” - registros 2 e 3. Assim, o total do registro atual para “Separadamente” será 20, e para “Juntos” - 50. Quando “Juntos” for especificado no Início e Parâmetros finais, não é possível especificar um deslocamento para as posições “Primeiro”, “Último”, “Anterior”, “Próximo”. O valor padrão é "Separado".
Exemplo:
Obtenção da relação entre o valor do campo "Sales.AmountTurnover" de um registro de agrupamento e o valor do mesmo campo em todo o layout:
Soma(Sales.SumTurnover) / CalculaExpression("Sum(Sales.SumTurnover)", "Total").

Este exemplo calcula o valor da hierarquia atual:
Escolha
Quando Nível() > 0
Então EvaluateExpression("Referência", "Hierarquia")
Caso contrário, Nulo
Fim

Notas:
A função leva em consideração a seleção de agrupamentos, mas não leva em conta as seleções hierárquicas. A função não pode ser aplicada a um agrupamento na seleção de grupo desse agrupamento. Por exemplo, ao selecionar o agrupamento Nomenclatura, não é possível utilizar a expressão CalculaExpression("Sum(SumTurnover)", "TotalTotal") > 1000 . Mas tal expressão pode ser usada na seleção hierárquica. Se o registro final preceder o registro inicial, considera-se que não há registros para cálculo de dados detalhados e cálculo de funções agregadas. Ao calcular expressões de intervalo para um total geral (o parâmetro Grouping está definido como "GrossTotal"), presume-se que não há registros para calcular dados detalhados e calcular funções agregadas. Ao gerar uma expressão para a função CalculaExpression, o compositor de layout, se a expressão de ordenação contém campos que não podem ser usados ​​no agrupamento, substitui a função CalculaExpression por NULL.

3. Avalie a expressão com Group Array (EvalExpression With Group Array) - a função retorna um array, cada elemento contém o resultado do cálculo de uma expressão para agrupamento pelo campo especificado.

Sintaxe:
CalculaExpressionWithGroupArray (Expressão, GroupFieldExpressions, SelectRecords, SelectGroups)

Opções:

  • Expressão(String) - a expressão a ser avaliada. Por exemplo, "Valor(Valor do faturamento)";
  • FieldExpressionsGrupos
  • Seleção de Registros
  • Seleção de Grupos- seleção aplicada a registros de grupo. Por exemplo: "Valor(Valor do faturamento) > &Parâmetro1".
Exemplo:
Maximum(CalculateExpressionWithGroupArray("Valor(ValorTurnover)", "Contraparte"));


O construtor de layout, ao gerar expressões para exibição de um campo customizado cuja expressão contém apenas a função CalculaArrayWithGroup, gera a expressão de exibição para que os dados exibidos pelas visualizações e os dados sejam ordenados.
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)), Amount(DataSet.AmountTurnover)", "DataSet.Account"), "2")))

4. Calcule a expressão com GroupValueTable (EvalExpressionWithGroupValueTable) - a função retorna uma tabela de valores, cada elemento contém o resultado do cálculo de uma expressão para agrupamento pelo campo especificado.

Sintaxe:
CalculaExpressionWithGroupValueTable (Expressão, Expressões GroupField, Seleção de Registros, Seleção de Grupo)

Opções:

  • Expressão(String) - a expressão a ser avaliada. Uma linha pode conter múltiplas expressões separadas por vírgulas. Após cada expressão pode haver uma palavra-chave opcional AS e o nome da coluna da tabela de valores. Por exemplo: "Contraparte, Valor (Valor Rotativo) Como Volume de Vendas."
  • FieldExpressionsGrupos- expressões de agrupamento de campos, separadas por vírgulas. Por exemplo, “Contraparte, Parte”;
  • Seleção de Registros- uma expressão aplicada a registros detalhados. Por exemplo, "Sinalizador de exclusão = Falso". Se este parâmetro utilizar uma função agregada, ocorrerá um erro na composição dos dados;
  • Seleção de Grupos- seleção aplicada a registros de grupo. Por exemplo: "Valor(Valor do faturamento) > &Parâmetro1".
Exemplo:
CalculaExpressionWithGroupValueTable("Conta AS Contraparte, Amount(AmountTurnover) ASSalesVolume", "Conta")

O resultado desta função será uma tabela de valores com colunas Contraparte e Volume de Vendas, que conterá as contrapartes com seus volumes de vendas.
O construtor de layout, ao gerar um layout, converte parâmetros de função em termos de campos de layout de layout de dados. Por exemplo, o campo Conta será convertido em DataSet.Account.
Por exemplo, um campo personalizado com a expressão:
CalculaExpressionWithGroupValueTable("Conta, Valor(Valor do faturamento)", "Conta")
O construtor de layout irá gerar a seguinte expressão para saída:
ConnectRows(GetPart(Order(CalculateExpressionWithGroupingValueTable("DataSet.Account, DataSet.AccountRepresentation, Sum(DataSet.AmountTurnover), View(DataSet.AmountTurnover), DataSet.OrderingField", "DataSet.Account"), "5, 1, 3" ), "2, 4"))

5. Nível - a função foi concebida para obter o nível de gravação atual.

Sintaxe:
Nível()

Exemplo:
Nível()

6. Número de sequência - obtenha o próximo número de série.

Sintaxe:
NúmeroPorPedido()

Exemplo:
NúmeroPorPedido()

7. SequenceNumberInGrouping - retorna o próximo número de sequência no agrupamento atual.

Exemplo:
NúmeroByOrderInGroup()

8. Formato - obtém uma string formatada do valor passado.

Sintaxe:
Formato(Valor, FormatString)

Opções:

  • Significado- a expressão que precisa ser formatada;
  • FormatString- a string de formato é definida de acordo com a string de formato 1C:Enterprise.
Exemplo:
Formato(Faturas de Consumíveis.Valor do Documento, "NPV=2")

9. BeginOfPeriod

Sintaxe:
StartPeriod(Data, PeriodType)

Opções:

  • data(Data de). Data especificada;
  • Tipo de período
Exemplo:
StartPeriod(DateTime(2002, 10, 12, 10, 15, 34), "Mês")
Resultado: 01/10/2002 0:00:00

10. Fim do período - a função foi projetada para selecionar uma data específica a partir de uma determinada data.

Sintaxe:
EndPeriod(Data, PeriodType)

Opções:

  • data(Data de). Data especificada;
  • Tipo de período(Linha). Contém um dos seguintes valores: Minuto; Hora; Dia; Uma semana; Mês; Trimestre; Ano; Década; Meio ano.
Exemplo:
EndPeriod(DateTime(2002, 10, 12, 10, 15, 34), "Semana")
Resultado: 13/10/2002 23:59:59

11. AdicionarKDate (DataAdicionar) - a função foi projetada para adicionar um determinado valor à data.

Sintaxe:
AddToDate(Expressão, IncrementType, Magnitude)

Opções:

  • Expressão(Data de). Data original;
  • TipoAmpliação(Linha). Contém um dos seguintes valores: Minuto; Hora; Dia; Uma semana; Mês; Trimestre; Ano; Década; Meio ano.
  • Magnitude(Número). Quanto a data precisa ser aumentada, a parte fracionária é ignorada.
Exemplo:
AddToDate(DateTime(2002, 10, 12, 10, 15, 34), "Mês", 1)
Resultado: 12/11/2002 10:15:34

12. Diferença de data - a função foi projetada para obter a diferença entre duas datas.

Sintaxe:
DataDiferença(Expressão1, Expressão2, TipoDiferença)

Opções:

  • Expressão1(Data de). Data subtraída;
  • Expressão2(Data de). Data original;
  • TipoDiferença(Linha). Contém um dos valores: Segundo; Minuto; Hora; Dia; Mês; Trimestre; Ano.
Exemplo:
DATADIFERENÇA(DATETIME(2002, 10, 12, 10, 15, 34),
DATETIME(2002, 10, 14, 9, 18, 06), "DIA")
Resultado: 2

13. Substring - esta função foi projetada para extrair uma substring de uma string.

Sintaxe:
Substring (String, Posição, Comprimento)

Opções:

  • Linha(Linha). A string da qual a substring é extraída;
  • Posição(Número). A posição do caractere a partir do qual começa a substring a ser extraída da string;
  • Comprimento(Número). Comprimento da substring alocada.
Exemplo:
SUBSTRING(Contas.Endereço, 1, 4)

14. Comprimento da corda - a função foi projetada para determinar o comprimento de uma string.

Sintaxe:
StringComprimento(String)

Parâmetro:

  • Linha(Linha). Uma string cujo comprimento é especificado.
Exemplo:
Linha(Contrapartes.Endereço)

15. Ano- esta função foi projetada para extrair o ano de um valor do tipo Data.

Sintaxe:
Ano (Data)

Parâmetro:

  • data(Data de). A data em que o ano é determinado.
Exemplo:
ANO(Despesa.Data)

16. Trimestre - esta função tem como objetivo extrair o número do trimestre de um valor do tipo Data. O número do quarto normalmente varia de 1 a 4.

Sintaxe:
Trimestre (Data)

Parâmetro:

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

17. 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.

Sintaxe:
Data do mês)

Parâmetro:

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

18. Dia do ano (DayOfYear) - 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).

Sintaxe:
Dia do Ano (Data)

Parâmetro:

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

19. 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.

Sintaxe:
Dia (Data)

Parâmetro:

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

20. 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.

Sintaxe:
Semana (Data)

Parâmetro:

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

21. 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).

Sintaxe:
Dia da semana (data)

Parâmetro:

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

22. 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.

Sintaxe:
Hora (Data)

Parâmetro:

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

23. 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.

Sintaxe:
Minuto (Data)

Parâmetro:

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

24. 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.

Sintaxe:
Segundo (Data)

Parâmetro:

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

25. Elenco - 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, será retornado NULL.

Sintaxe:
Expressar(Expressão, TipoIndicação)

Opções:

  • Expressão- a expressão a ser convertida;
  • Indicação de tipo(Linha). 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.
Exemplo:
Expressar(Data.Props1, "Número(10,3)")

26. É Nulo (É 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.

Sintaxe:
ÉNulo(Expressão1, Expressão2)

Opções:

  • Expressão1- valor a ser verificado;
  • Expressão2- valor de retorno se Expressão1 for NULL.
Exemplo:
SimNULL(Valor(Vendas.ValorTurnover), 0)

27.ACos- calcula o cosseno do arco em radianos.

Sintaxe:
ACos (Expressão)

Parâmetro:

  • Expressão(Número). O valor do cosseno (no intervalo -1...1) pelo qual o ângulo é determinado.
28.ASin- calcula o arco seno em radianos.

Sintaxe:
ASin(Expressão)

Parâmetro:

  • Expressão(Número). O valor do seno (no intervalo -1...1) pelo qual o ângulo é determinado.
29.ATan- calcula o arco tangente em radianos.

Sintaxe:
ATan(Expressão)

Parâmetro:

  • Expressão(Número). O valor da tangente pelo qual o ângulo é determinado.
30.Cos- calcula o cosseno.

Sintaxe:
Cos(Expressão)

Parâmetro:

  • Expressão
31. Exp.- elevando o número e a uma potência.

Sintaxe:
Exp(Expressão)

Parâmetro:

  • Expressão(Número). O significado do diploma.
32.Registro- calcula o logaritmo natural.

Sintaxe:
Registro (Expressão)

Parâmetro:

  • Expressão
33.Log10- calcula o logaritmo de X na base 10.

Sintaxe:
Log10 (Expressão)

Parâmetro:

  • Expressão(Número). O número original é maior que 0.
34. Poxa- exponenciação.

Sintaxe:
Pow(Base, Indicador)

Opções:

  • Base(Número). A base da operação de exponenciação.
  • Índice(Número). Expoente.
35. Pecado- calcula o seno.

Sintaxe:
Pecado (Expressão)

Parâmetro:

  • Expressão(Número). Especificado em radianos.
36. Quadrado- calcula a raiz quadrada.

Sintaxe:
Sqrt(Expressão)

Parâmetro:

  • Expressão(Número). Número não negativo.
37. Bronzeado- calcula a tangente.

Sintaxe:
Bronzeado (Expressão)

Parâmetro:

  • Expressão(Número). O valor do seno pelo qual o ângulo é determinado.
38. Rodada- arredonda o número original para a profundidade de bits necessária. O modo de arredondamento é padrão (1,5 como 2).

Sintaxe:
Env (Expressão, Profundidade de bits)

Opções:

  • Expressão(Número). Número original;
  • Profundidade de bits(Número). O número de casas decimais para arredondar.
39. Internacional- corta a parte fracionária de um número.

Sintaxe:
Objeto (Expressão)

Parâmetro:

  • Expressão(Número). Um número fracionário.
40. 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.

Exemplo:
Nome Abreviado (Documentos.Link, Documentos.Data, Documentos.Número)

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.

41. Ressentimento - esta função retorna uma representação em string do valor passado de um tipo não primitivo. Para valores de tipo primitivo, retorna o próprio valor.

<Пустое значение>".

Exemplo:
Apresentação(Contraparte)

42. Corda - esta função converte o valor passado em uma string.

Se um array ou tabela de valores for usado como parâmetro, a função retorna uma string contendo uma representação em string de todos os elementos do array, separados pelos caracteres ";". Se algum elemento tiver uma representação de string vazia, então a string "<Пустое значение>".

Exemplo:
Linha(DataVendas)

43. Valor é preenchido

Para valores NULL, Indefinido sempre retorna False.
Para valores booleanos, sempre retorna True.
Para outros tipos, retorna True se o valor for diferente do valor padrão para o tipo determinado.

Exemplo:
ValueFilled(DataEntrega)

44. NívelInGroup - esta função obtém o nível de gravação atual relativo ao agrupamento.

Pode ser utilizado para obter o nível de aninhamento de um registro em um agrupamento hierárquico.

Exemplo:
NívelInGroup()

45. Tipo de valor

Sintaxe:
ValueType(Expressão)

Parâmetro:

  • Expressão(Linha). Tipo de valor de string.
Retorna um valor do tipo Type contendo o tipo de valor do parâmetro de função.

O uso adequado de um esquema de composição de dados (DCS) permite:

  • reduzir significativamente o tempo necessário para desenvolver um relatório;
  • elimine a necessidade de criar um manipulador de formulário gerenciado;
  • obtenha um belo resultado com possibilidade de personalização adicional por parte do usuário.

Mas nem todos os desenvolvedores aproveitam ao máximo as capacidades do esquema, já que nem todas as suas configurações são óbvias e intuitivas. Em particular, muitas pessoas sabem que existem campos calculados em 1C SKD, no entanto, não compreendem totalmente o escopo de seu uso e os métodos de trabalhar com eles.

O que é um campo calculado

Na maioria dos casos, a fonte de dados no diagrama de layout é uma consulta. A princípio, dentro da própria consulta você já pode utilizar diversas fórmulas, construções e expressões. Surge uma pergunta natural: por que precisamos de funcionalidade duplicada?

O fato é que o sistema de controle de acesso é algo mais do que apenas exibir o resultado de uma consulta, e isso é claramente visível no formulário de criação do diagrama (Fig. 1).

Os campos calculados permitem realizar determinadas ações com o conjunto de dados gerado:

  • Produza uma matriz de dados recebidos por uma solicitação em uma célula específica, combinando várias linhas em uma;
  • Acesse as funções de exportação do módulo geral;
  • Execute as diversas expressões disponíveis para a linguagem de layout e use as funções especiais EvaluateExpression.

Vamos examinar esta lista.

Matriz de valores em uma célula

Vamos simular uma situação em que é necessário receber todos os números dos documentos de recebimento de uma contraparte em uma célula separada:


Assim, criamos um campo de cálculo adicional em nosso esquema;


Como você pode ver no exemplo acima, não há dificuldades em adicionar e processar campos calculados. Usamos duas funções: Array() e ConnectRows().

Algumas palavras sobre este último. Além do primeiro parâmetro que indica o identificador do array, valores ou valor, nele podem ser definidos mais dois:

  1. Separador de Elementos – indica qual caractere separará um elemento do array ou uma linha de uma tabela de valores de outro (no nosso caso, omitimos este parâmetro e uma quebra de linha foi atribuída por padrão);
  2. Separador de Colunas – caractere usado para separar colunas de uma tabela de valores (ponto e vírgula é usado por padrão).

Acessando as funções de exportação de um módulo comum

As funções de um módulo comum podem atuar como fonte de dados para preencher um campo calculado.

Alguns pontos importantes:

  • A função deve ser exportável;
  • Se uma função estiver localizada em um módulo comum com o conjunto de atributos “Global”, ela é chamada diretamente pelo nome, caso contrário a função deve ser chamada de acordo com o esquema “Nome do módulo compartilhado”. "Nome da função a ser chamada."

Como exemplo de utilização, pegaremos a mesma solicitação de documentos de recebimento e a exibiremos em uma coluna separada. Não descreveremos a solicitação em si, vamos diretamente aos campos calculados:


Assim, vemos que quase qualquer processador de dados pode ser inicializado a partir do sistema de controle de acesso, o que amplia significativamente as possibilidades de utilização do esquema.

Expressões de linguagem de layout

Muitas vezes, no trabalho de um desenvolvedor, surge uma situação em que é necessário exibir o resultado da divisão no campo ACS:

  1. Calcule o custo médio do item;
  2. Todos os tipos de interesse;
  3. Cálculos de rendimentos médios, etc.

Para evitar problemas, nestes casos é aconselhável inserir um teste de divisão por 0 no campo calculado.

Isto pode ser feito usando a construção “Escolha Quando….Então… Caso contrário… Fim”.

No final, algumas palavras sobre a relativamente nova função CalculaExpression(). Com a sua ajuda, em particular, é possível calcular desvios de custo entre as linhas atuais e anteriores, saldo acumulado, etc.

Digamos que você possa obter a Soma do Documento da linha anterior da nossa solicitação especificando o valor Calcular Expressão ("Soma do Documento", "Soma Anterior") no campo "Expressão".