Menú
Gratis
Registro
hogar  /  Educación/skd valor de paso en la selección. ACS no es solo para informes: la implementación de filtros universales

Transferencia de valor Skd en la selección. ACS no es solo para informes: la implementación de filtros universales

A menudo, los programadores tenían que usar consultas para obtener datos y luego procesarlos para escribir procesamiento. Los datos, a su vez, se obtuvieron de la solicitud. Bueno, una solicitud sin selección o filtro es una rareza. Hablemos de selecciones en tales solicitudes, usando el ejemplo de una solicitud:

Para organizar la selección por contraparte para el usuario de la forma habitual, el programador tuvo que colocar tres elementos en el formulario, que se parecía a esto:

¿Cuánto trabajo cuesta describir a un programador diferentes tipos comparaciones (igual, no igual, en una lista, en un grupo...) y, en base a este tipo de comparación, afinar su solicitud final de obtención de datos.

Veamos cómo se puede hacer esto con la ayuda de SKD. Vamos a crear en nuestro procesamiento un Diseño con el tipo Esquema de composición de datos y llenarlo con nuestra solicitud:

En la pestaña Configuración, agreguemos una nueva agrupación sin detallar y, en nuestro ejemplo, el campo Contraparte, ya que al final obtendremos todo en la tabla de valores:

Y en la pestaña Selección, agregue la Contraparte a la selección:

Ahora echemos un vistazo al formulario. Mostremos en el formulario del propio procesamiento la Selección con la que trabajará el usuario. Vamos a mostrar un elemento del tipo de campo Tabla en el formulario y darle el nombre Selección con el tipo de datos Composer.Settings.Filter:

Ahora vamos a crear los controladores de eventos del formulario OnOpen y el controlador de clic del botón Ejecutar, el código se muestra a continuación:

Diseño Rem; Procedimiento ButtonExecuteClick(Button) Result.Clear(); Generador de diseño de diseño = Nuevo Generador de diseño de diseño de diseño de datos; LayoutLayout = LayoutLayoutRunner(Layout, Layoutr.GetSettings(), Type("DataCompositionLayoutGeneratorForValueCollection")); ComposiciónProcesador = NewDataCompositionProcessor; LayoutProcessor.Initialize(LayoutLayout); OutputProcessor = New OutputProcessorofCompositionResultDataToValueCollection; OutputProcessor.SetObject(Resultado); OutputProcessor.Output(CompositionProcessor); Si FormElements.Result.Columns.Count() = 0 Entonces FormElements.Result.CreateColumns(); Terminara si; EndProcedure ProcedimientoOnOpen() Layout = GetLayout("Layout"); SourceAvailableSettings = New SourceAvailableSettingsDataComposition(Layout); Linker.Initialize(AvailableSettingsSource); Enlazador.LoadSettings(Layout.DefaultSettings); Procedimiento final

La tramitación está lista, al ejecutarla podrá ver inmediatamente la Contraparte que ha aparecido en nuestra Selección, de la cual podrá seleccionar cualquier tipo de comparación, así como agregar líneas de selección adicionales según los detalles del directorio de Contrapartes:

Eso es todo, espero que este artículo te ayude a mejorar la flexibilidad de las selecciones en tu procesamiento.

sergey kononov

Extensión del lenguaje de consulta para el sistema de composición de datos

La extensión del lenguaje de consulta para el sistema de composición de datos se lleva a cabo utilizando instrucciones sintácticas especiales encerradas entre llaves y colocadas directamente en el texto de la consulta.

Elementos de sintaxis de la extensión del lenguaje de consulta del sistema de composición de datos

ELEGIR

Esta oración describe los campos que el usuario podrá seleccionar para la salida. Después de este palabra clave los alias de los campos de la lista de selección de consulta principal, que estarán disponibles para su personalización, se enumeran separados por comas.

Por ejemplo:

(SELECCIONE Nomenclatura, Almacén)

Un alias de campo puede ir seguido de una combinación de caracteres ".*", lo que indica la posibilidad de utilizar campos secundarios de este campo.

Por ejemplo, la entrada Nomenclatura.* indica la posibilidad de utilizar campos hijos del campo "Nomenclatura" (por ejemplo, el campo "Nomenclatura.Código"). El elemento SELECT solo puede estar presente en la primera consulta de combinación.

DÓNDE

Describe 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 campo de lista de selección. Cada parte de unión puede contener su propio elemento WHERE.

(DONDE Nomenclatura.*, Almacén)

un ejemplo sencillo

Debe obtener las ventas del período + mostrar todo el rango, independientemente de si hubo ventas o no. Es decir, debe seleccionar datos de la tabla de facturación del registro de Ventas, datos del directorio de nomenclatura. Omitamos la pregunta de por qué necesitamos toda la nomenclatura.

