Funciones del lenguaje de expresión del sistema de composición de datos. Usar recursos en el sistema de control de acceso usando el ejemplo de creación de un sistema de control de acceso de informe tabular externo para mostrar el recurso solo en agrupación

En la composición de datos configurar totales Se ve un poco diferente que en las solicitudes. Definamos el conjunto de datos de "Consulta" en el sistema de composición de datos.

En la propia solicitud no configuramos los totales, sino que vamos a la pestaña “Recursos” de la composición de datos. En el nivel del esquema de composición de datos, determinar los recursos. Estos son los campos que deben contarse a nivel de agrupación. Haga clic en el botón “>>” y el propio sistema transferirá todos los campos numéricos y los definirá como recursos.

También puede especificar campos no numéricos en los recursos. Por ejemplo, si selecciona el atributo “Enlace”, el sistema contará la cantidad de documentos en nuestros grupos. Esta información también puede resultar útil. Entonces, en el diagrama de diseño solo definimos recursos y las agrupaciones en sí se configuran en el nivel de variante del informe. El usuario también puede crear las agrupaciones que quiera ver en la configuración de sus opciones de informe.

Creemos una configuración de composición de datos estándar.
Haga clic en el botón "Abrir diseñador de configuración".

Seleccionemos el tipo de informe: lista. Haga clic en el botón "Siguiente".

Seleccionemos todos los campos y muevamos el campo de contraparte a la posición superior. Haga clic en el botón "Siguiente".

Seleccionemos todos los campos y muevamos el campo de contraparte a la posición superior. Haga clic en el botón "Aceptar".

El escenario resultante fue:

Como puede ver, al configurar una opción de informe, los recursos se resaltan con un ícono verde para que puedan distinguirse rápidamente de otros campos.

Si abrimos nuestro informe en modo 1C:Enterprise y lo generamos, veremos que los datos finales se generan a nivel de agrupación. Resultados por partidas y por contrapartes.

Configuración de recursos en el esquema de composición de datos 1C

Ahora dirijamos nuestra atención a configuraciones que existen para los recursos. En el campo “Expresión” podemos especificar una función agregada que se puede utilizar para obtener el valor del recurso. En la lista desplegable puede ver varias funciones estándar, pero no todas. Por ejemplo, no hay funciones.

Aquí en el campo “Expresión” podemos escribir nuestra propia expresión.

En el campo "Expresión" también podemos acceder a las funciones de módulos comunes.

Además, puede especificar en el campo "Calcular por..." por qué agrupaciones se debe calcular el recurso. Si el campo "Calcular por..." no está completo, entonces el valor final del recurso se calculará en todos los niveles de agrupación definidos en la configuración de opciones de informe. En nuestro caso, debemos rellenar el campo “Calcular por...” del recurso “Cantidad”, ya que podemos vender productos con diferentes unidades de medida. Por ejemplo: aceite en litros y ruedas en trozos. ¿No es ilógico sumar las cantidades de estos bienes? Por lo tanto, debemos dejar la suma de cantidades a nivel de artículo y a nivel de contraparte.
Eliminemos la suma.

Si generamos un informe, veremos que las cantidades totales se calculan solo por artículo y las cantidades totales para contratistas están vacías.

Posibilidades al describir recursos en el esquema de composición de datos 1C

consideremos una serie de características no obvias relacionadas con la descripción de los recursos.

  • Cada recurso puede definir varias veces. Pero esto sólo tiene sentido si
    el recurso se calculará en diferentes niveles de agrupaciones. Por ejemplo, si la cantidad, en un caso
    se resume para el artículo, y para los contratistas obtenemos el valor mínimo.

Si generamos un informe, veremos que para la contraparte “Deriya” la compra mínima es de cinco unidades de la gama de productos “Papel autoadhesivo”.

  • En el campo “Expresión”, además de escribir una fórmula, puedes usar una función especial de composición de datos llamada "Calcular". Esta función le permite calcular algún valor final usando una fórmula determinada. Por ejemplo, para cada contraparte es necesario conocer el porcentaje de compras en unidades físicas respecto del volumen total. ¿Pero cómo obtener el volumen total de compras por cantidad? Para ello utiliza la función “Calcular” y escribe la siguiente expresión en el campo “Expresión”:
Suma(Cantidad)/Calcular("Suma(Cantidad)", "TotalTotal")*100

Como se vio, todos los parámetros de la función "Calcular" son cadenas. Para que el campo de cantidad se muestre bellamente en el informe, lo configuraremos en la pestaña "Conjuntos de datos". En la línea de cantidad encontraremos el campo “Opciones de edición”. Abramos el cuadro de diálogo, busquemos la línea "Formato" y editemos la línea de formato en ella, estableciendo el valor "Precisión" en dos en la pestaña "Número".

Ejecutemos el informe y veamos el resultado de calcular el porcentaje de compras de la contraparte "AUPP KOS LLP" en relación con
volumen total:


Al final del artículo quiero recomendarte uno gratuito de Anatoly Sotnikov. Este es un curso de un programador experimentado. Le mostrará por separado cómo crear informes en el sistema de control de acceso. ¡Solo necesitas escuchar atentamente y recordar! Recibirá respuestas a las siguientes preguntas:
  • ¿Cómo crear un informe de lista simple?
  • ¿Para qué sirven las columnas Campo, Ruta y Título en la pestaña "Campos"?
  • ¿Cuáles son las limitaciones de los campos de diseño?
  • ¿Cómo configurar roles correctamente?
  • ¿Cuáles son las funciones de los campos de diseño?
  • ¿Dónde puedo encontrar la pestaña de composición de datos en una consulta?
  • ¿Cómo configurar parámetros en el sistema de control de acceso?
  • Se vuelve aún más interesante...
