Contactos

Uso de características en SCD. Peculiaridades del uso del mecanismo de características en el sistema de control de acceso Creamos configuraciones de presentación de informes.

Daremos un ejemplo utilizando la configuración “Manufacturing Enterprise Management” versión 1.3. En la base de información, para todos los elementos del directorio "Organizaciones", se han agregado las propiedades "Almacén principal", "Contraparte relacionada" y "País de ubicación". Necesitamos crear un informe en un sistema de composición de datos (DCS), en el que podamos aplicar la selección basada en características adicionales de las organizaciones.

En este caso, utilizaremos la funcionalidad ACS estándar para trabajar con las características del objeto. También consideraremos una característica del desarrollo de dichos informes, a saber, la imposibilidad de utilizar características adicionales en el diseñador del esquema de composición de datos en el modo "Configurador". Este último no permite el uso de campos característicos al configurar campos que se mostrarán en un informe, selecciones, agrupaciones en la estructura del informe, etc.

Crear un informe y configurar características.

Creemos un informe simple. Tendrá un conjunto de datos con la siguiente consulta:

QueryText = "SELECCIONAR | Organizaciones . Enlace como organización,| Organizaciones . ESTAÑO,| Organizaciones . control |DE Directorio" ;

La estructura del informe solo generará registros detallados con todos los campos seleccionados en la consulta. En el diseñador, configurar la estructura del informe se verá así:

La siguiente captura de pantalla muestra el resultado del informe con la configuración actual.

Excelente. Pasemos ahora a configurar las características, pero antes permítanme recordarles en términos generales el funcionamiento del mecanismo de características en la mayoría de configuraciones estándar, incluidos los arrancadores suaves. Para ello se utilizan varios objetos de configuración.

  1. Plan de tipos de características "Propiedades de los objetos".
  2. Registro de información "Valores de Propiedades de Objeto".

Gráficamente, la relación entre un objeto base de información y sus características se puede representar mediante el siguiente diagrama:

Describamos el esquema con más detalle. El registro de información "ObjectPropertyValues" en la dimensión "Objeto" contiene un enlace al elemento de la base de información para el cual se guarda la propiedad. En nuestro ejemplo, este es un enlace al elemento del directorio "Organizaciones". Todas las propiedades posibles de un objeto se definen en términos de tipos de características (PVC) "Propiedades de los objetos". El valor de característica almacenado en el registro de detalles depende de los tipos de datos disponibles para el elemento del plan de tipo de característica registrado en la dimensión Propiedad. Esta descripción debería dar sólo una idea general del mecanismo adicional. propiedades. En la práctica es más complicado.

Ahora pasemos a configurar las características en el esquema de composición de datos. Para hacer esto, inicie el diseñador de consultas y vaya a la pestaña "Características". Aquí debe agregar un campo para conectar el objeto de la base de datos con tablas de propiedades y valores de propiedad. Anteriormente, analizamos el esquema de comunicación entre objetos de configuración para almacenar información adicional. propiedades/características. En base a esta información, la configuración será la siguiente:

Después de esto, la solicitud del conjunto de datos se complementará con instrucciones para obtener las características del objeto.

" SELECCIONAR | Organizaciones . Enlace como organización,| Organizaciones . ESTAÑO,| Organizaciones . control |DE| Directorio . Organizaciones AS Organizaciones | // Agregar. instrucciones para obtener características |(CARACTERÍSTICAS| TIPO (Directorio. Organizaciones) | TIPOS DE CARACTERÍSTICAS Plan de Tipos de Características. Propiedades del objeto | Enlace de clave de campo | NOMBRE DEL CAMPO Nombre | VALORES DEL TIPO DE VUELO TypeValues | CARACTERÍSTICAS VALORES Registro de Información. Valores de propiedad del objeto | OBJETO DE CAMPO Objeto | Propiedad POLEVIDA | VALORES ÚTILES Significado )"