Para resolver el problema, puede crear una consulta que conecte el artículo y la tabla de rotación de ventas con una combinación izquierda, como resultado, para el artículo que no se vendió en el período seleccionado, obtendremos los valores de campo contraparte, Tratado, Cantidad, Suma= Nulo. Tal solicitud:

SELECCIONE SpecNomenclature.Reference AS Nomenclature, SalesTurnovers.Counterparty, SalesTurnovers.Counterparty Agreement, SalesTurnovers.QuantityTurnovers AS Cantidad, SalesTurnovers.CostTurnover AS Cost FROM Directory.Nomenclature AS SpecNomenclature LEFT JOIN Accumulation Register.Sales.Turnovers AS Pro Sales Turnovers Software SprNomenclature.Reference = Facturación de ventas. Nomenclatura

Aquí está el resultado:

contraparte Tratado Nomenclatura Cantidad Suma
nulo nulo _Prueba1 nulo nulo
LLC "Cuernos y pezuñas" Acuerdo1 Zapatillas 10 1200
"Gazprom" buen trato Botas 5 13000
nulo nulo Chanclos nulo nulo
nulo nulo pizarras nulo nulo

En este ejemplo, no hubo ventas del artículo: "Galoshes" y "Slates"

Y todo estaría bien, si agrupamos la selección por contraparte, entonces todos los artículos no vendibles caerán en una agrupación separada, donde Contraparte = Nulo, pero el cliente quiere tener una selección arbitraria en el informe por el campo de contraparte (de supuesto, esto significa la contraparte del registro de Ventas). ¿Cómo ser? Después de todo, de hecho, solo necesitamos filtrar la tabla Ventas. Si usamos autocompletar en el constructor de ACS, los campos de selección disponibles incluirán el campo contraparte, todo parece estar bien, pero al ejecutar un reporte con selección por contraparte, perderemos todos los registros de la conexión con la nomenclatura. Por ejemplo, establezcamos una selección: contraparte = LLC Cuernos y pezuñas. El resultado se verá así:

No es exactamente lo que necesitamos, ¿verdad?

Para resolver el problema, por supuesto, puede agregar un parámetro a la consulta, por ejemplo, a los parámetros de la tabla virtual Facturación de ventas, pero al mismo tiempo se pierde la flexibilidad de establecer el tipo de comparación.

Hay una solución: para esto, en consultor de construcción pestaña Diseño de datos => mesas agregar un campo de condición a las condiciones de la tabla virtual Facturación de ventas y cambiar su alias a Selección de contraparte

Para no confundir al usuario con los campos de selección, deshabilite el campo de condición contraparte y cambiar el título del campo Selección de contraparte


Como resultado de ejecutar este esquema con filtrado habilitado por campo de contraparte, la consulta resultante tomará la forma:

SELECCIONE Nomenclatura de referencia.Referencia AS Nomenclatura, Volúmenes de ventas.Contraparte AS Contraparte, Volúmenes de ventas.Contrato de contraparte AS Acuerdo de contraparte, Volúmenes de ventas.Cantidad Rotación AS >Cantidad, Rotación de ventas.Coste Rotación AS Costo, PRESENTANDO ENLACE(Volumen de ventas.Contrato de contraparte) COMO Contrato Representación de contraparte, REPRESENTACIÓN DE REFERENCIA( Facturación de ventas.Contraparte) AS Representación de contraparte, RefNomenclature.Representation AS NomenclaturaRepresentación FROM Directorio.Nomenclatura AS Nomenclatura de referencia LEFT JOIN Registro de acumulación.Ventas.Facturación(&P , , , Contraparte = &P3 ) AS Facturación de ventas ON SprNomenclature.Reference = Facturación de ventas.Nomenclatura

Y el resultado correspondiente:

contraparte Tratado Nomenclatura Cantidad Suma
nulo nulo _Prueba1 nulo nulo
LLC "Cuernos y pezuñas" Acuerdo1 Zapatillas 10 1200
nulo nulo Botas nulo nulo
nulo nulo Chanclos nulo nulo
nulo nulo pizarras nulo nulo

Test1 es un grupo en el directorio Nomenclature, en el que se encuentra todo

Se adjunta a la publicación el esquema XML del informe utilizado en la publicación. Creé el esquema en Integrated Automation, pero creo que todo funcionará bien tanto en SCP como en UT 10

resumiendo

Este ejemplo muestra cómo crear su propia configuración de selección en ACS y deshabilitar las creadas automáticamente si está diseñando un esquema con la bandera habilitada Autocompletar.

Si tiene suficiente experiencia para crear circuitos sin usar Autocompletar- entonces este consejo no tiene sentido.