¿Quizás no debería intentar navegar por Internet usted mismo en busca de la información necesaria? Además, todo está listo para usar. ¡Empieza ya! Todos los detalles sobre lo que hay en las videolecciones gratuitas.

Esta es una de las lecciones sobre cómo marcar la composición de datos en una consulta:

Veamos un ejemplo:

Se envían al cliente varias unidades de mercancía con diferentes descuentos. Debe mostrar los valores de descuento para cada producto en un informe y calcular el descuento promedio. Creemos un informe sobre el sistema de control de acceso.
Para todos los campos para los cuales necesitamos mostrar totales, estableceremos una expresión (método) para su cálculo en la pestaña "Recursos". Para el campo "Descuento", establezca el método de cálculo como "Promedio".

Generamos el informe:

Como puede ver, el total del campo "Descuento" se calcula como el promedio aritmético de los valores del campo, es decir. la suma de todos los valores dividida por el número de valores. Pero porque Dado que los volúmenes de mercancías enviadas con diferentes descuentos son diferentes, el descuento promedio se puede calcular de otra manera: por ejemplo, como la relación entre la cantidad total de mercancías enviadas, teniendo en cuenta el descuento, y la cantidad total de mercancías enviadas. Pero aquí surge una pregunta: si es posible escribir una fórmula para calcular los valores de los campos de registros detallados en el ACS, entonces los totales se calculan automáticamente de acuerdo con la expresión especificada en la pestaña "Recursos", y allí, como Como vimos anteriormente, el “Promedio” se calcula como la media aritmética de los valores mostrados, como en este caso, ¿calcula el total en esta columna usando su propia fórmula?
En realidad no es difícil. Para hacer esto, ajustaremos nuestro informe agregando los campos necesarios que participarán en el cálculo, en nuestro caso estos son “AmountWithDiscount” y “AmountAtPrice”.

Para "enseñar" al ACS a mostrar nuestros resultados, seguimos los siguientes pasos:
1. en la pestaña "Configuración", asigne un nombre a la agrupación "", por ejemplo, "ResultSKD", para hacer esto, llame al menú contextual de la agrupación y haga clic en "asignar un nombre";

2. en la pestaña “Diseños”, agregamos un “diseño de encabezado de agrupación”, donde seleccionamos el nombre previamente asignado “TotalSKD”;

3. dibujamos una línea del diseño, donde dejamos todos los resultados, cuyo cálculo nos conviene, tal cual, y para calcular el porcentaje de descuento promedio escribimos una fórmula de cálculo;

Si todo es correcto, cuando se muestre el informe, debajo se mostrarán dos líneas en total, primero la que se genera automáticamente y luego la que usted creó.

Para dejar la salida solo de su línea total, debe en la pestaña "Configuración" en la sección "Otras configuraciones" de la salida del diseño, deshabilitar la salida para "Diseño del total general horizontal" y "Diseño del total general vertical".

El artículo describe un ejemplo del uso práctico de un promedio ponderado en los resultados del informe. Se muestran algunas técnicas para trabajar con sistemas de control de acceso. El artículo está dirigido a un lector capacitado con al menos habilidades básicas para trabajar con sistemas de control de acceso y generador de consultas.

El cálculo del promedio ponderado se utiliza activamente en tareas relacionadas con la contabilidad de gestión y otros cálculos comerciales.

A-priorato, - PESO PROMEDIO(promedio ponderado) es una media aritmética que tiene en cuenta el peso de cada uno de los términos para los que se calcula este promedio.

En casi todos los libros de texto sobre contabilidad de gestión, para ilustrar el promedio ponderado, se da un ejemplo con la compra de tres lotes del mismo producto: cada lote de bienes tiene un precio de compra diferente y una cantidad diferente. Está claro que si en tal situación tomamos la media aritmética de los precios de compra, obtendremos la temperatura media en el hospital, cifra que no tiene significado práctico. En tal situación, lo que tiene sentido es el promedio ponderado.

El mismo ejemplo de libro de texto: la mercancía se compró en tres lotes, uno de los cuales era de 100 toneladas por 70 libras. Arte. por tonelada, el otro: 300 toneladas por 80 libras. Arte. por tonelada y tercio - 50 toneladas a 95 libras. Arte. por tonelada, entonces en total compra 450 toneladas de bienes; El precio medio habitual de compra será (70 + 80 + 95): 3 = 81,7 libras. Arte. El precio medio ponderado, teniendo en cuenta los volúmenes de cada lote, es igual a (100 × 70) + (300 × 80) + (50 × 95): 450 = 79,4 libras. Arte. por tonelada.

Fórmula:

Donde X son los valores cuyo promedio ponderado queremos obtener, y W son los pesos.

Aquí es donde termina la teoría.

Tuve que lidiar con esto cuando mostraba datos sobre las ventas de bienes en un informe, agrupados por gerentes, donde era necesario obtener como resultado rentabilidad. Las líneas del informe mostraban la rentabilidad de cada producto vendido; en los resultados era necesario ver con qué rentabilidad trabajaba el gerente. En consecuencia, la rentabilidad es un “valor” y el “peso” de este valor son los ingresos. Una serie de aclaraciones para completar el cuadro. Los ingresos (volumen de ventas) son el precio de venta del producto y la cantidad multiplicada. La ganancia bruta es el ingreso menos el costo (no importa cómo se calculó exactamente el costo en el contexto de este artículo). Y finalmente, nuestra rentabilidad es la relación entre la ganancia bruta y los ingresos expresada como porcentaje.

Surge la pregunta: ¿qué rentabilidad obtuvo el gerente en el período del informe? Para responder correctamente a esta pregunta, es necesario calcular el valor de rentabilidad promedio ponderado.

Para obtener el promedio ponderado por rentabilidad en el SKD, en el constructor de consultas creamos un campo auxiliar del formularioexpresión arbitraria, donde registramos el producto de rentabilidad e ingresos. Asignamos un alias a este campo -Campo Auxiliar. Vea la imagen a continuación.

