Hogar / Misceláneas / Parámetro estándar &Período y problemas de uso. Parámetro estándar y período y problemas al usar los parámetros de la tabla virtual 1c

Parámetro estándar &Período y problemas de uso. Parámetro estándar y período y problemas al usar los parámetros de la tabla virtual 1c

El artículo describe la implementación física. mesa virtual restos de la configuración que opera en modo cliente-servidor usando el ejemplo del uso del DBMS de MS SQL Server.

Aplicabilidad

El artículo analiza la plataforma 1C:Enterprise versión 8.3.5.1383. En la versión actual de la plataforma, son posibles algunos cambios en el texto descrito en el material, consultas T-SQL, ejecutado en el lado del servidor DBMS.

Dispositivo de una mesa de saldos virtual.

Consideremos en qué tipo de consulta DBMS se transforma utilizando una tabla virtual de saldos de registros de acumulación. Por ejemplo, se considerará el siguiente texto de solicitud:

ELEGIR
Restos del inventario de productos básicos.Producto,
Restos del inventario de productos básicos.Almacén,
Inventario de productos básicos restante. Cantidad restante
DE
RegistrarAcumulaciones.Inventarios.Restos(&Fecha, Almacén = &Almacén) CÓMO
Restos de inventarios de productos básicos

Primero, usando el método de contexto global. Obtener estructura de almacenamiento de base de datos() obtenemos una lista de tablas de la base de datos en las que se almacenan los datos del registro de acumulación "Inventarios de productos básicos":

La composición de los campos de la tabla principal del registro de acumulación y de la tabla de totales se muestra a continuación:

El almacenamiento de los totales para este registro se configura en el modo “1C:Enterprise 8” de la siguiente manera:

Completemos los parámetros en la solicitud en cuestión de la siguiente manera:


La plataforma convierte el texto de la solicitud en la siguiente solicitud, que se ejecutará en el servidor DBMS:

SELECCIONAR
Q_000_T_001.Fld82,
Q_000_T_001.Fld83,
Q_000_T_001.Fld84Saldo
DE
(SELECCIONE Fld82,
fld83,

DE
(SELECCIONE Fld82,
fld83,
SUMA (Fld84) COMO Fld84Balance
DE AccumRgT85
DONDE Período = FECHA HORA (3999, 11, 1)
Y ((Fld83 = ))
Y(Fld84<>0 ) Y (Fld84<> 0 )
GRUPO POR Fld82, Fld83
TENER Fld84Balance<> 0
UNIÓN TODOS
SELECCIONE Fld82,
fld83,
SUMA (CASO CUANDO RecordKind = 0 ENTONCES – Fld84 ELSE Fld84 END) COMO Fld84Balance
DE AccumRg81
DONDE Período >= FECHA HORA (2012, 9, 1)
Y Periodo< DATETIME (3999 , 11 , 1 )
Y Activo
Y ((Fld83 = 9:))
GRUPO POR Fld82, Fld83
TENER Fld84Balance<>0 ) T
GRUPO POR Fld82, Fld83
TENER Fld84Balance<>0 ) Q_000_T_001

Examinemos con más detalle la solicitud recibida.

Primero, la primera consulta de la combinación selecciona datos de la tabla AccumRgT85 resultante. Los totales se obtienen en la fecha de almacenamiento de los totales actuales (11.01.3999), se aplica una condición adicional al campo Almacén (ya que dicha condición se utilizó en los parámetros de la tabla virtual). Además, se realiza una verificación para garantizar que el resultado no contenga filas con restos cero.

Tenga en cuenta que la agrupación se realiza según las dimensiones seleccionadas en el texto de la solicitud. Por eso no es necesario agrupar adicionalmente por dimensiones el texto en el lenguaje de consulta de 1C:Enterprise.

La segunda consulta de unión utiliza la tabla de movimiento de registros AccumRg81. Dependiendo del tipo de movimiento (si RecordKind es 0, entonces es Ingreso, en caso contrario es Gasto), se inserta un signo en la expresión. La plataforma selecciona datos para el período desde la fecha especificada como parámetro de la tabla virtual hasta la fecha de almacenamiento de los totales actuales (01/11/3999).

Además, solo se seleccionan los registros activos; el campo Almacén debe ser igual al valor especificado. Al igual que con la primera consulta de unión, esto también agrupa por dimensiones seleccionadas y descarta registros con valores de recursos cero.

Si se utiliza el DBMS de MS SQL Server y el desplazamiento de fecha se establece en 2000 para la base de datos, todas las fechas se almacenarán con el desplazamiento especificado, es decir, en lugar de 01.11.3999 verá 01.11.5999.

Si desactiva los totales actuales para el registro de acumulación, la plataforma recibirá primero los últimos totales calculados en una fecha anterior a la especificada en el parámetro Período de la tabla virtual.

Luego, de manera similar, estos datos se complementarán con la tabla de movimientos, pero solo para el período comprendido entre la fecha de los últimos resultados y el período de la tabla virtual.

SELECCIONAR
Q_000_T_001.Fld82,
Q_000_T_001.Fld83,
Q_000_T_001.Fld84Saldo
DE
(SELECCIONE Fld82,
fld83,
SUMA (Fld84Balance) COMO Fld84Balance
DE
(SELECCIONE Fld82,
fld83,
SUMA (Fld84) COMO Fld84Balance
DE AccumRgT85
DONDE Período = FECHA HORA (2012, 4, 1)
Y ((Fld83 = 9:))
Y(Fld84<> 0 )
Y(Fld84<> 0 )
GRUPO POR Fld82, Fld83
TENER Fld84Balance<> 0
UNIÓN TODOS
SELECCIONE Fld82,
fld83,
SUMA (CASO CUANDO RecordKind = 0 ENTONCES Fld84 ELSE – Fld84 END) COMO Fld84Balance
DE AccumRg81
DONDE Período >= FECHA HORA (2012, 4, 1)
Y Periodo< DATETIME (2012 , 9 , 1 )
Y Activo
Y ((Fld83 = 9:))
GRUPO POR Fld82, Fld83
TENER Fld84Balance<>0 ) T
GRUPO POR Fld82, Fld83
TENER Fld84Balance<>0 ) Q_000_T_001

Tenga en cuenta la siguiente condición en el cuerpo de la solicitud.

El lenguaje de consulta en 1C 8 es un análogo simplificado del conocido "lenguaje de programación estructurado" (como se le llama más a menudo SQL). Pero en 1C se usa solo para leer datos; se usa para cambiar datos; modelo de objeto datos.