Eso es todo. La funcionalidad del informe ahora le permite seleccionar campos para características adicionales en el informe (campos de salida, selecciones, etc.). Pero hay uno PERO. Podemos usar estos campos en la configuración del informe solo en el modo 1C:Enterprise. En el configurador no podemos ver los campos de características, lo cual es lógico, porque las características las introduce el usuario y se almacenan en la base de información.

Pero si es necesario podemos añadir campos de características, por ejemplo, a la selección antes de abrirla. Veamos un pequeño ejemplo.

Trabajo programático con características.

Al abrir el formulario de informe, ejecute el siguiente código de programa:

Configuración actual = Configuración del compositor. Ajustes; CollectionCollection = Configuración actual. Selección. Elementos; // Agregar selección por adicional. a los detalles del artículo "Almacén principal". [Almacén principal] // Agregar selección por adicional. a los detalles de nomenclatura "País de colocación" NovEl = Selecciones de colección. Agregar(Tipo(" Elemento de selecciónDiseño de datos" ) ); NewEl.ComparisonType = DataCompositionComparisonType. Es igual; NewEl.LeftValue = . [País de envío]" ); NewEl. Uso = Falso ; // Agregar selección por adicional. al detalle del ítem "Contraparte vinculada" NovEl = Selecciones de colección. Agregar(Tipo(" Elemento de selecciónDiseño de datos" ) ); NewEl.ComparisonView = DataCompositionComparisonView. Es igual; NewEl.LeftValue = NewDataCompositionField("Organización . [Contraparte relacionada]" ); NewEl. Uso = Falso ;

Luego, si miramos la selección del informe en modo 1C:Enterprise, veremos la siguiente imagen:

Por lo tanto, agregamos mediante programación una selección basada en características adicionales del directorio "Organizaciones", a pesar de que estos campos no estaban disponibles en el diseñador ACS. Tenga en cuenta la sintaxis para definir un campo de composición de datos.

NewDataCompositionField(" Organización . [Contraparte relacionada]" ) ,

a saber, el texto “[contraparte vinculada]”. Si escribimos así:

NewDataCompositionField(" Organización . Contraparte Relacionada" ) ,

luego, al ejecutar el informe, el ACS detectará incorrectamente los campos de diseño. En la configuración, los campos de selección se resaltarán como incorrectos:

Para propiedades y detalles adicionales que no están disponibles en el diseñador ACS, al acceder mediante programación, debe utilizar la siguiente sintaxis:

Nuevo campo de composición de datos(" . " )

Por lo tanto, podemos establecer la configuración del informe incluso si los campos no están disponibles en el diseñador ACS.

Conclusión

El uso de la configuración de características en ACS puede simplificar significativamente el desarrollo de informes complejos. A pesar de algunas deficiencias en el trabajo, como la falta de capacidad para configurar la selección por adicionales. propiedades en el diseñador, etc., el mecanismo de características puede considerarse un paso importante para simplificar el desarrollo de informes en el sistema 1C:Enterprise.

En el artículo no consideramos todas las posibilidades de las características del ACS. Más allá del alcance del artículo, existen posibilidades como: definición arbitraria de fuentes de datos, tanto para propiedades como para valores de características, así como la selección por parte del propietario de todas las características disponibles en la base de información, y mucho más. El tema es amplio, hay espacio para ampliar su círculo de conocimientos.

Un ejemplo de cómo puedes obtener los campos del registro anterior en un grupo y más. Conveniente para calcular la diferencia entre los valores del precio anterior y el actual.

La esencia de la solución es utilizar la función del lenguaje de expresión ACS. CalcularExpresión() en el campo calculado agregado que llamé Delta. La función tiene los siguientes parámetros:

Opciones:

  • Expresión. Tipo Línea;
  • Agrupamiento. Tipo Línea;
  • Tipo de cálculo. Tipo Línea;
  • Comenzar
  • Fin. Una cadena que contiene una de las opciones;
  • Clasificación. Línea;
  • Clasificación jerárquica;
  • Procesando los mismos valores de orden

Nos interesan los parámetros 4 y 5 ( Comenzar Y Fin). La expresión se verá así:

isNULL((CALCULATEEXPRESSION("Precio", "Anterior", "Anterior") - Precio), 0)