No mostraremos este campo en el informe; necesitamos los datos para calcular los resultados. Calcularemos los resultados en la pestaña ACS.Recursos.

Otra técnica para trabajar con ACS en la pestaña "Recursos", donde se indica el cálculo de los totales, es la posibilidad de utilizar expresiones en el campo "Expresión" con datos del campo "Campos disponibles". Vea la imagen a continuación.

Para la columna del informe “Porcentaje de Rentabilidad” escribimos la expresión Importe (campo auxiliar)/Importe (ingresos).

En resumen, en primer lugar, es importante comprender qué es un promedio ponderado y dónde se debe utilizar solo el promedio aritmético y dónde: el promedio ponderado. Desde un punto de vista técnico, dos puntos pueden presentar alguna dificultad: la creación de un campo auxiliar en el informe y la posibilidad de utilizar una expresión arbitraria en los recursos de ACS para calcular los resultados que necesitamos.

Espero que este artículo sea útil para alguien.

1. Calcular (Evaluar)- tiene como objetivo evaluar una expresión en el contexto de alguna agrupación. La función se utiliza por compatibilidad con versiones anteriores de la plataforma. Se recomienda utilizar la función CalculateExpression en su lugar.

Sintaxis:
Calcular (Expresión, Agrupación, Tipo de cálculo)

Opciones:

  • Expresión(Línea). Contiene una expresión calculada;
  • Agrupamiento(Línea). Contiene el nombre de la agrupación en cuyo contexto se evaluará la expresión. Si se utiliza una cadena vacía como nombre de agrupación, el cálculo se realizará en el contexto de la agrupación actual. Si se utiliza la cadena GrandTotal como nombre del grupo, el cálculo se realizará en el contexto del total general. De lo contrario, el cálculo se realizará en el contexto del grupo principal con el mismo nombre.
    Por ejemplo:
    Suma(Ventas.SumTurnover) / Calcular("Suma(Ventas.SumTurnover)", "Total").
    En este ejemplo, el resultado será la relación entre el monto del campo "Ventas.MontoTurnover" del registro de agrupación y el monto del mismo campo en todo el diseño.
  • Tipo de cálculo(Línea). Si este parámetro se establece en "TotalTotal", la expresión se calculará para todos los registros de agrupación. Si el valor del parámetro es "Agrupación", los valores se calcularán para el registro del grupo de agrupación actual.
2. Evaluar expresión (EvalExpression) - tiene como objetivo evaluar una expresión en el contexto de alguna agrupación. La función tiene en cuenta la selección de agrupaciones, pero no tiene en cuenta selecciones jerárquicas. La función no se puede aplicar a una agrupación en la selección de grupo de esa agrupación.

Sintaxis:
CalculateExpression(Expresión, Agrupación, Tipo de cálculo, Inicio, Fin, Ordenación, Ordenación jerárquica, Valores de orden idénticos de procesamiento)