Otra diferencia interesante es la sintaxis rusa. Aunque en realidad puedes utilizar construcciones en inglés.

Solicitud de ejemplo:

ELEGIR
Bancos.Nombre,
Bancos.CorrAccount
DE
Directorio.Bancos CÓMO Bancos

Esta solicitud nos permitirá ver información sobre el nombre y cuenta corresponsal de todos los bancos existentes en la base de datos.

El lenguaje de consulta es el más simple y manera efectiva obtención de información. Como puede verse en el ejemplo anterior, en el lenguaje de consulta es necesario utilizar nombres de metadatos (esta es una lista de objetos del sistema que componen la configuración, es decir, directorios, documentos, registros, etc.).

Descripción de las construcciones del lenguaje de consulta.

Estructura de consulta

Para obtener datos, basta con utilizar las construcciones "SELECT" y "FROM". La solicitud más simple se ve así:

SELECCIONAR * DE Directorios.Nomenclatura

Donde "*" significa seleccionar todos los campos de la tabla y Directorios.Nomenclatura: el nombre de la tabla en la base de datos.

Veamos un ejemplo más complejo y general:

ELEGIR
<ИмяПоля1>CÓMO<ПредставлениеПоля1>,
Suma(<ИмяПоля2>) CÓMO<ПредставлениеПоля2>
DE
<ИмяТаблицы1>CÓMO<ПредставлениеТаблицы1>
<ТипСоединения>COMPUESTO<ИмяТаблицы2>CÓMO<ПредставлениеТаблицы2>
POR<УсловиеСоединениеТаблиц>

DÓNDE
<УсловиеОтбораДанных>

Agrupar por
<ИмяПоля1>

ORDENAR POR
<ИмяПоля1>

RESULTADOS
<ИмяПоля2>
POR
<ИмяПоля1>

En esta consulta, seleccionamos los datos de los campos “FieldName1” y “FieldName1” de las tablas “TableName1” y “TableName”, asignamos sinónimos a los campos usando el operador “HOW” y los conectamos según una determinada condición “ Condición de conexión de tabla”.

De los datos recibidos, seleccionamos solo los datos que cumplen con la condición de "DÓNDE" "Condición de selección de datos". A continuación, agrupamos la solicitud por el campo "Nombre de campo1", mientras sumamos "Nombre de campo2". “Nombre de campo1” y el campo final “Nombre de campo2”.

El último paso es ordenar la solicitud utilizando la construcción ORDER BY.

Diseños generales

Consideremos las estructuras generales del lenguaje de consulta 1C 8.2.

PRIMEROnorte

Al usar de este operador puede obtener n número de primeros registros. El orden de los registros está determinado por el orden en la consulta.

SELECCIONA LOS PRIMEROS 100
Bancos.Nombre,
Bancos Código AS BIC
DE
Directorio.Bancos CÓMO Bancos
ORDEN POR
Bancos.Nombre

La solicitud recibirá las primeras 100 entradas del directorio “Bancos”, ordenadas alfabéticamente.

PERMITIDO

Este diseño es relevante para trabajar con el mecanismo. La esencia del mecanismo es restringir la lectura (y otras acciones) a los usuarios de registros específicos en una tabla de base de datos, y no de la tabla en su conjunto.

Si un usuario intenta utilizar una consulta para leer registros que no están disponibles para él, recibirá un mensaje de error. Para evitar esto, debe utilizar la construcción "PERMITIDO", es decir, la solicitud leerá solo los registros permitidos.

SELECCIONAR PERMITIDO
Repositorio de Información Adicional.
DE
Directorio.Repositorio de Información Adicional

VARIOS

El uso de "DIFERENTE" evitará que líneas duplicadas ingresen al resultado de la consulta 1C. La duplicación significa que todos los campos de la solicitud coinciden.

SELECCIONA LOS PRIMEROS 100
Bancos.Nombre,
Bancos Código AS BIC
DE
Directorio.Bancos CÓMO Bancos

Tabla Vacía

Esta construcción rara vez se utiliza para combinar consultas. Al unirse, es posible que deba especificar una tabla anidada vacía en una de las tablas. El operador "EmptyTable" es perfecto para esto.

Ejemplo de ayuda de 1C 8:

SELECCIONE Enlace.Número, TABLA VACÍA.(Nº, Artículo, Cantidad) COMO Composición
DESDE Documento.Factura de Gastos
COMBINA TODO
SELECCIONAR Enlace.Número, Contenido.(Número de Línea, Producto, Cantidad)
DESDE Documento.Factura Documento.Factura.Composición.*

ES NULL

Una característica muy útil que te permite evitar muchos errores. Hay NULL() que te permite reemplazar valor NULO a lo que se necesita. Se utiliza muy a menudo para comprobar la presencia de un valor en tablas unidas, por ejemplo:

ELEGIR
Enlace de referencia de nomenclatura,
IsNULL(Artículo restante.Cantidad restante,0) COMO Cantidad restante
DE


Se puede utilizar de otras maneras. Por ejemplo, si para cada fila no se sabe en qué tabla existe el valor:

ISNULL(Fecha de recepción de factura, Fecha de emisión de factura)

CÓMO es un operador que nos permite asignar un nombre (sinónimo) a una tabla o campo. Vimos un ejemplo de uso arriba.

Estas construcciones son muy similares: le permiten obtener una representación en cadena del valor deseado. La única diferencia es que REPRESENTATION convierte cualquier valor a un tipo de cadena, mientras que REPRESENTATIONREF convierte solo valores de referencia. Se recomienda utilizar la REPRESENTACIÓN DE REFERENCIA en consultas del sistema de composición de datos para optimización, a menos, por supuesto, que se planee utilizar el campo de datos de referencia en las selecciones.

ELEGIR
Ver(Enlace), //cadena, por ejemplo “Informe anticipado No. 123 del 10/10/2015
Ver(DeletionMark) AS DeleteMarkText, //cadena, “Sí” o “No”
ViewReferences(DeletionMark) AS DeleteMarkBoolean //booleano, Verdadero o Falso
DE
Documento.Informe Anticipado

EXPRESAR

Express le permite convertir valores de campo al tipo de datos deseado. Puede convertir un valor a un tipo primitivo o a un tipo de referencia.

Express para un tipo de referencia se utiliza para restringir los tipos de datos solicitados en campos de un tipo complejo, a menudo utilizado para optimizar el rendimiento del sistema. Ejemplo:

EXPRESS (Tabla de Costos. Subconto1 Directorio AS. Rubros de Costos Tipo de Actividad para Contabilización Fiscal de Costos).

Para tipos primitivos, esta función se usa a menudo para limitar la cantidad de caracteres en campos de longitud ilimitada (dichos campos no se pueden comparar con). Para evitar el error " Parámetros no válidos en la operación de comparación. No puedes comparar campos
longitud ilimitada y campos de tipos incompatibles
", debe expresar dichos campos de la siguiente manera:

EXPRESS(Comentario AS Line(150))

DIFERENCIAFECHA

Obtenga 267 lecciones en video sobre 1C gratis:

Un ejemplo de uso de IS NULL en una solicitud 1C:

SELECCIONAR * DE
Árbitro
CONEXIÓN IZQUIERDA RegistrarAcumulaciones.ProductosEnAlmacén.Restante COMO Producto Restante
Nomenclatura de softwareRef.Link = Productos vendidosComitésRemains.Nomenclature
DONDE NO los bienes restantes. La cantidad restante es nula.

El tipo de datos en una consulta se puede determinar usando las funciones TYPE() y VALUETYPE(), o usando el operador lógico REFERENCIA. Las dos funciones son similares.

Valores predefinidos

Además de utilizar parámetros pasados ​​en consultas en el lenguaje de consulta 1C, puede utilizar valores predefinidos o . Por ejemplo, transferencias, directorios predefinidos, planes de cuentas, etc. Para ello, se utiliza la construcción "Valor()".

Ejemplo de uso:

DONDE Nomenclatura.Tipo de Nomenclatura = Valor(Directorio.Tipos de Nomenclatura.Producto)

DONDE Contrapartes.Tipo de Información de Contacto = Valor(Enumeración.Tipos de Información de Contacto.Teléfono)

DONDE Saldos de cuentas. Cuenta contable = Valor (Plan de cuentas. Ganancias. Pérdidas de ganancias)

Conexiones

Hay 4 tipos de conexiones: IZQUIERDA, BIEN, COMPLETO, INTERNO.

CONEXIÓN IZQUIERDA y DERECHA

Las uniones se utilizan para vincular dos tablas según una condición específica. Característica cuando UNIRSE A LA IZQUIERDA es que tomamos la primera tabla especificada en su totalidad y vinculamos condicionalmente la segunda tabla. Los campos de la segunda tabla que no pudieron estar vinculados por condición se completan con el valor NULO.

Por ejemplo:

Devolverá la tabla completa de Contrapartes y completará el campo “Banco” solo en aquellos lugares donde se cumpla la condición “Contrapartes.Nombre = Bancos.Nombre”. Si no se cumple la condición, el campo Banco se establecerá en NULO.

ÚNETE DERECHO en lenguaje 1C absolutamente similar conexión IZQUIERDA, con la excepción de una diferencia: en DERECHO DE CONEXIÓN La tabla "principal" es la segunda, no la primera.

CONEXIÓN COMPLETA

CONEXIÓN COMPLETA se diferencia de izquierda y derecha en que muestra todos los registros de dos tablas y conecta solo aquellos que puede conectar por condición.

Por ejemplo:

DE

CONEXIÓN COMPLETA
Directorio.Bancos CÓMO Bancos

POR

El lenguaje de consulta devolverá ambas tablas completamente solo si se cumple la condición para unir los registros. A diferencia de una unión izquierda/derecha, es posible que NULL aparezca en dos campos.

UNIÓN INTERNA

UNIÓN INTERNA se diferencia del completo en que muestra solo aquellos registros que podrían conectarse según una condición determinada.

Por ejemplo:

DE
Directorio de Contrapartes AS Clientes.

UNIÓN INTERNA
Directorio.Bancos CÓMO Bancos

POR
Clientes.Nombre = Bancos.Nombre

Esta consulta devolverá sólo filas en las que el banco y la contraparte tengan el mismo nombre.

Asociaciones

Las construcciones JOIN y JOIN ALL combinan dos resultados en uno. Aquellos. el resultado de realizar dos se “fusionará” en uno común.

Es decir, el sistema funciona exactamente igual que los normales, solo que para una tabla temporal.

Cómo utilizar ÍNDICE POR

Sin embargo, conviene tener en cuenta un punto. La creación de un índice en una tabla temporal también lleva tiempo. Por lo tanto, es aconsejable utilizar la construcción " " sólo si se sabe con certeza que habrá más de 1 o 2 registros en la tabla temporal. De lo contrario, el efecto puede ser el contrario: el rendimiento de los campos indexados no compensa el tiempo necesario para crear el índice.

ELEGIR
Tipos de cambio Última sección transversal Moneda AS Moneda,
Tipos de cambio Última sección transversal.
Tipos de cambio PUT
DE
Registro de información.Tipos de moneda.Último segmento (y período) AS Tipos de cambioÚltimo segmento
ÍNDICE POR
Divisa
;
ELEGIR
PreciosNomenclatura.Nomenclatura,
PreciosNomenclaturas.Precio,
PreciosNomenclaturas.Moneda,
Tipos de cambio.Tasa
DE
Registro de información.Nomenclatura Precios.Último tramo(&Período,
Nomenclatura B (&Nomenclatura) AND PriceType = &PriceType) AS PriceNomenclature
LEFT JOIN Tipos de cambio AS Tipos de cambio
Precios de softwareNomenclaturas.Moneda = Tipos de cambio.Moneda

Agrupamiento

El lenguaje de consulta 1C le permite utilizar funciones agregadas especiales al agrupar los resultados de la consulta. La agrupación también se puede utilizar sin funciones agregadas para "eliminar" duplicados.

Existen las siguientes funciones:

Importe, Cantidad, Número de diferentes, Máximo, Mínimo, Promedio.

Ejemplo #1:

ELEGIR
Ventas de Bienes y Servicios Nomenclatura,
SUMA(Ventas de BienesServiciosBienes.Cantidad) COMO Cantidad,
SUMA(Ventas de BienesServiciosBienes.Monto) COMO Monto
DE

Agrupar por
Ventas de Bienes y Servicios Nomenclatura.

La consulta recibe todas las líneas con bienes y las resume por cantidad y montos por artículo.

Ejemplo No. 2

ELEGIR
Código.de.bancos,
CANTIDAD (DIFERENTES Bancos.Enlace) COMO Número de duplicados
DE
Directorio.Bancos CÓMO Bancos
Agrupar por
Código.de.bancos

Este ejemplo mostrará una lista de BIC en el directorio "Bancos" y mostrará cuántos duplicados existen para cada uno de ellos.

Resultados

