Hogar / Internet / 1s 8 creación a partir de una lista dinámica. Configuración de listas dinámicas

1s 8 creación a partir de una lista dinámica. Configuración de listas dinámicas

Finalmente, el sueño de cualquier "seven-player" se ha hecho realidad. Con qué frecuencia los usuarios del programa 7.7 solicitaron realizar una selección normal de elementos. Para que puedas ver los saldos, precios y establecer filtros. Tuve que idear varios trucos, hasta escribir componentes externos. En 1C 8.2, aparecieron listas dinámicas. Propongo considerar qué es y qué nos pueden dar en 1C 8.3.

Tomemos como base algunos configuración de prueba 1C: "Contabilidad empresarial 3.0". No haremos una selección ahora, solo agregue otro formulario de selección en el libro de referencia "Nomenclatura" y conviértalo temporalmente en el principal:

Cuando se crea, el sistema agregará por defecto un campo de tabla con el tipo "Lista dinámica" al formulario.

Vayamos a sus propiedades y veamos qué hay.

En primer lugar, nos interesa la casilla de verificación "Solicitud arbitraria". Él nos revelará todas las ventajas. lista dinámica. Tendremos la oportunidad de escribir nuestra propia consulta, y con parámetros. Marque la casilla y haga clic en el enlace "Abrir":

Se abrirá una ventana con un código ya hecho para . Hasta ahora, todos los campos del directorio "Nomenclatura" simplemente se enumeran allí.

Obtenga lecciones en video de 267 1C gratis:

Como puede ver, hay un botón de llamada "" y una casilla de verificación que le permite cambiar dinámicamente el contenido de la lista. Es decir, cuando otro usuario cambie algo en el directorio, también cambiará en nuestra lista. Además, hay una pestaña de Configuración, pero la tocaremos más adelante.

Consulta personalizada en lista dinámica

Primero, creemos la consulta que necesitamos con saldos y precios. Más o menos así:

Pestaña de configuración

¡Y ahora lo más delicioso! Vaya a la pestaña "Configuración". E inmediatamente vemos que en la primera pestaña podemos hacer cualquier selección para cualquier campo en la solicitud:

Configuración programática de parámetros de consulta en una lista dinámica 1C 8.3

No olvides que tenemos dos parámetros en la solicitud: "Período" y "Tipo de precio". Debemos pasarlos a la solicitud, de lo contrario habrá un error.

Escribamos estos parámetros en los parámetros del formulario y agreguemos las siguientes líneas en el módulo del formulario:

&OnServerProcedure OnCreateOnServer(Error, StandardProcessing) Lista. Opciones. SetParameterValue("Período", Parámetros. Fecha) ; Lista. Opciones. SetParameterValue("TipoPrecio", Parámetros.TipoPrecio) ; Procedimiento final

Además de los tipos de datos primitivos que se pueden encontrar en cualquier lenguaje de programación, existen tipos únicos en 1C. Cada uno de ellos tiene sus propias propiedades, métodos, funciones, propósitos y matices de uso en el sistema. Uno de estos tipos es una lista dinámica, que simplifica enormemente muchas tareas aplicadas. Es por ello que los desarrolladores deben conocer y saber manejar esta versátil herramienta.

Características de las listas dinámicas en 1C

El propósito de este tipo es mostrar información de cualquier tabla de base de datos, independientemente de su tipo. El mecanismo se creó sobre la base del SKD y tiene capacidades similares. Pero esto no significa que definitivamente tendrá que escribir una consulta en el lenguaje 1C, aunque esta posibilidad existe y debe usarla. Simplemente puede especificar la tabla, la información que le interesa y 1C generará de forma independiente una consulta simple.

Para ver cómo se forma una lista dinámica y qué datos muestra, debe abrir formularios administrados, dónde se encuentra, en el configurador: en la lista de detalles a través de Menú de contexto abra sus propiedades y preste atención al elemento "Solicitud arbitraria". Si no hay una casilla de verificación, el parámetro "Tabla principal" refleja la tabla de la base de datos de donde se toman los datos. De lo contrario, la lista dinámica refleja datos de consulta personalizados, que se pueden ver al abrir la configuración de la lista.