Opciones:

  • Expresión(Línea). Contiene una expresión calculada;
  • Agrupamiento(Línea). Contiene el nombre de la agrupación en cuyo contexto se evaluará la expresión. Si se utiliza una cadena vacía como nombre de agrupación, el cálculo se realizará en el contexto de la agrupación actual. Si se utiliza la cadena GrandTotal como nombre del grupo, el cálculo se realizará en el contexto del total general. De lo contrario, el cálculo se realizará en el contexto de la agrupación principal con ese nombre;
  • Tipo de cálculo(Línea). Si este parámetro se establece en "TotalTotal", la expresión se calculará para todos los registros de agrupación. Si el valor del parámetro es "Agrupación", los valores se calcularán para el registro del grupo de agrupación actual. Si el parámetro está configurado en "Agrupación sin recursos", al calcular la función para un registro de grupo por recurso, la expresión se evaluará para el primer registro de grupo de la agrupación original. Al evaluar la función CalculateExpression con el valor "GroupingNonResource" para registros de grupo que no son agrupaciones por recurso, la función se evalúa de la misma manera como se evaluaría con el valor del parámetro "Grouping". El generador de diseño de composición de datos, al generar un diseño de composición de datos al generar un campo (un recurso mediante el cual se realiza la agrupación), genera en el diseño una expresión calculada utilizando la función CalculateExpression con el parámetro "GroupingNon-Resource" especificado. Para otros recursos agrupados por recurso, se devuelven expresiones de recursos normales. Si el parámetro se establece en "Jerarquía", entonces la expresión debe evaluarse para el registro jerárquico principal, si lo hay, y para toda la agrupación, si no hay ningún registro jerárquico principal. El generador de diseño, al generar una expresión para el campo % en el grupo de jerarquía, genera una expresión que contiene la relación de la expresión del recurso con la función CalculateExpression para la expresión del recurso que se calcula para la agrupación actual con el tipo de cálculo Jerarquía.
  • Comenzar. Indica desde qué registro debe comenzar el fragmento, en qué funciones de expresión agregadas deben calcularse y desde qué registro obtener valores de campo fuera de las funciones agregadas. Una cadena que contiene uno de:
    • "Primero" Es necesario obtener el primer registro de agrupación. Después de la palabra entre paréntesis, puede especificar una expresión, cuyo resultado se utilizará como desplazamiento desde el comienzo de la agrupación. El valor resultante debe ser un número entero mayor que cero. Por ejemplo, Primero(3): recibe el tercer registro desde el principio de la agrupación. Si el primer registro está fuera de la agrupación, entonces se considera que no existen registros. Por ejemplo, si hay 3 registros y desea obtener el Primero (4), se considera que no hay registros.
    • "Último" Necesita obtener el último registro de agrupación. Después de la palabra entre paréntesis, puede especificar una expresión, cuyo resultado se utilizará como desplazamiento desde el final de la agrupación. El valor resultante debe ser un número entero mayor que cero. Por ejemplo, Último(3): recibe el tercer registro desde el final del grupo. Si el último registro está fuera de la agrupación, entonces se considera que no existen registros. Por ejemplo, si hay 3 registros y desea obtener el Último (4), se considera que no hay registros.
    • "Anterior" Necesita obtener el registro de agrupación anterior. Después de la palabra entre paréntesis, puede especificar una expresión, cuyo resultado se utilizará como un desplazamiento hacia atrás del registro de agrupación actual. Por ejemplo, Anterior(2): obtener el anterior del registro anterior. Si el registro anterior está fuera de la agrupación (por ejemplo, el segundo registro de agrupación requiere obtener Anterior (3)), entonces se obtiene el primer registro de agrupación. Al recibir el registro anterior del total de la agrupación se obtiene el primer registro.
    • "Próximo" Necesita obtener el siguiente registro de agrupación. Después de la palabra entre paréntesis, puede especificar una expresión, cuyo resultado se utilizará como un desplazamiento hacia adelante desde el registro de agrupación actual. Por ejemplo, Siguiente(2): obtener el siguiente del siguiente registro. Si el siguiente registro va más allá de la agrupación, entonces se considera que no hay registros. Por ejemplo, si hay 3 entradas y la tercera entrada recibe Siguiente, entonces se considera que no hay entradas. Cuando se recibe el siguiente registro del total de la agrupación se considera que no existe ningún registro.
    • "Actual". Necesita obtener el registro actual. Al recuperar un total de agrupación, se obtiene el primer registro.
    • "Valor límite". La necesidad de obtener un registro por el valor especificado. Después de la palabra LimitingValue entre paréntesis, debe indicar la expresión con cuyo valor desea iniciar el fragmento, el primer campo de orden. El primer registro cuyo valor del campo de pedido sea mayor o igual al valor especificado se devolverá como registro. Por ejemplo, si el campo Período se utiliza como campo de orden y tiene los valores 01/01/2010, 01/02/2010, 01/03/2010 y desea obtener el Valor límite (Fecha y hora (2010 , 1, 15)), entonces se obtendrá un registro con la fecha 02/01 2010.
  • Fin. Indica a qué registro se debe continuar el fragmento, en el que se debe calcular la expresión agregada. Una cadena que contiene uno de:
    • "Primero"
    • "Último"
    • "Anterior"
    • "Próximo"
    • "Actual".
    • "Valor límite".
  • Clasificación. Una cadena que enumera las expresiones, separadas por comas, en la dirección en la que se debe ordenar la secuencia. Si no se especifica, el orden se realiza de la misma manera que para la agrupación para la cual se evalúa la expresión. Después de cada expresión, puede especificar la palabra clave Ascendente, para ordenar en orden ascendente, Descendente, para ordenar en orden descendente, Ordenamiento automático, para ordenar los campos de referencia por los campos por los cuales desea ordenar el objeto al que se hace referencia. La palabra Orden automático se puede utilizar tanto con la palabra Ascendente como con la palabra Descendente.
  • Clasificación jerárquica. Similar a clasificar. Se utiliza para organizar registros jerárquicos. Si no se especifica, el compositor de diseño genera el orden de acuerdo con el orden especificado en el parámetro Ordenar.
  • Procesando los mismos valores de orden. Una cadena que contiene uno de:
    • "Juntos" significa que se utiliza una secuencia de registros ordenados para determinar los registros anterior y siguiente;
    • "Por separado" significa que los registros anterior y siguiente se determinan en función de los valores de las expresiones de orden;
    Por ejemplo, si la secuencia resultante está ordenada por fecha:
    1. 01 de enero de 2001 Ivanov M. 10
    2. 02 de enero de 2001 Petrov S. 20
    3. 02 de enero de 2001 Sidorov R. 30
    4. 03 de enero de 2001 Petrov S. 40
    Cuando se utiliza el procesamiento de valores idénticos del orden "Por separado", el anterior para el registro 3 será el registro 2, y cuando se utiliza "Juntos", el registro 1. Y el fragmento del registro actual para el registro 2 para "Por separado" será el registro 2, y para "Juntos" - los registros 2 y 3. Por lo tanto, el total para el registro actual para "Por separado" será 20, y para "Juntos" - 50. Cuando se especifica "Juntos" en Inicio y Parámetros finales, no puede especificar un desplazamiento para las posiciones "Primero", "Último", "Anterior", "Siguiente". El valor predeterminado es "Separado".
Ejemplo:
Obtener la relación entre el importe del campo "Sales.AmountTurnover" de un registro de agrupación y el importe del mismo campo en todo el diseño:
Suma(Ventas.SumTurnover) / CalculateExpression("Suma(Ventas.SumTurnover)", "Total").

Este ejemplo calcula el valor de la jerarquía actual:
Elección
Cuando Nivel() > 0
Luego EvaluateExpression ("Referencia", "Jerarquía")
De lo contrario nulo
Fin

Notas:
La función tiene en cuenta la selección de agrupaciones, pero no tiene en cuenta selecciones jerárquicas. La función no se puede aplicar a una agrupación en la selección de grupo de esa agrupación. Por ejemplo, al seleccionar la agrupación de Nomenclatura, no puede utilizar la expresión CalculateExpression("Sum(SumTurnover)", "TotalTotal") > 1000 . Pero esta expresión se puede utilizar en la selección jerárquica. Si el registro final precede al registro inicial, se considera que no existen registros para calcular datos detallados y calcular funciones agregadas. Al calcular expresiones de intervalo para un total general (el parámetro Agrupación está establecido en "GrossTotal"), se supone que no hay registros para calcular datos detallados y calcular funciones agregadas. Al generar una expresión para la función CalculateExpression, el compositor de diseño, si la expresión de orden contiene campos que no se pueden usar en la agrupación, reemplaza la función CalculateExpression con NULL.

3. Evaluar expresión con matriz de grupo (EvalExpression con matriz de grupo) - la función devuelve una matriz, cada elemento del cual contiene el resultado del cálculo de una expresión para agrupar por el campo especificado.

Sintaxis:
CalculateExpressionWithGroupArray (Expresión, GroupFieldExpressions, SelectRecords, SelectGroups)

Opciones:

  • Expresión(Cadena): la expresión que se va a evaluar. Por ejemplo, "Importe (Importe de facturación)";
  • Grupos de expresiones de campo
  • Selección de registros
  • Selección de grupos- selección aplicada a registros de grupo. Por ejemplo: "Importe (Importe de facturación) > &Parámetro1".
Ejemplo:
Máximo(CalculateExpressionWithGroupArray("Monto(MontoTurnover)", "Contraparte"));


El generador de diseño, al generar expresiones para mostrar un campo personalizado cuya expresión contiene solo la función CalculateArrayWithGroup, genera la expresión de salida de tal manera que los datos de visualización y los datos estén ordenados.
Por ejemplo, para un campo personalizado con la expresión:
CalculateExpressionWithGroupArray("Monto(MontoRotación)", "Contraparte")
El generador de diseño generará la siguiente expresión para la salida:
ConnectRows(Array(Order(CalculateExpressionWithGroupingValueTable("View(Sum(DataSet.AmountTurnover)), Amount(DataSet.AmountTurnover)", "DataSet.Account"), "2")))

4. EvalExpressionWithGroupValueTable - la función devuelve una tabla de valores, cada elemento de la cual contiene el resultado del cálculo de una expresión para agrupar por el campo especificado.

Sintaxis:
CalculateExpressionWithGroupValueTable (Expresión, Expresiones de campo de grupo, Selección de registros, Selección de grupo)

Opciones:

  • Expresión(Cadena): la expresión que se va a evaluar. Una línea puede contener varias expresiones separadas por comas. Después de cada expresión puede haber una palabra clave opcional AS y el nombre de la columna de la tabla de valores. Por ejemplo: "Contraparte, Importe (Importe de facturación) como volumen de ventas".
  • Grupos de expresiones de campo- expresiones de campos de agrupación, separados por comas. Por ejemplo, "Contraparte, Parte";
  • Selección de registros- una expresión aplicada a los registros detallados. Por ejemplo, "Eliminar bandera = Falso". Si este parámetro utiliza una función agregada, se producirá un error al componer los datos;
  • Selección de grupos- selección aplicada a registros de grupo. Por ejemplo: "Importe (Importe de facturación) > &Parámetro1".
Ejemplo:
CalculateExpressionWithGroupValueTable("Contraparte COMO Contraparte, Importe(MontoRotación) ASSVolumenVentas", "Contraparte")

El resultado de esta función será una tabla de valores con las columnas Contraparte y Volumen de Ventas, que contendrá las contrapartes con sus volúmenes de ventas.
El compositor de diseño, al generar un diseño, convierte los parámetros de función en términos de campos de diseño de composición de datos. Por ejemplo, el campo Cuenta se convertirá a DataSet.Account.
Por ejemplo, un campo personalizado con la expresión:
CalculateExpressionWithGroupValueTable ("Cuenta, Monto (Monto de facturación)", "Cuenta")
El generador de diseño generará la siguiente expresión para la salida:
ConnectRows(GetPart(Order(CalculateExpressionWithGroupingValueTable("DataSet.Account, DataSet.AccountRepresentation, Sum(DataSet.AmountTurnover), View(DataSet.AmountTurnover), DataSet.OrderingField", "DataSet.Account"), "5, 1, 3" ), "2, 4"))

5. Nivel - la función está diseñada para obtener el nivel de grabación actual.

Sintaxis:
Nivel()

Ejemplo:
Nivel()

6. Número de secuencia - obtenga el siguiente número de serie.

Sintaxis:
NúmeroPorOrden()

Ejemplo:
NúmeroPorOrden()

7. Número de secuencia en agrupación - devuelve el siguiente número de secuencia en la agrupación actual.

Ejemplo:
NúmeroPorOrdenEnGrupo()

8. Formato - obtener una cadena formateada del valor pasado.

Sintaxis:
Formato (Valor, Cadena de formato)

Opciones:

  • Significado- la expresión que debe formatearse;
  • Cadena de formato- la cadena de formato se establece de acuerdo con la cadena de formato 1C:Enterprise.
Ejemplo:
Formato (Facturas de consumibles.Monto del documento, "NPV=2")

9. Comienzo del período

Sintaxis:
Período de inicio (fecha, tipo de período)

Opciones:

  • fecha(Fecha de). Fecha específica;
  • Tipo de período
Ejemplo:
Período de inicio (Fecha y hora (2002, 10, 12, 10, 15, 34), "Mes")
Resultado: 01/10/2002 0:00:00

10. Fin del período - la función está diseñada para seleccionar una fecha específica de una fecha determinada.

Sintaxis:
Fin del período (fecha, tipo de período)

Opciones:

  • fecha(Fecha de). Fecha específica;
  • Tipo de período(Línea). Contiene uno de los siguientes valores: Minuto; Hora; Día; Una semana; Mes; Cuarto; Año; Década; Medio año.
Ejemplo:
EndPeriod(FechaHora(2002, 10, 12, 10, 15, 34), "Semana")
Resultado: 13/10/2002 23:59:59

11. AgregarKDate (FechaAgregar) - la función está diseñada para agregar un cierto valor a la fecha.

Sintaxis:
AddToDate(Expresión, Tipo de incremento, Magnitud)