Los resultados son una forma de obtener datos de un sistema con una estructura jerárquica. Las funciones agregadas se pueden utilizar para campos de resumen, al igual que para agrupaciones.

Una de las formas más populares de utilizar los resultados en la práctica es la cancelación de bienes por lotes.

ELEGIR




DE
Documento de Venta de Bienes y Servicios. Bienes CÓMO Venta de Bienes y Servicios.
ORDEN POR

RESULTADOS
SUMA(Cantidad),
SUMA(Suma)
POR
Nomenclatura

El resultado de la consulta será el siguiente jerárquico:

Resultados generales

Si necesita obtener totales para todos los "totales", utilice el operador "GENERAL".

ELEGIR
Ventas de Bienes y Servicios Nomenclatura AS Nomenclatura,
Ventas de Bienes y Servicios Bienes Enlace AS Documento,
Ventas de Bienes y Servicios Bienes Cantidad AS Cantidad,
Ventas de Bienes y Servicios Bienes Importe AS Importe.
DE
Documento de Venta de Bienes y Servicios. Bienes CÓMO Venta de Bienes y Servicios.
ORDEN POR
Ventas de Bienes y Servicios Fecha Enlace.
RESULTADOS
SUMA(Cantidad),
SUMA(Suma)
POR
GENERAL,
Nomenclatura

Como resultado de ejecutar la solicitud, obtenemos el siguiente resultado:

En el cual 1 nivel de agrupación es la agregación de todos los campos necesarios.

arreglando

El operador ORDER BY se utiliza para ordenar el resultado de una consulta.

La clasificación por tipos primitivos (cadena, número, booleano) sigue las reglas habituales. Para los campos de tipo de referencia, la clasificación se realiza según la representación interna del enlace (el identificador único), en lugar de por código o representación de referencia.

ELEGIR

DE
Directorio.Nomenclatura AS Nomenclatura
ORDEN POR
Nombre

La solicitud mostrará una lista de nombres en el directorio de nomenclatura, ordenados alfabéticamente.

Pedido automático

El resultado de una consulta sin ordenar es un conjunto de filas presentadas de forma caótica. Los desarrolladores de la plataforma 1C no garantizan que las filas se muestren en la misma secuencia al ejecutar consultas idénticas.

Si necesita mostrar los registros de la tabla en un orden constante, debe utilizar la construcción Orden automático.

ELEGIR
Nomenclatura.Nombre AS Nombre
DE
Directorio.Nomenclatura AS Nomenclatura
PEDIDO AUTOMÁTICO

Mesas virtuales

Las tablas virtuales en 1C son una característica única del lenguaje de consulta 1C que no se encuentra en otras sintaxis similares. Una mesa virtual es una forma rápida de obtener información de perfil de los registros.

Cada tipo de registro tiene su propio conjunto de tablas virtuales, que pueden diferir según la configuración del registro.

  • corte del primero;
  • corte de este último.
  • sobras;
  • revoluciones;
  • saldos y facturación.
  • movimientos desde subconto;
  • revoluciones;
  • velocidad Dt Kt;
  • sobras;
  • saldos y facturación
  • subconto.
  • base;
  • datos gráficos;
  • período de validez real.

Para el desarrollador de la solución, los datos se toman de una tabla (virtual), pero en realidad la plataforma 1C toma de muchas tablas y las transforma al formato requerido.

ELEGIR
Productos en Almacenes Restos y Rotación.
Productos en almacenes restantes y volumen de negocios. Cantidad inicial restante,
ProductosEnAlmacenesRemainsAndTurnover.CantidadRotación,
GoodsInWarehousesRemainsAndTurnover.CantidadEntrante,
Productos En Almacenes Restos Y Facturación.CantidadConsumo,
ProductosEnAlmacenesRestantesYFacturación.CantidadFinalRestante
DE
RegistrarAcumulaciones.BienesEnAlmacén.RemainsAndTurnover COMO BienesEnAlmacénRemainsAndTurnover

Esta consulta le permite recuperar rápidamente una gran cantidad de datos.

Opciones de mesa virtual

Un aspecto muy importante al trabajar con tablas virtuales es el uso de parámetros. Los parámetros de la tabla virtual son parámetros especializados para selección y configuración.

Para este tipo de tablas, se considera incorrecto utilizar la selección en la construcción "DÓNDE". Además del hecho de que la consulta no es óptima, es posible recibir datos incorrectos.

Un ejemplo de uso de estos parámetros:

Registro de Acumulaciones de Mercancías en Almacenes y Rotaciones (& Inicio del Período, & Fin del Período, Mes, Movimientos y Fronteras del Período, Nomenclatura = & Nomenclatura Requerida).

Algoritmo para tablas virtuales

Por ejemplo, la tabla virtual más utilizada del tipo “Restos” almacena datos de dos tablas físicas: saldos y movimientos.

Cuando se utiliza una mesa virtual, el sistema realiza las siguientes manipulaciones:

  1. Obtenemos el valor calculado más cercano en términos de fecha y medidas en la tabla de totales.
  2. “Sumamos” el importe de la tabla de movimientos al importe de la tabla de totales.


Semejante pasos simples puede mejorar significativamente el rendimiento del sistema en su conjunto.

Usando el generador de consultas

Generador de consultas– una herramienta integrada en el sistema 1C Enterprise que facilita enormemente el desarrollo de consultas de bases de datos.

El generador de consultas tiene una interfaz bastante sencilla e intuitiva. Sin embargo, veamos con más detalle el uso del constructor de consultas.

El constructor de texto de consulta se inicia desde el menú contextual (botón derecho del mouse) en el lugar deseado en el código del programa.

Descripción del constructor de solicitudes 1C

Veamos cada pestaña del diseñador con más detalle. La excepción es la pestaña Constructor, que es un tema para otra discusión.

Pestaña Tablas y campos

Esta pestaña especifica la fuente de datos y los campos que deben mostrarse en el informe. En esencia, aquí se describen las construcciones SELECT.. FROM.

La fuente puede ser una tabla de base de datos física, una tabla de registro virtual, tablas temporales, consultas anidadas, etc.

En el menú contextual de las tablas virtuales, puede configurar los parámetros de la tabla virtual:

Pestaña de conexiones

La pestaña se utiliza para describir conexiones de varias tablas y crea construcciones con la palabra CONEXIÓN.

Pestaña de agrupación

En esta pestaña, el sistema le permite agrupar y resumir los campos requeridos del resultado de la tabla. Describe el uso de las construcciones GRUPO POR, SUMA, MÍNIMO, PROMEDIO, MÁXIMO, CANTIDAD, NÚMERO DE DIFERENTES.