Aquí calculamos el valor anterior del campo. Precio y restarle el valor del campo actual Precio. Naturalmente, para el primer registro no se calculará el valor anterior y el resultado de la resta con el valor del campo actual será Nulo, por lo que para mantener todo “puro” usamos la función isNULL para convertir Null en el número cero.

Colocar una tabla de valores en una celda de un documento de hoja de cálculo

A veces es necesario colocar la parte tabular de un documento o datos que representan las filas de la parte tabular en una celda del documento tabular, por ejemplo así:

Para hacer esto necesitas usar la función: CalcularExpresiónConGroupValueTable() , que tiene parámetros:

  • Expresión- la expresión a calcular. Escriba Cadena. 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";
  • Selección de agrupaciones- selección aplicada a registros de grupo. Por ejemplo: "Importe (Importe de facturación) > &Parámetro1".

Para hacer esto, creamos un campo calculado en el cual mostraremos la tabla resultante, luego colocamos este campo en los recursos con la expresión CalculateExpressionWithGroupValueTable("Nomenclatura, Cantidad")

Numera las columnas

Un ejemplo de cómo se pueden numerar columnas en un sistema de control de acceso.

La esencia de la solución:

  1. Creamos una consulta en la que numeramos las líneas del resultado de la consulta dentro de una determinada subordinación.
  2. Mostramos el resultado en una tabla cruzada.

¡IMPORTANTE!

Una vez numeradas las líneas de la solicitud, se deben colocar en un VT y luego seleccionarlas desde este VT; de lo contrario, el sistema de control de acceso hará todo a su manera y se incluirán campos incorrectos en la agrupación.

Para obtener el resultado, necesita crear un campo calculado con la expresión "Empleado" + Formato(NPP,"CHTs=3; CHVN=") y el campo calculado Nombre Completo, en el cual simplemente puede colocar al Empleado, luego colocamos el campo Nombre completo a un recurso con una expresión Máximo(nombre completo) o simplemente Nombre completo- ninguna diferencia

Grupos alternos con resaltado de color.

En algún lugar de Mist o en el mismo 1Cskd.ru surgió la pregunta sobre cómo resaltar líneas que forman grupos con diferentes colores.

Esto se logra creando un campo calculado:

CalculateExpression("Cantidad (varias nomenclaturas)","Primero", "Anterior","Juntos") % 2

Contamos el número de diferentes “agrupaciones” del campo Nomenclatura; las agrupaciones se pueden contar estableciendo el valor del parámetro Processing Identical OrderValues ​​​​= “Together”

El resto de la división por dos dejará claro si el grupo es par o no; en consecuencia, creamos un elemento de diseño condicional con la condición Campo = 1

Se mantiene por características. Características en línea con cantidad entre paréntesis.

En el mismo 1CSkd.ru apareció un tema en el que el autor pide ayuda para realizar un informe, donde en una de las columnas se necesita una lista de características (tallas de zapatos) con su cantidad. http://1cskd.ru/2013/05/podskazhite-novichku-v-skd/

Esto se logra usando la misma función. CalcularExpresiónConGroupArray()

En este ejemplo, la función se ve así:

CalculateExpressionWithGroupArray("Característica de Nomenclatura.Nombre +
""("" + Formato(CantidadRemanente,""CHG=0"") + "")""",
,
"ValueFilled(Característica de nomenclatura)")

El tercer parámetro es la selección, le permite evitar presentar la cadena vacía ""; en consecuencia, no verá restos sin características

Unir dos tablas con la clave Fila = Número

O una opción para convertir un valor de tipo numérico en una cadena en SKD

De vez en cuando en los foros veo un tema como "Cómo convertir un número en una cadena en una consulta". Si está escribiendo un informe sobre un sistema de control de acceso y necesita realizar una transformación similar, entonces no necesita escribir ningún truco en la solicitud.

Para convertir un número en una cadena, simplemente use la función de lenguaje de expresión del sistema de composición de datos ACS. Línea() o Formato()

Para convertir una cadena en un número puedes usar la función Calcular()

Ordenar por cadena como por número

En mi ejemplo, simplemente mostraré el directorio de empleados, clasificándolo por número de personal (código).

El resultado se verá así:

Esto se logra creando un campo calculado y usando la función del lenguaje de expresión ACS. Calcular()

  1. Crear un campo calculado Número de pestañaNúmero, con la expresión: Calcular(Empleado.Código)
  2. Ordenar por este campo

Básicamente, esto es convertir una cadena en un número usando la función del lenguaje de expresión SKD. Calcular()

También te aconsejo que veas “Videotutoriales sobre ACS” (fácil de buscar en Google)

Al desarrollar, utilizo un archivo .

Una de las áreas más importantes del software empresarial son los informes. El destino de una empresa puede depender (¡y no en sentido figurado!) de lo fácil que sea adaptar un informe existente a las necesidades cambiantes de la empresa (y de la legislación) o crear uno nuevo, ya sea un informe para la oficina de impuestos. o un diagrama de la dependencia de la demanda de bienes de la temporada y otros factores. Un sistema de informes potente y flexible que facilita la extracción de los datos necesarios del sistema, los presenta en una forma comprensible y permite al usuario final reconfigurar un informe estándar para ver los datos desde una nueva perspectiva: este es el ideal que todo el sistema empresarial debe esforzarse.

En la plataforma 1C:Enterprise, un mecanismo llamado "Sistema de composición de datos" (abreviado como DCS) es responsable de generar informes. En este artículo intentaremos dar una breve descripción de la idea y la arquitectura del mecanismo ACS y sus capacidades.


ACS es un mecanismo basado en una descripción declarativa de informes. El sistema de control de acceso está diseñado para generar informes y mostrar información con una estructura compleja. Por cierto, además de desarrollar informes, el mecanismo ACS también se utiliza en 1C:Enterprise en una lista dinámica, una herramienta para mostrar información de listas con una rica funcionalidad (mostrar listas planas y jerárquicas, diseño condicional de filas, agrupaciones, etc. ).

Una pequeña historia

En la primera versión de la plataforma 1C:Enterprise 8, versión 8.0, los informes se generaban así:
  1. Una o más consultas se escribieron en el lenguaje de consulta 1C (lenguaje similar a SQL, más sobre esto a continuación).
  2. Se escribió un código que transfirió los resultados de las consultas ejecutadas a un documento o gráfico de hoja de cálculo. El código también podría realizar un trabajo que no se podía realizar en una consulta; por ejemplo, calculaba valores utilizando el lenguaje 1C integrado.
El enfoque es sencillo, pero no el más conveniente: hay configuraciones visuales mínimas, todo debe programarse "mano a mano". Y una de las ventajas de la plataforma completamente nueva “1C:Enterprise 8” en aquel momento era la minimización en la solución de la aplicación de la cantidad de código que debía escribirse manualmente, en particular mediante el diseño visual. Sería lógico seguir el mismo camino en el mecanismo de presentación de informes. Esto se hizo mediante el desarrollo de un nuevo mecanismo: el Sistema de Composición de Datos.

Una de las ideas que formó la base del sistema de control de acceso fue la flexibilidad y personalización de los informes, a los que podían acceder tanto el desarrollador como el usuario final. Idealmente, me gustaría brindarle al usuario final acceso al mismo conjunto de herramientas de diseño de informes que el desarrollador. Sería lógico crear un conjunto único de herramientas al alcance de todos. Pues bien, dado que las herramientas requieren la participación del usuario final, significa que el uso de programación en las mismas debe reducirse al mínimo (lo mejor es eliminarlo por completo), y aprovechar al máximo la configuración visual.

Formulación del problema

La tarea que tenía ante sí el equipo de desarrollo era crear un sistema de informes basado no en un enfoque algorítmico (es decir, mediante la escritura de código), sino declarativo para la creación de informes. Y creemos que el problema se ha solucionado con éxito. Según nuestra experiencia, alrededor del 80% de los informes requeridos se pueden implementar usando ACS sin una sola línea de código (excepto para escribir fórmulas para campos calculados), principalmente a través de configuraciones visuales.
El desarrollo de la primera versión de la SDS requirió aproximadamente cinco años-persona.

Dos idiomas

Hay dos idiomas involucrados en la creación de informes. Uno es un lenguaje de consulta utilizado para recuperar datos. El segundo es el lenguaje de expresión de composición de datos, destinado a escribir expresiones utilizadas en varias partes del sistema, por ejemplo, en la configuración de composición de datos, para describir expresiones de campos de usuario.

Lenguaje de consulta

El lenguaje de consulta se basa en SQL y es fácil de aprender para quienes tienen conocimientos de SQL. Solicitud de ejemplo:

Es fácil ver análogos de las secciones estándar para consultas SQL: SELECCIONAR, DESDE, AGRUPAR POR, ORDENAR POR.

Al mismo tiempo, el lenguaje de consulta contiene una cantidad significativa de extensiones destinadas a reflejar las características específicas de los problemas financieros y económicos y a maximizar la reducción de esfuerzos para desarrollar soluciones de aplicaciones:

  • Accediendo a los campos mediante un punto. Si los campos de una tabla son de tipo referencia (almacenan enlaces a objetos de otra tabla), el desarrollador puede hacer referencia a ellos en el texto de la solicitud mediante “.”, y el sistema no limita el número de niveles de anidamiento. de dichos enlaces (por ejemplo, Pedido del cliente. Acuerdo. Organización. Teléfono).
  • Formación de resultados multidimensional y multinivel. Los totales y subtotales se forman teniendo en cuenta la agrupación y la jerarquía, los niveles se pueden recorrer en cualquier orden mediante suma y se garantiza la construcción correcta de los totales según las dimensiones de tiempo.
  • Soporte para mesas virtuales. Las tablas virtuales proporcionadas por el sistema le permiten obtener datos casi listos para la mayoría de las tareas de la aplicación sin la necesidad de crear consultas complejas. Así, una tabla virtual puede proporcionar datos sobre los saldos de productos por períodos en un momento determinado. Al mismo tiempo, las tablas virtuales aprovechan al máximo la información almacenada, por ejemplo, totales previamente calculados, etc.
  • Tablas temporales. El lenguaje de consulta le permite utilizar tablas temporales en consultas. Con su ayuda, puede mejorar el rendimiento de las consultas, en algunos casos reducir la cantidad de bloqueos y hacer que el texto de la consulta sea más fácil de leer.
  • Solicitudes por lotes. Para que trabajar con tablas temporales sea más conveniente, el lenguaje de consulta admite el trabajo con consultas por lotes; por lo tanto, la creación de una tabla temporal y su uso se colocan en una sola consulta. Una solicitud por lotes es una secuencia de solicitudes separadas por punto y coma (";"). Las solicitudes del lote se ejecutan una tras otra. El resultado de ejecutar una solicitud por lotes, según el método utilizado, será el resultado devuelto por la última solicitud del lote o una serie de resultados de todas las consultas del lote en la secuencia en la que siguen las consultas del lote. .
  • Recuperar representaciones de campos de referencia. Cada tabla de objetos (en la que se almacena un libro de referencia o un documento) tiene un campo virtual: "Ver". Este campo contiene una representación textual del objeto y facilita el trabajo del creador del informe. Entonces, para un documento, este campo contiene toda la información clave: el nombre del tipo de documento, su número y fecha (por ejemplo, "Venta 000000003 del 06/07/2017 17:49:14"), lo que salva al desarrollador de escribiendo un campo calculado.
  • y etc.
El mecanismo de solicitud modifica automáticamente la solicitud teniendo en cuenta los roles a los que pertenece el usuario en cuyo nombre se ejecuta la solicitud (es decir, el usuario verá solo los datos que tiene derecho a ver) y las opciones funcionales (es decir, de acuerdo con los configurados en la funcionalidad de solución de la aplicación).

También existen extensiones de lenguaje de consulta especiales para sistemas de control de acceso. La expansión se lleva a cabo mediante instrucciones sintácticas especiales encerradas entre llaves y colocadas directamente en el cuerpo de la solicitud. Mediante extensiones, el desarrollador determina qué operaciones podrá realizar el usuario final al personalizar el informe.

Por ejemplo:

  • ELEGIR. Esta oración describe los campos que el usuario podrá seleccionar para la salida. Después de esta palabra clave, se enumeran los alias de los campos de la lista de selección de consultas principal que estarán disponibles para la configuración, separados por comas. Ejemplo: (SELECCIONAR Artículo, Almacén)
  • DÓNDE. Se describen los campos en los que el usuario puede aplicar la selección. Esta propuesta utiliza campos de tabla. No se permite el uso de alias de campos de lista de selección. Cada parte de la unión puede contener su propio elemento WHERE. Ejemplos: (DONDE Artículo.*, Almacén), (DONDE Documento.Fecha >= &FechaInicio, Documento.Fecha<= &ДатаКонца}
  • y etc.
Ejemplo de uso de extensiones:

Lenguaje de expresión de composición de datos

El lenguaje de expresión de composición de datos está diseñado para escribir expresiones utilizadas, en particular, para describir expresiones de campos personalizados. SKD le permite definir campos personalizados en un informe utilizando sus propias expresiones o conjuntos de opciones con condiciones para su selección (análogo a CASE en SQL). Los campos personalizados son similares a los campos calculados. Se pueden configurar tanto en el configurador como en el modo 1C:Enterprise, pero las funciones de los módulos comunes no se pueden utilizar en expresiones de campos personalizados. Por lo tanto, los campos personalizados están destinados al usuario y no al desarrollador.

Ejemplo:

El proceso de creación de un informe sobre el sistema de control de acceso.

Al crear un informe, necesitamos crear un diseño que defina cómo se mostrarán los datos en el informe. Puede crear un diseño basado en un diagrama de diseño de datos. Un diagrama de diseño de datos describe la esencia de los datos que se proporcionan al informe (de dónde obtener los datos y cómo se puede controlar su diseño). El esquema de composición de datos es la base sobre la cual se pueden generar todo tipo de informes. El esquema de composición de datos puede contener:
  • solicitar texto con instrucciones para el sistema de composición de datos;
  • descripción de múltiples conjuntos de datos;
  • descripción detallada de los campos disponibles;
  • describir relaciones entre múltiples conjuntos de datos;
  • descripción de parámetros de adquisición de datos;
  • descripción de diseños y agrupaciones de campos;
  • y etc.

Por ejemplo, puede agregar una consulta al esquema de composición de datos como un conjunto de datos y llamar al constructor de consultas, lo que le permite crear gráficamente una consulta de complejidad arbitraria:

El resultado de iniciar el diseñador de consultas será el texto de la consulta (en el lenguaje de consulta 1C:Enterprise). Este texto se puede ajustar manualmente si es necesario:

Puede haber varios conjuntos de datos en un esquema de diseño de datos, los conjuntos de datos se pueden vincular en el diseño de cualquier forma, se pueden agregar campos calculados, se pueden especificar parámetros de informe, etc. Vale la pena mencionar una característica interesante del mecanismo de consulta en 1C:Enterprise. En última instancia, las consultas se traducen a un dialecto de SQL específico del DBMS con el que opera directamente la aplicación. En general, intentamos aprovechar al máximo las capacidades de los servidores DBMS (estamos limitados por el hecho de que utilizamos solo aquellas capacidades que están disponibles simultáneamente en todos los DBMS compatibles con la plataforma 1C:Enterprise: MS SQL, Oracle, IBM DB2 , PostgreSQL). Así, a nivel de consulta en campos calculados, solo podemos utilizar aquellas funciones que estén traducidas a SQL.

Pero en el nivel del esquema de composición de datos, ya podemos agregar campos personalizados y usar funciones en ellos en el lenguaje de desarrollo integrado 1C (incluidos los escritos por nosotros), lo que amplía enormemente las capacidades de los informes. Técnicamente, se ve así: todo lo que se puede traducir a SQL se traduce a SQL, la consulta se ejecuta en el nivel DBMS, los resultados de la consulta se colocan en la memoria del servidor de aplicaciones 1C y el SKD calcula los valores para cada registro. ​​de campos calculados cuyas fórmulas están escritas en el lenguaje 1C.


Agregar campos personalizados

Puede agregar una cantidad arbitraria de tablas y gráficos al informe:


Diseñador de informes


Informe de tiempo de ejecución

Con SKD, el usuario puede agregar selecciones complejas al informe (que se agregarán a la solicitud en los lugares correctos), diseño condicional (permitiendo que los campos mostrados tengan un formato diferente: fuente, color, etc., según sus valores). ) y mucho más. .

El proceso de construcción y generación de un informe se puede describir brevemente de la siguiente manera:

  • El desarrollador en tiempo de diseño con la ayuda de un diseñador (o en tiempo de ejecución usando código) determina el esquema de diseño de datos:
    • Texto de la solicitud/solicitudes
    • Descripción de los campos calculados
    • Relaciones entre solicitudes (si hay varias)
    • Opciones de informe
    • Configuración por defecto
    • Etc.
  • La configuración anterior se guarda en el diseño.
  • El usuario abre el informe
    • Posiblemente realiza configuraciones adicionales (por ejemplo, cambia los valores de los parámetros)
    • Hace clic en el botón "Generar"
  • La configuración del usuario se aplica al esquema de composición de datos definido por el desarrollador.
  • Se forma un diseño de composición de datos intermedio que contiene instrucciones sobre dónde recibir datos. En particular, se ajustan las consultas especificadas en el diseño. Por lo tanto, los campos que no se utilizan en el informe se eliminan de la solicitud (esto se hace para minimizar la cantidad de datos recibidos). Todos los campos que participan en fórmulas de campos calculados se agregan a la consulta.
  • Entra en juego el procesador de composición de datos. El procesador de diseño ejecuta consultas, vincula conjuntos de datos, calcula valores para campos y recursos calculados y realiza agrupaciones. En una palabra, realiza todos los cálculos que no se realizaron a nivel de DBMS.
  • El procesador de salida de datos lanza una solicitud de ejecución y muestra los datos recibidos en un documento de hoja de cálculo, gráfico, etc.


El proceso de generación de un informe utilizando el mecanismo ACS.

Intentamos minimizar la cantidad de datos de informes transferidos desde el servidor a la aplicación cliente. Al mostrar datos en un documento de hoja de cálculo, al abrir un documento de hoja de cálculo, transferimos desde el servidor solo aquellas líneas que el usuario ve al principio del documento. A medida que el usuario avanza por las líneas del documento, los datos faltantes se descargan del servidor al cliente.

Ajustes personalizados

Todas las herramientas ACS están disponibles tanto para el desarrollador como para el usuario final. Pero la práctica ha demostrado que el usuario final a menudo se siente intimidado por la abundancia de capacidades de la herramienta. Además, en la mayoría de los casos, el usuario final no necesita toda la potencia de la configuración; basta con tener acceso rápido para configurar uno o dos parámetros del informe (por ejemplo, período y contraparte). A partir de una determinada versión de la plataforma, el desarrollador del informe tiene la oportunidad de marcar qué configuraciones del informe están disponibles para el usuario. Esto se hace usando la casilla de verificación "Incluir en la configuración del usuario". Además, la configuración del informe ahora tiene un indicador de "Modo de visualización", que toma uno de tres valores:
  • Acceso rápido. La configuración se mostrará directamente en la parte superior de la ventana del informe.
  • Común. La configuración estará disponible a través del botón "Configuración".
  • No disponible. La configuración no estará disponible para el usuario final.


Configuración del modo de visualización en tiempo de diseño


Mostrar la configuración en el modo de acceso rápido en tiempo de ejecución (bajo el botón Generar)

Planes de desarrollo

Una de nuestras áreas prioritarias en el desarrollo de sistemas de control de acceso es la simplificación de la configuración del usuario. Nuestra experiencia muestra que para algunos usuarios finales, trabajar con la configuración del usuario sigue siendo una tarea importante. Lo tomamos en cuenta y trabajamos en esta dirección. En consecuencia, también será más fácil para los desarrolladores trabajar con sistemas de control de acceso, porque Nosotros, como antes, queremos proporcionar una herramienta única para configurar informes tanto para el desarrollador como para el usuario final.

¡Buenos días, queridos lectores del blog! La última vez ya tocamos un tema que hablaba sobre el uso de la función. Y hoy, en el primero de esta serie de artículos, descubriremos ¿Para qué se utilizan los roles de campo de composición de datos? y también considere ejemplos de cómo desempeñar estos roles.

La función del campo ACS indica ¿Qué es este campo?. Cada rol de campo puede contener su propia propiedad. Por ejemplo, tiene un valor numérico y contiene el número del período si el campo es un período. Si el valor de la propiedad “Periodo” es 0 (cero), esto significa que este campo no es un punto. O la propiedad “Dimensión” – contiene una indicación de que el campo es una dimensión. Si el campo es una dimensión, entonces esta información se utiliza al calcular los totales de los campos de saldo.

Para cada campo del esquema de composición de datos, puede especificar una función. Roles afectar la exactitud de los cálculos del saldo. En particular, el saldo inicial y final según alguna tabla. Si en la consulta se selecciona la tabla virtual “Saldos y Facturaciones”, entonces los saldos inicial y final se calculan mediante un algoritmo complejo, especialmente si utilizamos diferenciales adicionales por período.

Pero si en las consultas todo esto funciona correctamente, basándose en un conjunto de campos de salida, entonces en la composición de datos las cosas van algo peor. Después de todo, no sabemos qué campos seleccionará realmente el usuario. Todo dependerá de la configuración de la versión de su informe, que podrá cambiar en cualquier momento. Por lo tanto, el sistema de composición de datos tiene su propio mecanismo para calcular los saldos de apertura y cierre para un determinado conjunto de datos, y para ello se utilizan roles en consecuencia. Abrámoslo y veamos que puede establecer roles para cada campo.

Agreguemos un conjunto de datos de consulta. Para hacer esto, necesitamos activar el elemento raíz "Query Builder". Pasemos a la mesa virtual “Saldos y Rotaciones” del registro de acumulación. ¿Qué vemos?

Como puede ver en la ilustración anterior, vemos que para algunos campos se ha completado el rol. Esto sucedió porque tenemos configurado el indicador Autocompletar. Pero esto no siempre es posible, por lo que a veces hay que introducir el rol manualmente. Veamos un par de ejemplos.

Supongamos que en una consulta que utilizamos, por ejemplo, utilizamos el operador de lenguaje de consulta “SELECT”. Describamos la siguiente condición:

SELECCIÓN CUANDO Producto RestanteRemainingsAndTurnover.Nomenclature = Valor(Directorio.Nomenclatura.EmptyLink) ENTONCES Valor(Directorio.Nomenclatura.Shampoo) OTRO Producto RestanteRemainingAndTurnover.Nomenclatura FINAL

Esta entrada significa que si el elemento corresponde a un enlace vacío (nos referimos al directorio de valores de la función “Nomenclatura”, enlace vacío), entonces se devolverá el valor del elemento predefinido. Supongamos que en nuestra configuración existe dicho elemento predefinido y se llama “Champú”. De lo contrario, devolvemos el valor del artículo en sí. Obtenemos lo siguiente:

Como puede ver, el rol no fue completado para el campo "Nomenclatura". Pero como puedes ver en la imagen, en realidad no tenemos un rol ingresado para el campo “Campo1”, y en este caso el resto no se calculará correctamente.

Hay otros ejemplos en los que el rol no se puede asignar de forma independiente. Por ejemplo, este es el uso de , es decir, una determinada tabla de valores se proporciona como entrada, digamos, cargada desde otra base de datos, y los saldos deben calcularse a partir de ella. En este caso, debemos asignarnos roles nosotros mismos. Veremos cómo se hace esto en.

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.

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 " 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 en 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 terminó 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.



¿Te gustó el artículo? Compártelo