Opciones:

  • Expresión(Fecha de). Fecha original;
  • TipoAmpliación(Línea). Contiene uno de los siguientes valores: Minuto; Hora; Día; Una semana; Mes; Cuarto; Año; Década; Medio año.
  • Magnitud(Número). En cuánto se debe aumentar la fecha, se ignora la parte fraccionaria.
Ejemplo:
AddToDate(FechaHora(2002, 10, 12, 10, 15, 34), "Mes", 1)
Resultado: 12/11/2002 10:15:34

12. Diferencia de fecha - la función está diseñada para obtener la diferencia entre dos fechas.

Sintaxis:
FechaDiferencia(Expresión1, Expresión2, TipoDiferencia)

Opciones:

  • Expresión1(Fecha de). Fecha restada;
  • Expresión2(Fecha de). Fecha original;
  • TipoDiferencia(Línea). Contiene uno de los valores: Segundo; Minuto; Hora; Día; Mes; Cuarto; Año.
Ejemplo:
DIFERENCIA FECHA(FECHA HORA(2002, 10, 12, 10, 15, 34),
FECHA HORA (2002, 10, 14, 9, 18, 06), "DÍA")
Resultado: 2

13. Subcadena - esta función está diseñada para extraer una subcadena de una cadena.

Sintaxis:
Subcadena (cadena, posición, longitud)

Opciones:

  • Línea(Línea). La cadena de la que se extrae la subcadena;
  • Posición(Número). La posición del carácter desde el que comienza la subcadena que se extraerá de la cadena;
  • Longitud(Número). Longitud de la subcadena asignada.
Ejemplo:
SUBSTRING(Cuentas.Dirección, 1, 4)

14. Longitud de la cuerda - la función está diseñada para determinar la longitud de una cuerda.

Sintaxis:
Longitud de cadena (cadena)

Parámetro:

  • Línea(Línea). Una cadena cuya longitud se especifica.
Ejemplo:
Línea(Contrapartes.Dirección)

15 años- esta función está diseñada para extraer el año de un valor de tipo Fecha.

Sintaxis:
Año (Fecha)

Parámetro:

  • fecha(Fecha de). La fecha en la que se determina el año.
Ejemplo:
AÑO(Gasto.Fecha)

16. Cuarto - esta función está diseñada para extraer el número del trimestre de un valor de tipo Fecha. El número del cuarto normalmente oscila entre 1 y 4.

Sintaxis:
Trimestre (Fecha)

Parámetro:

  • fecha(Fecha de). La fecha en la que se determina el trimestre.
Ejemplo:
TRIMESTRE(Gasto.Fecha)

17. mes - esta función está diseñada para extraer el número de mes de un valor de tipo Fecha. El número de mes normalmente oscila entre 1 y 12.

Sintaxis:
Mes (fecha)

Parámetro:

  • fecha(Fecha de). La fecha en la que se determina el mes.
Ejemplo:
MES(Gasto.Fecha)

18. Día del año (DayOfYear) - esta función está diseñada para obtener el día del año a partir de un valor de tipo Fecha. El día del año normalmente oscila entre 1 y 365 (366).

Sintaxis:
Día del año (Fecha)

Parámetro:

  • fecha(Fecha de). La fecha en la que se determina el día del año.
Ejemplo:
DÍAAÑO(Gasto.Fecha)

19. día- esta función está diseñada para obtener el día del mes a partir de un valor de tipo Fecha. El día del mes normalmente oscila entre 1 y 31.

Sintaxis:
Día(Fecha)

Parámetro:

  • fecha(Fecha de). La fecha en la que se determina el día del mes.
Ejemplo:
DÍA(Gasto.Fecha)

20. Semana - esta función está diseñada para obtener el número de semana del año a partir de un valor de tipo Fecha. Las semanas del año están numeradas empezando por el 1.

Sintaxis:
Semana (fecha)

Parámetro:

  • fecha(Fecha de). La fecha en la que se determinan los números de semana.
Ejemplo:
SEMANA(Gasto.Fecha)

21. Día de la semana - esta función está diseñada para obtener el día de la semana a partir de un valor de tipo Fecha. El día normal de la semana va del 1 (lunes) al 7 (domingo).

Sintaxis:
Día de la semana (Fecha)

Parámetro:

  • fecha(Fecha de). La fecha en la que se determina el día de la semana.
Ejemplo:
DÍA DE LA SEMANA (Fecha de Factura de Gastos)

22. Hora- esta función está diseñada para obtener la hora del día a partir de un valor de tipo Fecha. La hora del día oscila entre las 0 y las 23.

Sintaxis:
Hora (fecha)

Parámetro:

  • fecha(Fecha de). La fecha en la que se determina la hora del día.
Ejemplo:
HORA(Gasto.Fecha)

23. Minuto - esta función está diseñada para obtener el minuto de la hora a partir de un valor de tipo Fecha. El minuto de la hora va del 0 al 59.

Sintaxis:
Minuto(Fecha)

Parámetro:

  • fecha(Fecha de). La fecha en la que se determina el minuto de la hora.
Ejemplo:
MINUTO(Gasto.Fecha)

24. Segundo - esta función está diseñada para obtener el segundo de un minuto a partir de un valor de tipo Fecha. El segundo de un minuto va de 0 a 59.

Sintaxis:
Segundo (fecha)

Parámetro:

  • fecha(Fecha de). La fecha en la que se determinan los segundos del minuto.
Ejemplo:
SEGUNDO (Fecha de vencimiento)

25. Reparto - esta función está diseñada para extraer un tipo de una expresión que puede contener un tipo compuesto. Si la expresión contiene un tipo distinto al requerido, se devolverá NULL.

Sintaxis:
Express(Expresión, TipoIndicación)

Opciones:

  • Expresión- la expresión a convertir;
  • Tipo Indicación(Línea). Contiene una cadena de tipo. Por ejemplo, "Número", "Cadena", etc. Además de los tipos primitivos, esta línea puede contener el nombre de la tabla. En este caso, se intentará expresar una referencia a la tabla especificada.