Pestaña de condiciones

Responsable de todo lo que viene en el texto de la solicitud después de la construcción WHERE, es decir, de todas las condiciones impuestas a los datos recibidos.

Pestaña avanzada

Pestaña Además repleto de todo tipo de parámetros que son muy importantes. Veamos cada una de las propiedades.

Agrupamiento Seleccionar registros:

  • Primera N– un parámetro que devuelve solo N registros a la consulta (el PRIMER operador)
  • Sin duplicados– asegura la unicidad de los registros recibidos (operador DIFERENTE)
  • Permitido– le permite seleccionar solo aquellos registros que el sistema le permite seleccionar teniendo en cuenta (construcción PERMITIDA)

Agrupamiento Tipo de solicitud determina qué tipo de consulta será: recuperar datos, crear una tabla temporal o destruir una tabla temporal.

Debajo hay una bandera Bloquear los datos recibidos para su posterior modificación. Le permite habilitar la capacidad de configurar el bloqueo de datos, lo que garantiza la seguridad de los datos desde el momento en que se leen hasta que se modifican (relevante solo para Modo automático enclavamientos, diseño A CAMBIAR).

Ficha Uniones/Alias

En esta pestaña del diseñador de consultas, puede configurar la capacidad de unir diferentes tablas y alias (la construcción CÓMO). Las tablas están indicadas en el lado izquierdo. Si configura las banderas frente a la mesa, se utilizará la construcción UNITE; de lo contrario, UNITE ALL (diferencias entre los dos métodos). En el lado derecho se indica la correspondencia de campos en diferentes tablas; si no se especifica la correspondencia, la consulta devolverá NULL.

Pestaña de pedido

Esto especifica el orden en que se ordenan los valores (ORDER BY): descendente (DESC) o ascendente (ASC).

También hay una bandera interesante: Pedido automático(en la solicitud - PEDIDO AUTOMÁTICO). De forma predeterminada, el sistema 1C muestra los datos en un orden "caótico". Si configura esta bandera, el sistema ordenará los datos por datos internos.

Pestaña Consultar lote

En la pestaña del diseñador de consultas, puede crear otras nuevas y también utilizarlas como navegación. En el texto de la solicitud, los paquetes están separados por el símbolo ";" (coma).

Botón “Consulta” en el diseñador de consultas

En la esquina inferior izquierda del diseñador de solicitudes hay un botón Solicitar, con el que puede ver el texto de la solicitud en cualquier momento:

En esta ventana, puede realizar ajustes a la solicitud y ejecutarla.


Usando la consola de consultas

Query Console es una forma sencilla y cómoda de depurar consultas complejas y obtener información rápidamente. En este artículo, intentaré describir cómo usar Query Console y proporcionaré un enlace para descargar Query Console.

Echemos un vistazo más de cerca a esta herramienta.

Descargar la consola de consultas 1C

En primer lugar, para comenzar a trabajar con la consola de consulta, debe descargarla desde algún lugar. Los tratamientos generalmente se dividen en dos tipos: formas controladas y regular (o a veces llamado 8.1 y 8.2/8.3).

Intenté combinar estas dos vistas en un solo procesamiento: el formulario deseado se abre en el modo operativo deseado (en el modo administrado, la consola solo funciona en modo grueso).

Descripción de la consola de consulta 1C

Comencemos mirando la consola de consultas con una descripción del panel de procesamiento principal:

En el encabezado de la consola de consultas, puede ver el tiempo de ejecución de la última consulta con una precisión de milisegundos, esto le permite comparar diferentes diseños en términos de rendimiento.

El primer grupo de botones en la barra de comandos es responsable de guardar las consultas actuales en un archivo externo. Esto es muy conveniente; siempre puedes volver a escribir una solicitud compleja. O, por ejemplo, almacenar una lista de ejemplos típicos de determinados diseños.

A la izquierda, en el campo "Solicitud", puede crear nuevas solicitudes y guardarlas en una estructura de árbol. El segundo grupo de botones se encarga de gestionar la lista de solicitudes. Utilizándolo puede crear, copiar, eliminar y mover una solicitud.

  • Ejecutarpedido– ejecución y resultados simples
  • Ejecutar paquete– le permite ver todas las consultas intermedias en un lote de consultas
  • Ver tablas temporales– le permite ver los resultados que devuelven las consultas temporales en una tabla

Parámetros de solicitud:

Le permite configurar los parámetros actuales para la solicitud.

En la ventana de parámetros de consulta, es interesante lo siguiente:

  • Botón Obtener de la solicitud encuentra automáticamente todos los parámetros en la solicitud para comodidad del desarrollador.
  • Bandera Parámetros comunes para todas las solicitudes.– cuando está instalado, su procesamiento no borra los parámetros al pasar de una solicitud a otra en la lista general de solicitudes.

Establecer un parámetro con una lista de valores Es muy simple, simplemente al elegir un valor de parámetro, haga clic en el botón borrar valor (cruz), el sistema le pedirá que seleccione el tipo de datos, donde deberá seleccionar “Lista de valores”:

También en el panel superior hay un botón para abrir la configuración de la consola de consulta:

Aquí puede especificar parámetros para consultas de guardado automático y parámetros de ejecución de consultas.

El texto de la solicitud se ingresa en el campo de solicitud de la consola. Esto se puede hacer simplemente escribiendo una prueba de consulta o llamando a una herramienta especial: el diseñador de consultas.

El constructor de solicitudes 1C 8 se llama desde menú contextual(botón derecho del mouse) al hacer clic en el campo de entrada:

También en este menú hay tales características útiles, como borrar o agregar saltos de línea (“|”) a la solicitud, u obtener el código de solicitud en esta cómoda forma:

Solicitud = Nueva Solicitud;
Solicitud.Texto = "
|SELECCIONAR
| Monedas.Enlace
|DESDE
| Directorio.Monedas AS Monedas”;
SolicitudResultado = Solicitud.Execute();

El campo inferior de la consola de consultas muestra el campo de resultado de la consulta, razón por la cual se creó este procesamiento:



Además, la consola de consultas, además de la lista, puede mostrar datos en forma de árbol, para consultas que contienen totales.

Optimización de consultas

Uno de los puntos más importantes para aumentar la productividad de 1C Enterprise 8.3 es mejoramientosolicitudes. Este punto también es muy importante cuando pasando la certificación. A continuación hablaremos de los motivos típicos por los que no rendimiento óptimo consultas y métodos de optimización.

Selecciones en una tabla virtual usando la construcción WHERE

Es necesario aplicar filtros a los detalles de la tabla virtual solo a través de los parámetros VT. Bajo ninguna circunstancia debe utilizar la construcción WHERE para seleccionar en una tabla virtual, esto es un grave error desde el punto de vista de la optimización. En el caso de seleccionar mediante DÓNDE, de hecho, el sistema recibirá TODOS los registros y solo entonces seleccionará los necesarios.

BIEN:

ELEGIR

DE
Registro de Acumulaciones Mutuas con Participantes de Saldos (.
,
Organización = &Organización
Y Individual = &Individual) CÓMO Liquidaciones mutuas con Participantes de Organizaciones Saldos

EQUIVOCADO:

ELEGIR
Liquidaciones mutuas con Participantes de Saldos de Organizaciones Monto Saldo.
DE
Registro de Acumulaciones Mutuas con Participantes de Organizaciones Saldos (,) CÓMO Mutuas liquidaciones con Participantes de Organizaciones Saldos.
DÓNDE
Liquidaciones mutuas con Participantes de Organizaciones Saldos Organización = & Organización.
Y Liquidaciones mutuas con Participantes de Organizaciones Saldos Individual = &Individual.

Obtener el valor de un campo de tipo complejo usando un punto

Al recibir datos de tipo complejo en una consulta a través de un punto, el sistema conecta con una unión izquierda exactamente tantas tablas como tipos posibles haya en el campo del tipo complejo.

Por ejemplo, es muy indeseable para la optimización acceder al campo de registro: registrador. El registrador tiene un tipo de datos compuesto, entre los que se encuentran todos los tipos de documentos posibles que pueden escribir datos en el registro.

EQUIVOCADO:

ELEGIR
Conjunto de registros.Grabador.Fecha,
RecordSet.Cantidad
DE
RegistrarAcumulaciones.ProductosOrganizaciones AS SetRecords

Es decir, de hecho, dicha consulta accederá no a una tabla, sino a 22 tablas de bases de datos (este registro tiene 21 tipos de registradores).

BIEN:

ELEGIR
ELECCIÓN
CUANDO ProductosOrg.Registrar LINK Documento.Ventas de Productos y Servicios
ENTONCES EXPRESS(ProductsOrg.Registrar AS Document.Ventas de BienesServicios).Fecha
CUANDO GoodsOrg.Registrar LINK Documento.Recepción de BienesServicios
ENTONCES EXPRESS(GoodsOrg.Registrar AS Documento.Recepción de BienesServicios).Fecha
FINALIZAR COMO FECHA,
ProductosOrg.Cantidad
DE
RegistroAcumulaciones.ProductosOrganizaciones AS ProductosOrganización

O la segunda opción es agregar dicha información a los detalles, por ejemplo, en nuestro caso, agregando una fecha.

BIEN:

ELEGIR
ProductosOrganizaciones.Fecha,
ProductosOrganizaciones.Cantidad
DE
Registro de Acumulaciones de Bienes de Organizaciones AS Bienes de Organizaciones.

Subconsultas en una condición de unión

Para la optimización, es inaceptable utilizar subconsultas en condiciones de unión; esto ralentiza significativamente la consulta. Es aconsejable utilizar VT en tales casos. Para conectarse, debe utilizar solo metadatos y objetos VT, habiéndolos indexado previamente por campos de conexión.

EQUIVOCADO:

ELEGIR …

UNIRSE A LA IZQUIERDA (
SELECCIONE DE RegisterInformation.Limits
DÓNDE …
AGRUPAR POR...
) POR …

BIEN:

ELEGIR …
Límites de colocación
DESDE Registro de Información.Límites
DÓNDE …
AGRUPAR POR...
ÍNDICE POR...;

ELEGIR …
DE Documento. Ventas de bienes y servicios.
Límites de UNIÓN IZQUIERDA
POR …;

Unir registros con tablas virtuales

Hay situaciones en las que, al conectar una mesa virtual a otras, el sistema no funciona de manera óptima. En este caso, para optimizar el rendimiento de la consulta, puede intentar colocar la tabla virtual en una temporal, sin olvidar indexar los campos unidos en la consulta de la tabla temporal. Esto se debe al hecho de que los VT a menudo están contenidos en varias tablas DBMS físicas, por lo que se compila una subconsulta para seleccionarlos y el problema resulta ser similar al punto anterior;

Usar selecciones basadas en campos no indexados

Uno de los errores más comunes al escribir consultas es utilizar condiciones en campos no indexados, esto contradice Reglas de optimización de consultas. El DBMS no puede ejecutar una consulta de manera óptima si la consulta incluye una selección en campos no indexables. Si toma una tabla temporal, también necesita indexar los campos de conexión.

Debe haber un índice adecuado para cada condición. Un índice adecuado es aquel que satisface los siguientes requisitos:

  1. El índice contiene todos los campos enumerados en la condición.
  2. Estos campos se encuentran al principio del índice.
  3. Estas selecciones son consecutivas, es decir, los valores que no están involucrados en la condición de consulta no están "encajados" entre ellos.

Si el DBMS no selecciona los índices correctos, se escaneará toda la tabla; esto tendrá un impacto muy negativo en el rendimiento y puede provocar un bloqueo prolongado de todo el conjunto de registros.

Usando OR lógico en condiciones

Eso es todo, este artículo cubrió los aspectos básicos de la optimización de consultas que todo experto de 1C debería conocer.

Un curso en vídeo gratuito muy útil sobre desarrollo y optimización de consultas. lo recomiendo encarecidamente¡Para principiantes y más!

La plataforma genera mesas virtuales Saldos, Facturaciones y Saldos y Facturaciones; Sólo para el volumen de negocios actual:
Las tablas virtuales no existen físicamente en la base de datos; se generan a nivel de plataforma para aumentar la velocidad y la conveniencia del acceso de los desarrolladores a los datos.

Antes de construir tablas virtuales, los datos se pueden seleccionar mediante parámetros. El conjunto de parámetros es diferente para diferentes tablas. Para la tabla Saldo, este es el período de saldo y una condición arbitraria:

Para la tabla de Volumen de negocios, el período se divide en dos (principio y final) y se agrega la configuración de Periodicidad:

Para la tabla de Saldos y facturación, se agrega la configuración Método de Suma:

Echemos un vistazo más de cerca a todos estos parámetros.

  • Parámetro Periodo (Inicio del periodo, Fin del periodo) puede tomar valores de tipo Fecha:

así como los tipos Momento en el Tiempo y Límite:

Es importante que si utiliza el tipo Fecha o Momento en el Tiempo (combinaciones de Fecha y Enlace), el segundo de tiempo, especificado en el campo de selección, no se tiene en cuenta en la selección de datos. Ya está “fuera” de él, la muestra se construye antes/después de un momento dado.

En el caso de utilizar el tipo de Límite, este matiz es personalizable, ya que se puede especificar el tipo de borde: mostrar datos incluyendo o excluyendo el segundo especificado:

  • Frecuencia de parámetros- le permite determinar el período al que se entregarán los registros. Por ejemplo, si la frecuencia es Año, todos los registros se mostrarán a partir del 1 de enero.

La opción Frecuencia automática es especialmente interesante; le permite traer datos a varios períodos en una sola solicitud. En el diseñador de consultas, todas las opciones de período están disponibles; puede seleccionar las que necesita:

Resultado:

  • Método de adición de parámetros- determina si se debe crear una solicitud solo en función de los movimientos del período (opción Movimiento), o tener en cuenta saldos iniciales(Opción de límites de movimiento y período). El resultado es excelente en lo siguiente: si, por ejemplo, según la nomenclatura había saldos al inicio, pero no hubo rotaciones en el período, entonces en el caso de Movimientos no se incluirá en la muestra; en el caso de límites de movimiento y período, caerá con rotación cero
  • Condición del parámetro- le permite imponer una condición arbitraria en la medición del registro:

Pregunta 07.46 del examen 1C: Plataforma Profesional. Al definir la opción de frecuencia “Auto” en la tabla virtual “Saldos y Facturaciones”:

  1. el sistema seleccionará automáticamente la frecuencia de recepción de revoluciones según la regla: para que el resultado sea al menos 3 valores de período, pero no más de 12
  2. el sistema seleccionará automáticamente la frecuencia de recepción de revoluciones según la regla: para que el resultado sea al menos 5 valores del período, pero no más de 10
  3. en los campos de selección de consultas, el desarrollador podrá seleccionar campos de período con diferente frecuencia

La respuesta correcta es la tercera, análisis anterior.

Registros de acumulación en el sistema 1C:Enterprise se dividen en dos tipos: registros de acumulación sobras y registros de acumulación rpm.

El tipo de registro se selecciona al crearlo en el configurador.

Como sugiere el nombre, algunos están destinados a obtener saldos a una fecha determinada, y los segundos están destinados a obtener facturación para un período seleccionado. Dependiendo del tipo de registro de acumulación, la plataforma 1C:Enterprise genera un conjunto diferente de tablas virtuales. En este artículo veremos cómo trabajar con tablas virtuales de registros de acumulación. Para hacer esto, crearemos un registro para acumular saldos: ProductosRestos y el registro de acumulación de revolución - ProductosFacturación.

Ahora veamos qué tablas virtuales proporciona la plataforma para cada uno de estos registros.

Registro de acumulación de revolución

Para mayor claridad, abramos y veamos qué tablas están disponibles para el registro. ProductosFacturación. Esta es la tabla del registro en sí: ProductosFacturación, que existe físicamente en la base de datos, y una tabla virtual - ProductosFacturación.Facturación

Con la mesa estándar todo está claro. Echemos un vistazo más de cerca al virtual.

Mesa virtual Facturación

Esta tabla le permite obtener la rotación de recursos en términos de dimensiones. En nuestro caso tenemos dos dimensiones: Depósito Y Producto. Y un recurso... Cantidad

Deje que nuestro registro tenga las siguientes entradas

Volvamos al diseñador de consultas y comencemos simplemente seleccionando de la tabla. ProductosFacturación.Facturación todos los campos

En consecuencia, la solicitud se verá así:

SELECCIONE ProductosFacturaciónFacturación.Almacén, ProductosFacturaciónFacturación.Producto, ProductosFacturaciónFacturación.CantidadFacturación FROM RegistroAcumulación.ProductosFacilidad de Venta.Facturación(,) AS ProductosFacturaciónFacturación

El resultado de la consulta se ve así:

Es decir, recibimos facturación en términos de mercancías y almacenes durante todo el tiempo. Supongamos que no nos interesan los almacenes y queremos obtener facturación sólo en términos de mercancías.

Para hacer esto, excluimos la dimensión de la solicitud. Depósito

SELECCIONE Facturación de ProductosFacturación.Producto, Facturación de ProductosFacturación.CantidadFacturación FROM RegistroAcumulación.Facturación de Productos.Facturación(,) AS Facturación de ProductosFacturación

y como resultado solo nos quedarán dos líneas

Pero, por regla general, no es necesario recibir facturación durante toda la existencia del registro. Básicamente, son necesarios para un período concreto: mes, trimestre, año, etc. Además, normalmente se necesitan selecciones por dimensiones (Producto, Almacén). Esto se logra usando parámetros de la tabla virtual. Es conveniente completar los parámetros desde el constructor. Por botón Opciones de mesa virtual Se abre un cuadro de diálogo en el que podemos introducir todo lo que necesitamos:

Después de esto, nuestra solicitud original tomará la siguiente forma

SELECCIONAR Facturación de BienesFacturación.Almacén, Facturación de BienesFacturación.Producto, Facturación de BienesFacturación.CantidadFacturación FROM RegistroAcumulación.Facturación de Bienes.Facturación(&Inicio del Período, &Fin del Período, Almacén = &Almacén) COMO Facturación de BienesFacturación

Como vemos, la diferencia es que entre paréntesis después del nombre de la tabla virtual hay parámetros que se deben completar antes de ejecutar la consulta.

Aquellos que recién comienzan a trabajar con tablas virtuales a menudo se sienten tentados a configurar la selección de la forma habitual en lugar de utilizar parámetros:

DESDE RegistroAcumulaciones.FacturacióndeProductos.Facturación(,) CÓMO Facturación de ProductosFacturación DONDE Facturación de ProductosFacturación.Almacén = &Almacén

Al completar los parámetros que nos perdimos Periodicidad. Abramos la lista y elijamos entre la gran cantidad de opciones posibles. Mes. Eliminaremos todos los demás parámetros para no confundirnos.

Luego de esto observamos que aparece un campo en la tabla campos Período.

Al agregarlo a los campos seleccionados, obtenemos el siguiente texto de solicitud:

SELECCIONE ProductosFacturaciónFacturación.Período, ProductosFacturaciónFacturación.Almacén, ProductosFacturaciónFacturación.Producto, ProductosFacturaciónFacturación.CantidadFacturación FROM RegistroAcumulación.ProductosFacturación.Facturación(, Mes,) AS ProductosFacturaciónFacturación