Un esquema de consulta arbitrario se usa mucho más comúnmente, ya que brinda una gran oportunidad para combinar y mostrar una amplia variedad de datos. Muy a menudo, este mecanismo se utiliza para reflejar saldos de existencias, precios de artículos, ingresos, gastos o compras. Debe usarlo con cuidado, ya que el rendimiento puede disminuir con consultas complejas.

Otra propiedad útil de la lista dinámica se abre haciendo clic en la inscripción "Configuración de la lista". Este menú permite, incluso cuando se utiliza un conjunto estándar de campos, hacer que la información sea más accesible y comprensible para los usuarios finales. Ya sea que se trate de una solicitud arbitraria o no, verá una pestaña de "Configuración" donde puede especificar:

  • Selección de una lista dinámica;
  • agrupaciones;
  • clasificación;
  • Decoración.

El uso de parámetros hace que las listas dinámicas sean lo suficientemente versátiles y flexibles. También puede vincularlos a accesorios en un formulario administrado y los datos cambiarán según las opciones seleccionadas por el usuario. El uso de estos mecanismos puede entenderse y apreciarse observando ejemplos de problemas del mundo real.

Como ejemplo, considere el problema de reflejar los restos de la nomenclatura en un formulario administrado. En la práctica real, tales órdenes son bastante comunes en varias configuraciones, y la lista dinámica es ideal como herramienta. Para esta tarea, tendremos que usar una consulta arbitraria, parámetros de lista dinámica y su configuración.

Para mayor claridad, vamos a crear un separado procesamiento externo y coloque una lista dinámica en él. Para implementar nuestros planes, habrá pocas tablas con nomenclatura, por lo que debemos permitir una solicitud arbitraria. En él, describiremos la conexión izquierda del libro de referencia con la lista de nomenclatura y registro de residuos y estableceremos el libro de referencia como tabla principal. Dicho esquema permitirá a los usuarios, mientras trabajan con una lista dinámica, agregar o cambiar la nomenclatura.



