Expresar como un número en la consulta de 1s 8.3. Documento.Consumible AS D

Tipos incompatibles "EXPRESS"- este mensaje aparece cuando un programador 1C 8.2 o 8.3 intenta comparar dos tipos diferentes.

La función Express() le permite convertir el valor de un campo de solicitud 1C a un tipo específico. Esto puede ser necesario en dos casos:

1. Obtenga la capacidad numérica requerida o la cantidad requerida de caracteres de un valor de cadena. La cantidad de caracteres en campos de tipo ilimitado debe estar limitada debido a ciertas características.

Obtenga 267 lecciones en video sobre 1C gratis:

Por ejemplo:

EXPRESS(Nomenclatura.Comentario AS STRING(300))
EXPRESS(Nomenclatura.Precio COMO NÚMERO(15, 2)) COMO Importe

2. Convierta un campo de tipo compuesto en un campo de tipo único. Esto puede ser necesario para ciertos fines. Si un campo escrito contiene un valor de otro tipo, el sistema devolverá NULL, por lo que siempre es necesario establecer adicionalmente una condición en la sección "DÓNDE", limitándola con el operador ENLACE.

Por ejemplo:

ELEGIR

EXPRESS(Ventas.Registrador AS Documento.Implementación)

DE

DONDE Ventas.Registrador ENLACE Documento.Implementación

Cómo evitar errores

Errores como "Tipos incompatibles EXPRESS..." pueden ocurrir cuando la sintaxis se usa incorrectamente.

Por ejemplo, la construcción “EXPRESS(“123″ AS NUMBER(5, 2)) AS SUM” se considera errónea, ya que la solicitud no se puede convertir de un tipo a otro mediante métodos estándar.