Ejecutamos la solicitud:

Así, dentro del intervalo de tiempo seleccionado, podremos dividir las revoluciones en intervalos más pequeños de acuerdo con la frecuencia seleccionada.

Registro de acumulación de saldo

Al igual que con el registro inverso, veamos en el diseñador de consultas qué tablas virtuales están disponibles para el registro de acumulación de saldo.

Como puede ver, se encuentran disponibles tres mesas virtuales para el registro de acumulación de saldo: Revoluciones, Sobras, Restos y pérdidas de balón. Consideremos cada uno de ellos por separado.

Mesa virtual Facturación

A pesar de que el tipo de registro es Sobras, todavía podemos recibir facturación de él. Además, aquí tenemos dos recursos adicionales: Próximo Y Consumo

Permítanme recordarles que cuando se realiza un asiento en el registro de saldo se indica el tipo de movimiento de acumulación (ingresos o gastos), mientras que para el registro de facturación no se indica el tipo de movimiento. Por lo tanto, aquí tenemos una bonificación adicional en forma de la oportunidad de recibir no sólo el volumen de negocios global del período, sino también los ingresos y gastos por separado. Pero, por supuesto, si los metadatos contienen un registro inverso con un conjunto similar de medidas, entonces es mejor usarlo para obtener el volumen de negocios. En general, trabajar con esta mesa virtual es similar a trabajar con una mesa virtual. Revoluciones el registro negociable discutido anteriormente.

Saldos de mesa virtual

Esta tabla se utiliza para obtener saldos de recursos por dimensión. En los parámetros de la tabla podemos especificar la fecha para la cual recibimos saldos y establecer selecciones:

Veamos un pequeño ejemplo. Contamos con las siguientes entradas registrales:

Seleccionemos todos los campos disponibles y establezcamos finales de junio como fecha para recibir saldos. No estableceremos selección en base a medidas. Entonces el texto de la solicitud se verá así:

SELECCIONAR ProductosRestantesRestantes.Almacén, ProductosRestantesRestantes.Producto, ProductosRestantesRestantes.CantidadRestante FROM RegistroAcumulaciones.ProductosRestantes.Restantes(&FechaRestantes,) AS ProductosRestantesRestantes

Y luego de ejecutarlo obtenemos este resultado.

Mesa virtual Saldos y Rotaciones

Esta tabla combina las dos comentadas anteriormente y permite obtener la facturación del período de tiempo seleccionado, así como los saldos al inicio y al final del período. También puede configurar la selección.

El uso de esta tabla puede justificarse cuando es necesario obtener simultáneamente tanto el volumen de negocios como los saldos al principio y al final del período en un solo informe. En otros casos, no conviene abusar de su uso.

Creemos un informe con un conjunto de datos de consulta:

PRODUCTOS SELECCIONADOS EN ALMACENES Restantes. Almacén, Mercancías en Almacenes Restos. Nomenclatura, Productos en Almacenes Restantes. CantidadSaldo DEL Registro de Acumulación. ProductosEnAlmacenes. Restos(&MiFecha,) COMO ProductosEnAlmacenesRemains

Ahora vayamos a la pestaña de parámetros y veamos que el sistema, además de nuestro parámetro &MyDate, también ha creado el parámetro &Period.
Para monitorear visualmente los períodos, crearemos un formulario de informe principal y colocaremos un campo de tabla con datos en él: Settings Composer.Settings.DataParameters

Guardemos el informe y abrámoslo en la empresa. En el campo de la tabla con parámetros, solo se muestra el parámetro &Periodo:

En consecuencia, cualquier cambio en este parámetro no dará el resultado deseado.

¿Por qué el parámetro &MyDate no está disponible? Por supuesto, porque en la pestaña de parámetros tiene una casilla marcada Limitación de disponibilidad.

Desmarque la casilla. Ahora vemos ambos en los parámetros disponibles. Sólo al generar el informe veremos que el informe reacciona al parámetro &Period, y no a &MyDate.

En este ejemplo, lo más sencillo es cambiar el nombre del parámetro &MyDate a &Period en la solicitud y lograr el resultado deseado. Pero tal vez tengas una consulta en la que ya se haya utilizado el parámetro &Period, o tus opiniones religiosas no te permitan utilizar este parámetro, en cualquier caso, puedes solucionar el problema así:

PRODUCTOS SELECCIONADOS EN ALMACENES Restantes. Almacén, Mercancías en Almacenes Restos. Nomenclatura, Productos en Almacenes Restantes. CantidadSaldo DEL Registro de Acumulación. ProductosEnAlmacenes. Restos((&MiFecha),) COMO ProductosEnAlmacénRestos

UPD del usuario Abucheo:

El principal problema al utilizar parámetros “estándar” (agregados por el sistema) es que al utilizar varias tablas virtuales en un informe, si se define este parámetro, en todos los demás casos se utilizará su valor en lugar de los “propios”.

Déjame darte un ejemplo:

SELECCIONE EmployeesSP.Employee, WorkersSP.ReasonChangesConditions, WorkersSP.Period, WorkersSPAnotherDate.Period AS Period2, WorkersSPAnotherDate.ReasonChangesStates AS ReasonChangesState2 FROM RegisterInformation.EmployeesOrganizations.SliceLast(&Period, Employee = &Employee) AS Work nikkiSP CONEXIÓN IZQUIERDA Registro de información. Empleados de organizaciones. Fragmento de la última (& otra fecha), AS EmpleadosSPAnotherDate BY EmployeesSP.Employee = EmployeesSPAnotherDate.Employee

En la segunda subconsulta, el valor del parámetro PERIODO "estándar" se utilizará como parámetro de fecha del segmento, en lugar del valor Otra Fecha.

Este "fallo" se observará incluso si la segunda subconsulta se envía al segundo conjunto de datos y se vincula mediante ACS. La opción que utiliza en la segunda solicitud una expresión como “ADDATE(&Period, Monthh, -1)” tampoco funcionará, no se restará el mes. Pero cambiar el nombre del parámetro "Período" en la solicitud a, por ejemplo, "Primera Fecha" resuelve este problema.

Por cierto, exactamente el mismo problema se observa con las tablas virtuales de acumulación y registros contables, utilizadas para obtener, por ejemplo, la facturación. Allí el sistema agrega los parámetros “Inicio de Periodo” y “Fin de Periodo”.
Por lo tanto, en el caso de consultas de complejidad incluso ligeramente mayor, tiene sentido desactivar la disponibilidad y el uso de "períodos estándar".