Ejemplo:
Expreso(Data.Props1, "Número(10,3)")

26. Es nulo (Es nulo) - esta función devuelve el valor del segundo parámetro si el valor del primer parámetro es NULL. De lo contrario, se devolverá el valor del primer parámetro.

Sintaxis:
Es nulo (Expresión1, Expresión2)

Opciones:

  • Expresión1- valor a comprobar;
  • Expresión2- valor de retorno si Expresión1 es NULL.
Ejemplo:
SíNULL(Importe(Ventas.ImporteRotación), 0)

27.ACos- calcula el arco coseno en radianes.

Sintaxis:
ACos(Expresión)

Parámetro:

  • Expresión(Número). El valor del coseno (en el rango -1 ... 1) por el cual se determina el ángulo.
28.ASen- calcula el arcoseno en radianes.

Sintaxis:
ASin(Expresión)

Parámetro:

  • Expresión(Número). El valor del seno (en el rango -1 ... 1) por el cual se determina el ángulo.
29.ATan- calcula el arcotangente en radianes.

Sintaxis:
ATan(Expresión)

Parámetro:

  • Expresión(Número). El valor de la tangente por el cual se determina el ángulo.
30.porque- calcula el coseno.

Sintaxis:
porque (expresión)

Parámetro:

  • Expresión
31. Exp.- elevar el número e a una potencia.

Sintaxis:
Exp(Expresión)

Parámetro:

  • Expresión(Número). El significado del título.
32.Registro- calcula el logaritmo natural.

Sintaxis:
Registro (expresión)

Parámetro:

  • Expresión
33.Registro10- calcula el logaritmo de X en base 10.

Sintaxis:
Log10(Expresión)

Parámetro:

  • Expresión(Número). El número original es mayor que 0.
34. prisionero de guerra- exponenciación.

Sintaxis:
Potencia(Base, Indicador)

Opciones:

  • Base(Número). La base de la operación de exponenciación.
  • Índice(Número). Exponente.
35. Pecado- calcula el seno.

Sintaxis:
Pecado (Expresión)

Parámetro:

  • Expresión(Número). Especificado en radianes.
36. cuadrado- calcula la raíz cuadrada.

Sintaxis:
Sqrt(Expresión)

Parámetro:

  • Expresión(Número). Número no negativo.
37. bronceado- calcula la tangente.

Sintaxis:
Bronceado (expresión)

Parámetro:

  • Expresión(Número). El valor del seno por el cual se determina el ángulo.
38. Ronda- redondea el número original a la profundidad de bits requerida. El modo de redondeo es estándar (1,5 como 2).

Sintaxis:
Env(Expresión, Profundidad de bits)

Opciones:

  • Expresión(Número). Número original;
  • Profundidad de bits(Número). El número de decimales a los que se redondeará.
39. internacional- corta la parte fraccionaria de un número.

Sintaxis:
Objeto (Expresión)

Parámetro:

  • Expresión(Número). Un número fraccionario.
40. Funciones de módulos comunes.

Una expresión del motor de composición de datos puede contener llamadas a funciones de módulos de configuración comunes globales. No se requiere sintaxis adicional para llamar a dichas funciones.

Ejemplo:
Nombre abreviado(Documentos.Enlace, Documentos.Fecha, Documentos.Número)

En este ejemplo, la función "Nombre abreviado" se llamará desde el módulo de configuración general.
Tenga en cuenta que el uso de funciones de módulo comunes solo se permite si se especifica el parámetro apropiado del procesador de composición de datos.
Además, las funciones de módulos comunes no se pueden utilizar en expresiones de campos personalizados.

41. Resentimiento - esta función devuelve una representación de cadena del valor pasado de un tipo no primitivo. Para valores de tipo primitivo, devuelve el valor mismo.

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

Ejemplo:
Presentación(Contraparte)

42. cuerda - esta función convierte el valor pasado en una cadena.

Si se utiliza una matriz o una tabla de valores como parámetro, la función devuelve una cadena que contiene una representación en cadena de todos los elementos de la matriz, separados por los caracteres ";". Si algún elemento tiene una representación de cadena vacía, entonces la cadena "<Пустое значение>".

Ejemplo:
Fila (fecha de venta)

43. El valor está lleno

Para valores NULL, Indefinido siempre devuelve Falso.
Para valores booleanos, siempre devuelve Verdadero.
Para otros tipos, devuelve True si el valor difiere del valor predeterminado para el tipo determinado.

Ejemplo:
Valor completado (fecha de entrega)

44. Nivel en grupo - esta función obtiene el nivel de grabación actual en relación con la agrupación.

Se puede utilizar para obtener el nivel de anidamiento de un registro en una agrupación jerárquica.

Ejemplo:
NivelEnGrupo()

45. Tipo de valor

Sintaxis:
Tipo de valor (expresión)

Parámetro:

  • Expresión(Línea). Tipo de valor de cadena.
Devuelve un valor de tipo Tipo que contiene el tipo de valor del parámetro de función.

Inicie sesión en el sitio como estudiante

Inicie sesión como estudiante para acceder a los materiales escolares.

Sistema de composición de datos 1C 8.3 para principiantes: contando los resultados (recursos)

El propósito de esta lección será:

  • Redactar un informe que muestre una lista de productos (directorio de alimentos), su contenido calórico y sabor.
  • Agrupa productos por color.
  • Obtenga información sobre cómo resumir (recursos) y campos calculados.

Crear un nuevo informe

Como en lecciones anteriores, abrimos la base de datos " fiambres"en el configurador y crea un nuevo informe a través del menú" Archivo"->"Nuevo...":

Tipo de Documento - informe externo:

En el formulario de configuración del informe, escriba el nombre " Lección 3" y presione el botón " Diagrama de composición de datos abiertos":

Deje el nombre del esquema predeterminado y haga clic en el botón " Listo":

Agregar una solicitud a través del constructor

En la pestaña " conjunto de datos" haga clic verde signo más y seleccione " Agregar conjunto de datos - Consulta":

En lugar de escribir el texto de la solicitud manualmente, lo ejecutamos nuevamente. constructor de consultas:

En la "pestaña" Mesas"arrastrar la mesa" Alimento" de la primera columna a la segunda:

Seleccione de la tabla " Alimento"campos que solicitaremos. Para ello, arrastre y suelte los campos" Nombre", "Gusto", "Color" Y " Contenido calórico" de la segunda columna a la tercera:

Resultó así:

Presiona el botón " DE ACUERDO" - el texto de la solicitud se generó automáticamente:

Crear configuraciones de presentación de informes

Ir a la pestaña " Ajustes" y haga clic en varita mágica, llamar diseñador de configuración:

Seleccione el tipo de informe " Lista..." y presione el botón " Más":

Arrastre desde la columna de la izquierda hacia la derecha los campos que se mostrarán en la lista y haga clic en " Más":

Arrastre desde la columna de la izquierda al campo de la derecha " Color" - Pasará agrupamiento líneas en el informe. Haga clic en " DE ACUERDO":

Y aquí está el resultado del trabajo del diseñador. Jerarquía de nuestro informe:

  • el informe en su conjunto
  • agrupando "Color"
  • entradas detalladas: líneas con nombres de alimentos

Guarde el informe (botón disquete) Y sin cerrar Inmediatamente abriremos el configurador en modo usuario. Resultó así:

Cambiar el orden de las columnas

pero vamos cambiemos el orden columnas (flechas arriba y abajo) para que se parezca a la siguiente figura:

Guardemos el informe y volvamos a abrirlo en modo usuario:

Genial, eso es mucho mejor.

Resumamos el contenido calórico.

Sería bueno resumir el contenido calórico de los alimentos por grupo. Para ver la suma del contenido calórico de todos los productos, digamos, blancos o amarillos. O descubra el contenido calórico total de todos los productos de la base de datos.

Para ello existe un mecanismo de cálculo de recursos.

Ir a la pestaña " Recursos"y arrastra el campo" Contenido calórico"(vamos a resumirlo) de la columna de izquierda a la derecha.

En este caso, en el campo, seleccione la expresión de la lista desplegable " Cantidad (calorías)", ya que el total será la suma de todos los elementos incluidos en el total:

Guardamos y generamos un informe:

Ahora tenemos resultados para cada uno de los grupos y para el informe en su conjunto.

Resumámoslo (promedio) en términos de calorías.

Ahora hagamos que aparezca en otra columna. promedio Contenido calórico de los productos por grupos y en el informe en su conjunto.

No puede tocar la columna "Calorías" existente: el total ya se muestra en ella, por lo que creemos otro campo, que será una copia exacta del campo "Calorías".

Para crear dicho campo "virtual", usaremos el mecanismo campos calculados.

Ir a la pestaña " Campos calculados" y presione verde Signo de más:

En una columna " Ruta de datos"escribimos el nombre del nuevo campo ( sin problemas, sin espacios). Que se llame " Contenido calórico promedio", y en la columna " Expresión"escribimos el nombre de un campo existente a partir del cual se calculará el nuevo campo. Escribimos allí " Contenido calórico". Columna " Título" se completará automáticamente.

Hemos agregado un nuevo campo (" Contenido calórico promedio"), pero no aparecerá en el informe por sí solo; deberá volver a llamar diseñador de configuración("varita mágica") o agregue este campo a mano.

Vamos a hacerlo segundo forma. Para hacer esto, vaya a la pestaña " Ajustes", seleccionar " Informe"(después de todo, queremos agregar el campo completo al informe), seleccione la pestaña en la parte inferior" Campos seleccionados"y arrastra el campo" Contenido calórico promedio"de la columna de izquierda a derecha:

Resultó así:

Guardamos y generamos un informe:

Ha aparecido el campo y vemos que sus valores son los valores del campo "Calorías". ¡Excelente!

Para hacer esto, usaremos nuevamente el mecanismo que ya conocemos. recursos(resumiendo). Ir a la pestaña " Recursos"y arrastra el campo" Contenido calórico promedio"de la columna de izquierda a derecha:

Además, en la columna " Expresión"elegir" Promedio (calorías promedio)":

Guardamos y generamos un informe:

Vemos que para los grupos, es decir, para cada color, y para el informe en su conjunto, el valor medio se calculó de forma absolutamente correcta. pero están presentes entradas adicionales para productos individuales (no grupos) que me gustaría eliminar del informe.

¿Sabes por qué aparecieron (valores no por grupo)? Porque cuando agregamos el campo " Contenido calórico promedio"en la configuración del informe, en el segundo paso seleccionamos el informe completo y este nuevo campo entró en el elemento " Detallado registros".

Arreglemos el error. Para hacer esto, regrese a la pestaña " Ajustes", seleccionar " Entradas detalladas" primero desde arriba (paso 2) y luego " Entradas detalladas"desde abajo (paso 3), vaya al marcador" Seleccionado campos" y veremos en su columna derecha el elemento " Auto".

Elemento " Auto" - este no es un solo campo. Estos son varios campos que caen aquí automáticamente según la configuración de nivel superior.

Para ver cuáles son estos campos, haga clic en el elemento " Auto" bien botón y seleccione " Expandir":

Elemento " Auto" ampliado a los siguientes campos:

Y aquí está nuestro campo" Contenido calórico promedio"que vino aquí desde el punto " Informe" cuando lo arrastramos allí. Sólo vamos a eliminar marque la casilla junto a este campo para eliminar su salida.