Si estás empezando a aprender programación 1C, te recomendamos nuestro curso gratuito (no olvides

En este artículo analizaremos las posibilidades de conversión de tipos en el lenguaje de consulta 1C, que proporciona la función "Express".
Veamos varias opciones para usar esta función.
Y la primera opción es redondear números.

Para hacer esto, necesita utilizar la función Express en el siguiente formato:

Expresar(<Число>como número (<ДлинаЧисла>,<Точность>))

Dónde:
Número— el campo que necesita ser redondeado
LongitudNúmeros— longitud máxima del número
Exactitud— precisión del redondeo de números

Los parámetros tanto de longitud como de precisión deben ser números enteros positivos.
Vea cómo funciona esta función en la imagen a continuación.

El segundo caso de uso es el casting de cuerdas. Muy a menudo, las configuraciones utilizan cadenas de longitud ilimitada, lo que impone algunas restricciones. Por ejemplo, no podemos comparar cadenas de longitud ilimitada.
En la consulta siguiente, el campo Nombre completo es de tipo cadena de longitud ilimitada y esta consulta no funcionará.

Para que funcione es necesario convertir un campo de longitud ilimitada en una cadena de cierta longitud, esto se hace mediante la función Express en el siguiente formato:

Expresar(<Строка>como cuerda(<ДлинаСтроки>)

Dónde
Longitud de la línea– la longitud máxima a la que se reducirá la cuerda.
Reelaboremos la consulta: en la condición convertiremos una cadena ilimitada en una cadena con una longitud determinada. Entonces no habrá errores.

Consideremos la última y, diría yo, la opción más importante para su aplicación: cuando se trabaja con campos de tipo compuesto.
A continuación se muestran dos consultas que utilizan campos compuestos. El primero está mal y el segundo es correcto.

Aquellos. Cuando necesite obtener un campo de algún tipo complejo, obtenga siempre el valor de este campo solo después de convertir el tipo usando la función Express. En este caso, los documentos y libros de referencia tendrán el siguiente formato:

Expresar(<Документ>como documento.<ИмяТаблицы>)
Expresar(<Справочник>como directorio.< ИмяТаблицы >)
.

Dónde
Nombre de la tabla— nombre del objeto en .

Utilice siempre la función express cuando trabaje con tipos compuestos, optimiza enormemente la consulta.

Si todavía está "nadando" en las construcciones del lenguaje de consulta e incluso las consultas más simples le causan dificultades, le recomiendo mi curso "Consultas en 1C de principiante a profesional". Donde estos y muchos otros temas se tratan con más detalle.

Lo que tiene de especial este curso:
El curso está diseñado para quienes no están familiarizados con el lenguaje de consulta en 1C;
Material educativo bien estructurado y fácil de aprender;
Varias docenas de lecciones;
Útil ejemplos prácticos;
Todas las lecciones se presentan en un lenguaje claro y sencillo.

Para mis lectores, cupón de descuento del 25%: hrW0rl9Nnx

Intento publicar varios artículos gratuitos interesantes y tutoriales en vídeo con la mayor frecuencia posible. Por lo tanto, estaré muy contento si apoyas mi proyecto transfiriendo cualquier cantidad:

Puedes transferir cualquier cantidad directamente:
Yandex.Dinero - 410012882996301
Dinero Web - R955262494655

Únete a mis grupos.

El lenguaje de consulta es uno de los mecanismos fundamentales de 1C 8.3 para desarrolladores. Mediante consultas, puede recuperar rápidamente cualquier dato almacenado en la base de datos. Su sintaxis es muy similar a SQL, pero existen algunas diferencias.

Las principales ventajas del lenguaje de consulta 1C 8.3 (8.2) sobre SQL:

  • desreferenciar campos de referencia (referir uno o más puntos a detalles del objeto);
  • trabajar con resultados es muy conveniente;
  • la capacidad de crear tablas virtuales;
  • la solicitud puede redactarse tanto en inglés como en ruso;
  • capacidad de bloquear datos para evitar puntos muertos.

Desventajas del lenguaje de consulta en 1C:

  • a diferencia de SQL, en 1C las consultas no permiten cambiar datos;
  • falta de procedimientos almacenados;
  • imposibilidad de convertir una cadena en un número.

Echemos un vistazo a nuestro mini tutorial sobre las construcciones básicas del lenguaje de consulta 1C.

Debido a que las consultas en 1C solo le permiten recibir datos, cualquier consulta debe comenzar con la palabra "SELECCIONAR". Tras este comando se indican los campos de los que se deben obtener datos. Si especifica “*”, se seleccionarán todos los campos disponibles. Después de la palabra “DESDE”, se indica el lugar desde donde se seleccionarán los datos (documentos, registros, directorios, etc.).

En el ejemplo que se analiza a continuación, los nombres de toda la nomenclatura se seleccionan del directorio "Nomenclatura". Después de la palabra "CÓMO", se indican los alias (nombres) de tablas y campos.

ELEGIR
Nomenclatura Nombre AS Nombre de la Nomenclatura
DE
Directorio.Nomenclatura AS Nomenclatura

Junto al comando "SELECCIONAR" puede especificar palabras clave:

  • VARIOS. La consulta seleccionará solo filas que difieran en al menos un campo (sin duplicados).
  • Primero N, Dónde norte– el número de filas desde el principio del resultado que deben seleccionarse. Muy a menudo, esta construcción se utiliza junto con la clasificación (ORDER BY). Por ejemplo, cuando necesita seleccionar una determinada cantidad de documentos recientes por fecha.
  • PERMITIDO. Este diseño le permite seleccionar de la base de datos solo aquellos registros que están disponibles para el usuario actual. Bases para usar esto palabra clave El usuario recibirá un mensaje de error al intentar consultar registros a los que no tiene acceso.

Estas palabras clave se pueden utilizar juntas o por separado.

PARA CAMBIAR

Esta propuesta bloquea datos para evitar conflictos mutuos. Los datos bloqueados no se leerán desde otra conexión hasta que finalice la transacción. En esta cláusula, puede especificar tablas específicas que deben bloquearse. De lo contrario, todos serán bloqueados. El diseño es relevante sólo para el modo de bloqueo automático.

La mayoría de las veces, la cláusula "PARA CAMBIO" se utiliza al recibir saldos. Después de todo, cuando varios usuarios trabajan en el programa simultáneamente, mientras uno recibe saldos, otro puede cambiarlos. En este caso, el resto resultante ya no será correcto. Si bloquea los datos con esta propuesta, hasta que el primer empleado reciba el saldo correcto y realice todas las manipulaciones necesarias con él, el segundo empleado se verá obligado a esperar.

ELEGIR
Acuerdos mutuos Empleado,
Liquidaciones mutuas Monto de las liquidaciones mutuas Saldo
DE
Registro de Acumulaciones Liquidaciones mutuas con empleados Saldos AS Liquidaciones mutuas
PARA CAMBIAR

DÓNDE

El diseño es necesario para imponer algún tipo de selección a los datos cargados. En algunos casos de obtención de datos de registros, es más razonable especificar las condiciones de selección en los parámetros de las tablas virtuales. Cuando se utiliza "DÓNDE", primero se recuperan todos los registros y solo después se aplica la selección, lo que ralentiza significativamente la consulta.

A continuación se muestra un ejemplo de una solicitud para obtener personas de contacto para un puesto específico. El parámetro de selección tiene el formato: &ParameterName (el nombre del parámetro es arbitrario).

SELECCIÓN (CASO)

El diseño le permite especificar condiciones directamente en el cuerpo de la solicitud.

En el siguiente ejemplo, el "Campo adicional" contendrá texto dependiendo de si el documento se publica o no:

ELEGIR
AdmisiónT&U.Link,
ELECCIÓN
CUÁNDO AdmisiónT&U.Realizada
ENTONCES “¡El documento ha sido aprobado!”
ELSE “El documento no fue publicado...”
FINALIZAR COMO campo adicional
DE
Documento Recepción de Bienes y Servicios CÓMO Recepción T&C

UNIRSE

Las uniones vinculan dos tablas según una condición de relación específica.

CONEXIÓN IZQUIERDA/DERECHA

La esencia de la unión IZQUIERDA es que la primera tabla especificada se toma en su totalidad y la segunda se vincula a ella de acuerdo con la condición de conexión. Si no hay registros correspondientes a la primera tabla en la segunda, entonces se sustituye NULL como sus valores. En pocas palabras, la tabla principal es la primera tabla especificada y los datos de la segunda tabla (si los hay) ya están sustituidos por sus datos.

Por ejemplo, es necesario obtener artículos de los documentos "Recepción de bienes y servicios" y precios del registro de información "Precios de artículos". En este caso, si no se encuentra el precio de cualquier posición, sustitúyalo por NULL. Se seleccionarán todos los artículos del documento independientemente de si tienen precio o no.

ELEGIR
Recibo y nomenclatura U.,
Precios.Precio
DE
Documento Recepción de Bienes y Servicios Bienes CÓMO Recepción T&C
UNIÓN INTERNA RegisterInformation.PricesNomenclature.SliceLast AS Precios
Recibo de software&U.Nomenclatura = Precios.Nomenclatura

EN LA DERECHA todo es exactamente al revés.

CONEXIÓN COMPLETA

Este tipo de conexión se diferencia de las anteriores en que como resultado se devolverán todos los registros tanto de la primera tabla como de la segunda. Si no se encuentran registros en la primera o segunda tabla según la condición de enlace especificada, se devolverá NULL.

Cuando se utiliza una conexión completa en el ejemplo anterior, se seleccionarán todos los artículos del documento "Recepción de bienes y servicios" y todos los precios más recientes del registro "Precios de artículos". Los valores de los registros no encontrados tanto en la primera como en la segunda tabla serán iguales a NULL.

UNIR INTERNAMENTE

La diferencia entre INNER JOIN y FULL JOIN es que si no se encuentra un registro en al menos una de las tablas, la consulta no lo mostrará en absoluto. Como resultado, solo se seleccionarán aquellos artículos del documento “Recepción de bienes y servicios” para los cuales existan registros en el registro de información “Precios de artículos”, si en el ejemplo anterior reemplazamos “COMPLETO” por “INTERNO”.

AGRUPAR POR

La agrupación en consultas 1C le permite colapsar las filas de la tabla (campos de agrupación) de acuerdo con una determinada característica común (campos de agrupación). Los campos de agrupación solo se pueden mostrar utilizando funciones agregadas.

El resultado de la siguiente consulta será una lista de tipos de productos con precios máximos para ellos.

ELEGIR
,
MAX(Precio.Precio) COMO Precio
DE

AGRUPAR POR
Precios.Nomenclatura.Tipo de Nomenclatura

RESULTADOS

A diferencia de la agrupación, cuando se utilizan totales, se muestran todos los registros y se les agregan filas de totales. La agrupación muestra sólo registros generalizados.

Los resultados se pueden resumir para toda la tabla (usando la palabra clave “GENERAL”), para varios campos, para campos con una estructura jerárquica (palabras clave “JERARQUÍA”, “SÓLO JERARQUÍA”). Al resumir los resultados, no es necesario utilizar funciones agregadas.

Veamos un ejemplo similar al anterior usando agrupación. En este caso, el resultado de la consulta devolverá no sólo campos agrupados, sino también registros detallados.

ELEGIR
Precios.Nomenclatura.Tipo de Nomenclatura AS Tipo de Nomenclatura,
Precios.Precio AS Precio
DE
Registro de Información Precios de Nomenclatura Instantánea de los Últimos Precios de AS
RESULTADOS
MÁXIMO(Precio)
POR
TipoNomenclatura

TENIENDO

Este operador es similar al operador WHERE, pero se usa solo para funciones agregadas. El resto de campos, excepto los utilizados por este operador, deben estar agrupados. El operador WHERE no es aplicable a funciones agregadas.

En el siguiente ejemplo, los precios máximos de un artículo se seleccionan si superan 1000, agrupados por tipo de artículo.

ELEGIR

MAX(Precio.Precio) COMO Precio
DE
Registro de Información Precios de Nomenclatura Instantánea de los Últimos Precios de AS
AGRUPAR POR
Precios.Nomenclatura.Tipo de Nomenclatura
TENIENDO
MÁXIMO(Precios.Precio) > 1000

ORDENAR POR

El operador ORDER BY ordena el resultado de una consulta. Para garantizar que los registros se muestren en un orden coherente, se utiliza ORDEN AUTOMÁTICO. Los tipos primitivos están ordenados por reglas normales. Los tipos de referencia están ordenados por GUID.

Un ejemplo de cómo obtener una lista de empleados ordenados por nombre:

ELEGIR
Empleados.Nombre AS Nombre
DE
Directorio.Empleados CÓMO Empleados
ORDENAR POR
Nombre
PEDIDO AUTOMÁTICO

Otras construcciones del lenguaje de consulta 1C

  • COMBINAR– resultados de dos consultas en una.
  • COMBINA TODO– similar a COMBINAR, pero sin agrupar filas idénticas.
  • MESA VACÍA– a veces se utiliza al unir consultas para especificar una tabla anidada vacía.
  • LUGAR– crea una tabla temporal para optimizar consultas complejas de 1C. Estas solicitudes se denominan solicitudes por lotes.

Funciones del lenguaje de consulta

  • SUBCADE trunca una cadena desde una posición especificada hasta un número específico de caracteres.
  • AÑO...SEGUNDO le permite obtener el valor seleccionado de un tipo numérico. El parámetro de entrada es la fecha.
  • INICIO DEL PERIODO y FINAL DEL PERIODO Se utiliza cuando se trabaja con fechas. Como parámetro adicional se indica el tipo de periodo (DÍA, MES, AÑO, etc.).
  • AGREGAR FECHA le permite sumar o restar un tiempo específico de un cierto tipo de una fecha (SEGUNDO, MINUTO, DÍA, etc.).
  • DIFERENCIAFECHA determina la diferencia entre dos fechas, indicando el tipo de valor de salida (DÍA, AÑO, MES, etc.).
  • ES NULO reemplaza el valor faltante con la expresión especificada.
  • REPRESENTACIÓN y ENLACES DE REPRESENTACIÓN obtiene una representación de cadena del campo especificado. Aplicar a cualquier valor y solo a valores de referencia, respectivamente.
  • TIPO, TIPO VALORES se utilizan para determinar el tipo de parámetro de entrada.
  • ENLACE es un operador de comparación lógica para el tipo de valor de atributo.
  • EXPRESAR se utiliza para convertir un valor al tipo deseado.
  • FECHA Y HORA obtiene un valor de tipo "Fecha" a partir de valores numéricos (Año, Mes, Día, Hora, Minuto, Segundo).
  • SIGNIFICADO en una solicitud 1C se utiliza para indicar valores predefinidos: directorios, enumeraciones, planes para tipos de características. Ejemplo de uso: " Donde Persona Jurídica = Valor(Enumeración. Persona Jurídica. Individuo)«.

Consultor de construcción

Para crear consultas con 1C existe un mecanismo integrado muy conveniente: el diseñador de consultas. Contiene las siguientes pestañas principales:

  • “Tablas y campos”: contiene los campos que deben seleccionarse y sus fuentes.
  • “Conexiones”: describe las condiciones para la estructura CONEXIÓN.
  • “Agrupación”: contiene una descripción de las estructuras de agrupación y los campos sumados basados ​​en ellas.
  • “Condiciones” - es responsable de seleccionar los datos en la solicitud.
  • “Avanzado”: ​​parámetros de consulta adicionales, como palabras clave para el comando “SELECT”, etc.
  • “Uniones/Alias”: se indican las posibilidades de unir tablas y se especifican los alias (la construcción “CÓMO”).
  • “Pedido” se encarga de ordenar el resultado de las consultas.
  • “Totales”: similar a la pestaña “Agrupación”, pero se utiliza para la construcción “TOTALES”.

El texto de la solicitud en sí se puede ver haciendo clic en el botón "Solicitar" en la esquina inferior izquierda. De esta forma, se puede corregir manualmente o copiar.


Solicitar consola

Para ver rápidamente el resultado de una consulta en modo empresarial o depurar consultas complejas, utilice . Contiene el texto de la solicitud, establece los parámetros y muestra el resultado.

Puede descargar la consola de consultas en el disco ITS o mediante .

NULL no es más que la ausencia de un valor. Mucha gente lo confunde con el valor “0” de tipo número, una referencia vacía a un objeto o una cadena vacía. Debido a esta idea errónea, surgen muchos errores.

El valor NULL aparecerá si la solicitud se refiere a un campo, propiedad o enlace roto inexistente.

Basado en SQL, que no permite pruebas de igualdad normales para NULL. A continuación se muestran dos formas de verificar NULL en 1C 8.3.

La función del lenguaje de consulta 1C 8.3 ISNULL() tiene dos parámetros de entrada:

  • expresión a probar;
  • expresión de reemplazo.

Si el valor que se prueba es NULL, esta función devolverá el valor de la expresión de reemplazo. Si el valor es distinto de NULL, se devolverá la expresión que se está probando.

A continuación se muestra un ejemplo. Selecciona todos los elementos de la parte tabular del producto del documento "Recepción de bienes y servicios". Usando la combinación izquierda, a cada artículo se le asigna el último precio del registro de información "Precios de artículos".

En este caso, puede surgir una situación en la que para alguna posición simplemente no haya un precio en el registro. En este caso, la función ISNULL nos devolverá el cero habitual. Si no lo usa, cuando intente realizar operaciones aritméticas en el campo "Precio" con un valor NULL, recibiremos un error.

ELEGIR

ISNULL(Precios.Precio, 0) COMO PrecioActual
DE



DÓNDE

HAY NULL en la declaración SELECT

El equivalente de ISNULL() es ISNULL, que se utiliza en la instrucción SELECT y comprueba si el valor es NULL. "IS" en este caso implica igualdad y la consulta en el ejemplo anterior se vería así:

ELEGIR
Productos.Nomenclatura AS Producto,
ELECCIÓN
CUANDO Precios El precio ES NULO
ENTONCES 0
DE LO CONTRARIO Precios.Precio
FINALIZAR COMO Precio actual
DE
Documento Recepción de Bienes y Servicios Bienes AS Bienes
CONEXIÓN IZQUIERDA RegisterInformation.PricesNomenclature.SliceLast AS Precios
Productos de software.Nomenclatura = Precios.Nomenclatura
DÓNDE
Productos.Enlace = &EnlaceAlDocumento

Diferencias entre la función ISNULL() y IS NULL

Como puede ver en los ejemplos anteriores, en ambos casos la solicitud devuelve los mismos datos. La función ISNULL() es una versión abreviada de SELECTION WHEN... IS NULL... END, pero sigue siendo preferible por las siguientes razones:

  1. La función ISNULL() optimiza la consulta. Se lee una vez, por lo que al verificar una expresión compleja, la solicitud se procesará más rápido.
  2. La función ISNULL() acorta la construcción, haciendo que la consulta sea más legible.
  3. Al ejecutar la función ISNULL(), la expresión de reemplazo se reduce al tipo de expresión que se está probando para tipos de cadena (longitud de cadena) y tipos numéricos (profundidad de bits).

En este artículo queremos comentarlo todo contigo. Funciones del lenguaje de consulta 1C, y construcciones del lenguaje de consulta. ¿Cuál es la diferencia entre función y diseño? La función se llama entre paréntesis y posibles parámetros en ellos, y la construcción se escribe sin paréntesis. Indudablemente todas las estructuras y funciones del lenguaje de consulta 1C hacer que el proceso de adquisición de datos sea flexible y multifuncional. Estas funciones y construcciones se aplican a los campos de consulta y algunas también se aplican a las condiciones.

Funciones del lenguaje de consulta 1C

Porque una descripción clara Funciones del lenguaje de consulta 1C es mucho menos común que las descripciones de estructuras, decidimos comenzar a buscar funciones. Ahora veamos cada uno por separado, describiendo su propósito, sintaxis y ejemplo de uso, así:

1. Función FECHA Y HORA- esta función crea un campo constante con el tipo "Fecha".

Sintaxis: FECHA Y HORA(<Год>,<Месяц>,<День>,<Час>,<Минута>,<Секунда>)

Ejemplo de uso:

2. Función DIFERENCIA DE FECHA- devuelve la diferencia entre dos fechas en una de las dimensiones (año, mes, día, hora, minuto, segundo). La medida se pasa como parámetro.

Sintaxis: FECHA DIFERENCIA(<Дата1>, <Дата2>, <Тип>)

Ejemplo de uso:

Query.Text = "SELECCIONAR | DIFFERENCEDATE(DATETIME(2015, 4, 17), DATETIME(2015, 2, 1), DAY) | AS Qty.Days";

3. Función VALOR- establece un campo constante con un registro predefinido de la base de datos; también puede obtener un enlace vacío de cualquier tipo.

Sintaxis: VALOR(<Имя>)

Ejemplo de uso:

Request.Text = "SELECT //elemento predefinido | VALOR(Directorio.Currencies.Dollar) AS Dólar, //enlace vacío | VALOR(Documento.Recibo de bienes y servicios.EmptyLink) AS Recibo, //valor de transferencia | VALOR(Transferencia . Persona Jurídica. Individuo) AS Individuo, //cuenta predefinida | VALOR(Plan de Cuentas. Autosostenible. Materiales) AS Cuenta_10" ;

4. Función SELECCIONAR- Tenemos ante nosotros un análogo de la construcción IF, que se usa en el código, solo este se usa en consultas 1C.

Sintaxis: ELECCIÓN CUÁNDO<Выражение>ENTONCES<Выражение>DE LO CONTRARIO<Выражение>FIN

Ejemplo de uso:

Request.Text = //si la cantidad es superior a 7500, entonces debería haber un descuento de 300 rublos, //por lo tanto, si se activa la condición, la función //devuelve Suma - 300 //de lo contrario, la solicitud devolverá simplemente Suma "SELECCIONAR | SELECCIONAR | CUANDO TCReceipts.Amount > 7500 | ENTONCES TCReceipts.Amount - 300 | ELSE TCReceipts.Amount | FINALIZAR COMO MontoConDescuento | DESDE | Documento.Recepción de BienesServicios.Bienes COMO TCReceipts";

5. Función EXPRESA- le permite expresar un campo constante con un tipo específico.

Sintaxis: EXPRESS(Nombre de campo como nombre de tipo)

Ejemplo de uso:

Query.Text = "SELECCIONE VARIOS | Ventas.Registrar.Número, | SELECCIONAR | CUANDO Ventas.Registrar ENLACE Documento.Consumible | ENTONCES EXPRESAR(Ventas.Registrar COMO Documento.Consumible) | ELSE SELECCIONAR | CUANDO Ventas.Registrar ENLACE Documento.Implementación | ENTONCES EXPRESS(Ventas.Registrador COMO Documento.Implementación) | FIN | ... | FINALIZAR Número AS | DESDE | Registrar Acumulaciones.Compras COMO Compras";

¿Existe otra opción para utilizar la función EXPRESS en campos de tipos mixtos, dónde ocurren? El ejemplo más simple es el "Registrador" para cualquier registro. Entonces, ¿por qué podríamos necesitar calificar el tipo en el registrador? Consideremos la situación cuando seleccionamos el campo "Número" del registrador, ¿de qué tabla se seleccionará el número? ¡La respuesta correcta de todas! Por lo tanto, para que nuestra consulta funcione rápidamente, debemos especificar un tipo explícito usando la función EXPRESS

Ejemplo de uso:

Query.Text = "SELECCIONAR | EXPRESS(Nomenclatura.Comentario Línea AS(300)) COMO Comentario, | EXPRESS(Nomenclatura.Suma Número AS(15,2)) AS Suma |DESDE | Directorio.Nomenclatura AS Nomenclatura";

6. función ESNULO(ortografía alternativa ISNULL): si el campo es de tipo NULL, se reemplaza con el segundo parámetro de la función.

Sintaxis: ES NULO(<Поле>, <ПодставляемоеЗначение>)

Ejemplo de uso:

También tenga en cuenta que es aconsejable reemplazar SIEMPRE el tipo NULL con algún valor, porque la comparación con el tipo NULL siempre devuelve FALSO incluso si compara NULL con NULL. La mayoría de las veces, los valores NULL se forman como resultado de unir tablas (todos los tipos de uniones excepto las internas).

Query.Text = //Selecciona el artículo completo y sus saldos //si no hay saldo en algún artículo, entonces habrá un campo //NULL que será reemplazado con el valor 0 "SELECT | No. Link, | ISNULL (ProductsInStockRemains.InStockRemaining, 0) AS Resto | FROM | Directorio.Nomenclatura AS No. | CONEXIÓN IZQUIERDA Registrar Acumulaciones. GoodsInWarehouses. Restos AS GoodsInWarehousesRemains | ON (GoodsInWarehousesRemains. Nomenclatura = No. Enlace)";

7. Función REPRESENTACIÓN- le permite obtener una representación del campo de solicitud.

Sintaxis: ACTUACIÓN(<НаименованиеПоля>)

Ejemplo de uso:

Query.Text = "SELECCIONAR | REPRESENTACIÓN(FreeRemainingRemaining.Nomenclature) COMO Nomenclatura, | REPRESENTACIÓN(FreeRemaining.Warehouse) COMO Almacén, | FreeRemainingRemaining.InStockRemaining |DESDE |Registro de acumulación.FreeRemaining.Remaining COMO FreeRemainingRemaining";

Construcciones en el lenguaje de consulta 1C.

Hablamos contigo arriba Funciones del lenguaje de consulta 1C, ahora es el momento de considerar construcciones en el lenguaje de consulta 1C, no son menos importantes y útiles, comencemos.

1. ENLACE Construcción- es un operador lógico para comprobar un tipo de referencia. Se encuentra con mayor frecuencia al comparar un campo de un tipo complejo con un tipo específico. Sintaxis: ENLACE<Имя таблицы>

Ejemplo de uso:

Request.Text = //si el tipo de valor del registrador es documento Recibo, //entonces la consulta devolverá "Recepción de mercancías", en caso contrario "Ventas de mercancías" "SELECT | SELECT | WHEN Restos.Registrador LINK Documento.Recepción de mercancías y Servicios | ENTONCES ""Recibo"" | ELSE ""Consumo"" | FINALIZAR COMO Tipo de Movimiento | DESDE | Registro de Acumulación. Resto de Productos en Almacenes COMO Restos" ;

2. Diseño ENTRE- este operador comprueba si el valor está dentro del rango especificado.

Sintaxis: ENTRE<Выражение>Y<Выражение>

Ejemplo de uso:

Request.Text = //obtiene la nomenclatura completa cuyo código está en el rango de 1 a 100 "SELECT | Nomenclature.Link |FROM | Directory.Nomenclature AS Nomenclature |WHERE | Nomenclature.Code ENTRE 1 Y 100" ;

3. Construcción B y B JERARQUÍA- comprobar si el valor está en la lista transferida (las matrices, tablas de valores, etc. se pueden transferir como lista). El operador EN JERARQUÍA le permite ver la jerarquía (un ejemplo de uso del Plan de cuentas).

Sintaxis: EN(<СписокЗначений>), EN JERARQUÍA(<СписокЗначений>)

Ejemplo de uso:

Request.Text = //seleccione todas las subcuentas de la cuenta "SELECCIONAR | Autosuficiente. Vincular AS Cuenta | DESDE | Plan de cuentas. Autosuficiente AS Autosuficiente | DÓNDE | Autosuficiente. Vincular EN JERARQUÍA VALOR (Gráfico de Cuentas. Autosostenibles. Bienes)";

4. Diseño SIMILAR- Esta función nos permite comparar una cadena con un patrón de cadena.

Sintaxis: COMO "<ТекстШаблона>"

Opciones de patrón de filas:

%: una secuencia que contiene cualquier número de caracteres arbitrarios.

Un personaje arbitrario.

[...] cualquier carácter o secuencia de caracteres enumerados entre corchetes. La enumeración puede especificar rangos, por ejemplo a-z, es decir, un carácter arbitrario incluido en el rango, incluidos los extremos del rango.

[^...] - cualquier carácter o secuencia de caracteres enumerados entre corchetes, excepto aquellos enumerados después del signo de negación.

Ejemplo de uso:

Query.Text = //busca la nomenclatura completa que contiene la raíz TABUR y comienza //ya sea con una letra t minúscula o mayúscula "SELECT | Nomenclatura. Enlace | FROM | Directorio. Nomenclatura AS Nomenclatura | DONDE | Productos. Nombre LIKE "" [Tt ]abur%""" ;

5. Diseño PERMITIDO- este operador le permite seleccionar solo aquellos registros de la base de datos para los cuales la persona que llama tiene permiso de lectura. Estos derechos se configuran a nivel de registro (RLS).

Sintaxis: PERMITIDO está escrito después de la palabra clave SELECT

Ejemplo de uso:

Request.Text = "SELECCIONAR PERMITIDO | Contrapartes. Enlace | DESDE | Directorio. Contrapartes COMO Contrapartes";

6. Diseño VARIOS- le permite seleccionar registros en los que no hay registros duplicados.

Sintaxis: VARIOS se escribe después de la palabra clave SELECCIONAR

Ejemplo de uso:

Request.Text = //selecciona registros sobre los cuales el lector tiene derechos "SELECCIONAR VARIOS | Contrapartes.Nombre |DESDE | Directorio. Contrapartes AS Contrapartes" ;

Además, las VARIAS construcciones se pueden utilizar con el operador PERMITIDO y otros operadores.

Ejemplo de uso:

Request.Text = //selecciona varios registros sobre los cuales el lector tiene derechos "SELECCIONAR VARIOS PERMITIDOS | Contrapartes.Nombre |DESDE | Directorio. Contrapartes COMO Contrapartes";

7. Diseño PRIMERO- selecciona el número de registros especificados en el parámetro del resultado de la consulta.

Sintaxis: PRIMERO<число>

Ejemplo de uso:

Request.Text = //seleccione los primeros 4 números CCD del directorio "SELECCIONE LOS PRIMEROS 4 | Números CCD. Enlace | DESDE | Directorio. Números CCD COMO Números CCD";

8. Diseño PARA EL CAMBIO- le permite bloquear una tabla, funciona solo en transacciones (relevante solo para bloqueos automáticos).

Sintaxis: PARA CAMBIAR<НаименованиеТаблицы>

Ejemplo de uso:

Query.Text = "SELECCIONAR | Restos Libres Restos. Nomenclatura, | Restos Libres Restos. Almacén, | Restos Libres Restos. En Stock Restantes | DESDE | Registro de Acumulaciones. Restos Libres. Restos COMO Restos Libres Restos | POR CAMBIO | Registro de Acumulaciones . Restos Libres. Restos”;

9. Diseño ORDENAR POR- organiza los datos por un campo específico. Si el campo es un enlace, al configurar la bandera PEDIDO AUTOMÁTICO La clasificación se realizará según la representación del enlace; si la bandera está desactivada, los enlaces se ordenarán según la antigüedad de la dirección del enlace en la memoria.

Sintaxis: ORDENAR POR<НаименованиеПоля>PEDIDO AUTOMÁTICO

Ejemplo de uso:

Query.Text = "SELECCIONAR | Restos Libres Restos. Nomenclatura COMO Nomenclatura, | Restos Libres Restos. Almacén COMO Almacén, | Restos Libres Restos. En Stock Restantes | DESDE | Registrar Acumulaciones. Restos Libres. Restos COMO Restos Libres | | ORDER BY | Nomenclatura | RECUPERACIÓN AUTOMÁTICA DE PEDIDOS";

10. Diseño GRUPO POR- Se utiliza para agrupar cadenas de consulta por campos específicos. Los campos numéricos deben usarse con cualquier función agregada.

Sintaxis: AGRUPAR POR<НаименованиеПоля1>, .... , <НаименованиеПоляN>

Ejemplo de uso:

Query.Text = "SELECCIONAR | ProductosEnAlmacén.Nomenclatura AS Nomenclatura, | ProductosEnAlmacén.Almacén, | SUMA(BienesEnAlmacén.EnStock) COMO EN STOCK |DESDE | RegistrarAcumulaciones.ProductosEnAlmacén AS ProductosEnAlmacén | |GRUPO POR | ProductosEnAlmacén.Nomenclatura, | ProductosEn Almacenes.Almacén" ;

11. Diseño TENER- le permite aplicar una función agregada a una condición de selección de datos, similar a la construcción WHERE.

Sintaxis: TENIENDO<агрегатная функция с условием>

Ejemplo de uso:

Query.Text = //selecciona registros agrupados donde el campo InStock es mayor que 3 "SELECT | ItemsInStocks.Nomenclature AS Nomenclature, | ItemsInWarehouses.Warehouse, | SUM(ItemsInStocks.InStock) AS INSTOCK |FROM | RegisterAccumulations.ItemsInStocks AS ItemsInStocks | | GRUPO POR | ProductosEnAlmacén.Nomenclatura, | ProductosEnAlmacén.Almacén | |DISPONIBLE | CANTIDAD(ProductosEnAlmacén.EnStock) > 3" ;

12. Construcción ÍNDICE POR- Se utiliza para indexar el campo de consulta. Una consulta con indexación tarda más en completarse, pero acelera la búsqueda en los campos indexados. Sólo se puede utilizar en mesas virtuales.

Sintaxis: ÍNDICE POR<Поле1, ... , ПолеN>

Ejemplo de uso:

Query.Text = "SELECT | Ts.NameOS, | Ts.FolderNumber, | Ts.CodeOS, | Ts.Term, | Ts.Type | LUGAR DataTs | FROM | &Ts AS Ts | | INDEX BY | Ts.NameOS, | Ts .CodeOS";

13. Diseño DONDE- le permite imponer una condición en cualquier campo de selección. El resultado incluirá sólo los registros que cumplan la condición.

Sintaxis: DÓNDE<Условие1 ОператорЛогСоединения УсловиеN>

Ejemplo de uso:

Query.Text = //se seleccionan todos los registros con CompensationRemaining<>0 y //CantidadParaCalcCompRemaining > 100 "SELECT | CompensaciónRPORemains.Contraparte, |CompensaciónRPORemains.Child, | CompensaciónRPORemains.CompensaciónRemaining, | CompensaciónRPORemains.AmountForCalcCompRemains |Colocar datosTz |DESDE | Registro de acumulación.CompensaciónRP.Remains AS CompensaciónRPOstat ki |DONDE |CompensaciónRPOR restante.CompensaciónRestante<>0 | Y CompensaciónRPORemains.AmountForCalcCompRemaining> 100";

14. Diseño RESULTADOS... GENERAL- se utiliza para calcular totales; el diseño especifica los campos mediante los cuales se calcularán los totales y se aplicarán funciones agregadas a los campos de totales. Cuando se utilizan totales para cada campo después de la construcción TOTAL, los datos se agrupan. Hay una construcción GENERAL opcional; su uso también proporciona agrupación adicional. Verá un ejemplo del resultado de la solicitud a continuación.

Sintaxis: RESULTADOS<АгрегатнаяФункция1, ... , АгрегатнаяФункцияN>POR<ОБЩИЕ> <Поле1, ... , ПолеN>

Ejemplo de uso:

Request.Text = "SELECT | Cálculos. Acuerdo de Contraparte. Tipo de Acuerdo AS Tipo de Contrato, | Cálculos. Acuerdo de Contraparte AS Contrato, | Cálculos. Contraparte, | Cálculos. Monto del Saldo de Liquidación Mutua Saldo AS | DESDE | Registro de Acumulaciones. Mutual Liquidación CON Contrapartes Saldos AS Cálculos | TOTAL | IMPORTE (Saldo) |Software | GENERAL, | Tipo de Acuerdo";

La figura describe las agrupaciones que se formaron durante la ejecución de la solicitud, la superior se refiere a la sección GENERAL y la segunda al campo Tipo de Acuerdo Acuerdo de Contraparte.