software usado

  • Programa de captura de pantalla SnapOK!
  • editor de archivos XML

¿Para qué se puede utilizar SCD?

Opinión establecida - para informes.

De hecho Las capacidades de ACS van más allá de la creación de informes universales.

Y hoy te mostraremos cómo utilizando ACS, el usuario podrá configurar la selección de datos flexible. Además, esta selección se utilizará para obtener y procesar datos.

¿Para qué tareas sería útil?

vamos a traer ejemplos de configuraciones típicas:

  • Procesamiento "Subir datos al sitio"
  • Formación de la lista de precios.
  • Carga de datos a TSD (terminal de recopilación de datos)
  • Segmentación de bienes, socios
  • Formación de pedidos (clientes, proveedores) según necesidades
  • Planificación de reparaciones en 1C:ERP.

Es decir, la herramienta es útil allí donde se necesite brindar al usuario amplias opciones de selección.

Creación de selección arbitraria de forma controlada utilizando ACS

La lección cubre trabajar con constructor de configuraciones esquemas de composición de datos:

  • Salida de selección en el formulario
  • Vinculación programática del generador de configuraciones y el esquema de diseño
  • Creación de selecciones por defecto en ACS.

Recepción de datos de la base de datos con filtrado para la selección de ACS

El video muestra cómo puede seleccionar datos utilizando la selección establecida previamente en el generador de configuraciones.

Objeto "terrible" usado - ProcesadorOutputResultCompositionDataInCollectionValues.

De hecho, no todo es tan difícil: en 8 minutos resolvemos la tarea.

Almacenamiento de selecciones de ACS en la base de datos

En la lección consideraremos guardar la configuración del enlazador SKD utilizando la tienda de valores.

Descubrimos cómo resolver este problema en la configuración "1C: Manufacturing Enterprise Management 1.3".

¡Disfruto ver! :)

En general, SKD ofrece muchas oportunidades.

Aquí hay algunos "trucos" que ni siquiera tuvimos tiempo de describir en la página del curso.

Si necesitas recoger datos de diferentes fuentes, hay tres opciones.

Puede intentar hacer una consulta "universal" para todos los datos (larga), puede generar datos de varias consultas en un ciclo (estructura rígida e inflexible), o simplemente puede usar ACS y conexión de conjuntos de datos en lugar de una solicitud.

Al mismo tiempo, es importante obtener resultados correctos: esto tiene características si hay varias fuentes

Con la ayuda de SKD, puede simplemente obtener una porción de lo último para cada fecha en el informe.

O, para mayor claridad, - obtener el precio del artículo para cada fecha de venta.

Con la ayuda de SKD es posible organizar salida al informe de todas las fechas para el período, y no solo aquellos para los que había datos en el informe (adición de fechas sin programación, solo con las posibilidades de ACS)

Con la ayuda de ACS, puede organizar agrupaciones anidadas con la adición de períodos (año/trimestre/mes, etc.)

Organice arbitrariamente el informe, por ejemplo, muestre el encabezado de la columna verticalmente y los datos de esta columna horizontalmente.

Permita que el usuario elija la frecuencia con la que se mostrarán los datos en el informe (por año, por trimestre, por mes) - exclusivamente por configuración, sin editar el módulo de informe.

¿Cómo combinar varias condiciones por OR en un informe? No existe tal posibilidad, por ejemplo, en el generador de informes, pero sí en el ACS.

Si muestra datos de resumen en forma de gráfico, debe poder controlar con precisión su apariencia: la visibilidad de los marcadores de una serie, la alternancia de colores de la serie del gráfico, para separar los datos pasados ​​de los datos futuros en el gráfico con una línea vertical, etc

Por supuesto, hay algunos matices a los que debe prestar atención.

Al crear un informe, el desarrollador depuró el texto de la solicitud, pero al usar esta solicitud en un informe en el ACS, el sistema da un resultado incorrecto.

Por lo tanto, es importante poder obtener la consulta que el sistema realmente ejecuta para obtener datos de la base de datos y depurar dicha consulta.

Al agregar detalles al registro de documentos del informe, el sistema a veces produce saldos de apertura y cierre "incorrectos".

Por lo tanto, es importante configurar correctamente los campos en el informe en el ACS para que los saldos se muestren correctamente con y sin detalle en el documento.

El resultado del informe puede cambiar dependiendo de dónde esté configurada la selección por valor de recurso: en el nivel del informe y en el nivel de una agrupación separada, debe monitorear esto.

Si quieres dominar SKD profesionalmente y diario aplica en tu trabajo inscríbete al curso:

Apoyo - 2 meses. Alcance del curso - 34 horas lectivas.

¡No demores tu aprendizaje!