Elija una nomenclatura. Nombre. Nombre como nombre, mercancías y costes de venta. Sklad como almacén, mercancías y costes de venta. Ropa como un número de instalaciones de un directorio. Nomenclatura como una nomenclatura de la conexión izquierda del registro. Continuidad. Salidas (& & rural

Dado que el parámetro CurrentDate se utilizó en nuestra solicitud, debemos establecer su valor antes de usar el procesamiento. Para hacer esto, en el módulo de formulario en el procedimiento "En CreationOnServer" mediante un comando estándar, asígnele la función "CurrentSessionDate" con un comando estándar. También necesitamos mostrar una lista dinámica en el formulario de control y cambiar el orden de los campos para mayor claridad. Arrastra los accesorios "Nomenclature Remains" a los elementos del formulario (arriba a la izquierda) y usa las flechas azules para cambiar el orden de los campos en la tabla del formulario.

&En el procedimiento del servidor en la creación En el servidor (Error, Procesamiento estándar) La nomenclatura permanece. Parámetros. Establecer valor de parámetro ("Fecha actual", Fecha de sesión actual ()) Procedimiento final


Ya en esta etapa, podemos abrir nuestro procesamiento externo en 1C y ver que la lista dinámica está funcionando. Podemos mirar los saldos, crear nomenclaturas y grupos, y buscar. A menudo, los clientes solicitan agregar la posibilidad de elegir la fecha en la que verán el saldo. En el caso de un formulario con una lista dinámica, esto se proporciona mediante un campo adicional y la configuración de parámetros que lo utilizan.

Agregamos el atributo "Fecha restante" del tipo "Fecha" y lo transferimos a los elementos del formulario. En el campo eventos, creamos un evento "OnChange" y escribimos el código para configurar el parámetro "CurrentDate" utilizado en la consulta dinámica. Para que al abrir el formulario, el usuario entienda de inmediato en qué fecha ve los saldos, haremos pequeños cambios en el procedimiento OnCreateOnServer.



&OnServerProcedureOnCreateOnServer(Failure, StandardProcessing)RemainsDate = CurrentSessionDate(); Elemento Remains.Parameters.SetParameterValue("CurrentDate", RemainsDate); Fin del procedimiento &En el procedimiento del cliente RemainsDateOnChange(Element) Item Remains.Parameters.SetParameterValue("CurrentDate",RemainsDate); Procedimiento final

Como resultado, nuestro formulario de lista dinámica puede mostrar saldos para cualquier fecha.

Hemos cubierto solo una pequeña parte de las capacidades de este conjunto de herramientas, pero esto ya es suficiente para comprender la conveniencia de este tipo de lista dinámica. Se utiliza un mecanismo similar para muchas tareas, pero la mayoría de las veces se encuentra en configuraciones típicas en formularios administrados:

  1. selección;
  2. Liza.

Para obtener una lista dinámica y su solicitud en formularios administrados típicos, el desarrollador debe abrir el formulario requerido en el configurador. En la sección de atributos, busque el atributo con el tipo de datos "DynamicList" (la mayoría de las veces se selecciona en negrita). Sus propiedades contienen el texto de la solicitud, selecciones y otras configuraciones.

hogar Notas de Looking Glass

21/04/2014 Obtener datos de listas dinámicas

Implementado en la versión 8.3.6.1977.

Hemos implementado la capacidad de obtener de manera fácil y conveniente los datos que se muestran mediante una lista dinámica.

Es posible que necesite los datos de la lista dinámica para imprimirlos en un formulario "específico" no estándar. O con el fin de realizar ciertas acciones con ellos. Por ejemplo, envíe una carta a todas las contrapartes que haya seleccionado en la lista de acuerdo con algunos criterios.

Además, hay una serie de tareas en las que el usuario, además de la lista de elementos, también quiere ver los datos de resumen asociados a esta lista. Por ejemplo, después de haber seleccionado los productos de un determinado grupo de productos y un determinado proveedor, inmediatamente desea ver el número total de dichos productos en la base de datos.

La lista dinámica en sí no puede proporcionarle esta información. El propósito de una lista dinámica es proporcionar una vista rápida de grandes cantidades de datos. Por lo tanto, lee los datos en fragmentos necesarios para mostrarlos en una o dos pantallas. Y “no sabe nada”, por ejemplo, sobre la cantidad total de datos que tiene que leer.

En general, para obtener la información adicional que desea el usuario, debe consultar la base de datos. Exactamente igual que el utilizado en la lista dinámica.

Podrías hacerlo antes. Pero no siempre fue fácil. Después de todo, además del texto de la consulta original, según el cual funciona la lista dinámica, necesitaba conocer todas las selecciones, clasificaciones y otros parámetros que el usuario establece de forma interactiva en la tabla que muestra los datos.

Ahora bien, esta tarea se resuelve fácilmente. La tabla de lista dinámica tiene dos nuevos métodos:

  • GetExecutableDataCompositionSchema();
  • Obtener configuración de composición de datos ejecutables ().

Por lo tanto, obtiene el esquema de composición de datos en sí mismo y, lo que es más importante, todas sus configuraciones, gracias a las cuales el usuario ve la lista exactamente como es. Todo lo que tiene que hacer es componer mediante programación el diseño y enviarlo a una colección de valores (para procesamiento programático) o un documento de hoja de cálculo (para visualización):

Como resultado, obtendrá una estructura (o informe) que contiene columnas y filas que se muestran en una tabla de lista dinámica.

El punto importante es que el diseño y la configuración que obtenga de la tabla de lista dinámica tengan en cuenta, entre otras cosas, la visibilidad de las columnas y la búsqueda aplicada. Dado que las configuraciones se obtienen por separado, puede cambiar la composición de los campos para sus propios fines y obtener, por ejemplo, todas las columnas de la lista, y no solo aquellas que son visibles para el usuario.

Al enviar a un documento de hoja de cálculo, hay otro momento agradable. En general, la apariencia del informe corresponderá a apariencia tablas de listas dinámicas en el momento en que se reciben el esquema y la configuración. Incluyendo el diseño condicional de la mesa. Necesitará algunas acciones adicionales solo si también desea transferir el diseño condicional del formulario al informe.

En el proceso de finalizar configuraciones, cada programador 1C encuentra listas dinámicas.
Una lista dinámica es un objeto de interfaz que se utiliza para mostrar varias listas de objetos de base de datos o datos que no son objetos: entradas de registro.
Por ejemplo, una lista dinámica se usa para mostrar una lista de elementos:

Para demostrar las posibilidades de una lista dinámica, creemos un procesamiento externo, agregue el formulario principal. Agreguemos un nuevo atributo con el tipo "Lista dinámica" al formulario. Vayamos a sus propiedades y veamos qué hay.
Estamos interesados ​​en la propiedad "Solicitud personalizada". Habilitarlo nos mostrará todas las posibilidades de una lista dinámica. Podremos escribir una consulta utilizando casi todas las características del lenguaje de consulta del sistema 1C: Enterprise. Marque la casilla y haga clic en el enlace "Abrir":

De forma predeterminada, nuestra lista mostrará una lista de artículos con un saldo total para todos los almacenes. Para implementar dicha lista, agregue la siguiente consulta:


Como tabla principal, seleccionaremos "Directorio. Nomenclatura", esto nos permitirá trabajar con una lista dinámica, como con una lista de nomenclatura: agregar, cambiar, marcar para eliminar elementos del directorio. Del mismo modo, poner la mesa principal no oportunidad asequible Lectura dinámica de datos: esto significa que la muestra se hará en porciones, según sea necesario.
A continuación, necesitamos crear elementos de formulario para nuestra lista:

Si intentamos ejecutar nuestro procesamiento de esta forma, obtendremos un error:


Para eliminarlo, debe configurar el valor del parámetro "Período". Para hacer esto, puede usar el método "SetParameterValue" de la colección "Parameters" de la lista dinámica. El método toma dos parámetros:
. "Parámetro" - Tipo: Cadena; Parámetro de composición de datos. El nombre del parámetro o parámetro de composición de datos cuyo valor se va a establecer;
. "Valor" - Tipo: Arbitrario. El valor a establecer.
Se puede llamar en el controlador "OnCreateOnServer" del formulario:

¿Tienes alguna duda, necesitas la ayuda de un consultor?


Démosle al usuario la posibilidad de cambiar el período para recibir saldos. Para hacer esto, agreguemos el atributo y el elemento de formulario "Fecha" asociado con él:


En el controlador "OnChange" del elemento de formulario "Date", llame al método "SetParameterValue", pasando el valor del atributo asociado como valor. Del mismo modo, cambiaremos el procedimiento "On CreationAtServer" del formulario. Dado que el método está disponible en el cliente, no es necesario llamar al servidor:


Ahora, cuando cambie la fecha, los saldos se actualizarán automáticamente:




Suponga que los usuarios desean ver los saldos actuales o los recibos proyectados. Consideremos una de las opciones de implementación. Agreguemos un atributo de forma booleana y un botón de radio asociado:


Al cambiar el valor del interruptor, cambiaremos el texto de la solicitud. Para ello, utilizaremos el controlador de eventos "OnChange" del elemento de formulario "DisplayQuantityToReceipt". Necesitamos cambiar la propiedad "QueryText" de la lista dinámica según el valor del atributo. Dado que esta propiedad no está disponible en el cliente, se requiere una llamada al procedimiento del servidor:


El resultado de los cambios realizados: