Contactos

1 s lista dinámica agregando una línea. ¿Tiene alguna pregunta o necesita ayuda de un consultor?

Imprimir (Ctrl+P)

lista dinámica

1. Información General

Una lista dinámica es un tipo de datos especial que le permite mostrar información arbitraria de tablas de bases de datos en un formulario. Para hacer esto, debe especificar la tabla desde la cual desea mostrar datos o describir la selección resultante en un lenguaje de consulta.
El mecanismo se basa en un sistema de composición de datos y proporciona capacidades para ordenar, seleccionar, buscar, agrupar y formatear condicionalmente los datos recibidos. En este caso, la fuente de datos es una solicitud, que el sistema genera automáticamente (en función de los datos especificados) o el desarrollador la escribe manualmente.

Arroz. 1. Opciones para crear una lista dinámica

Al crear atributos de formulario del tipo Lista dinámica un desarrollador puede elegir dos formas de realizar una consulta de datos:
● Al especificar la tabla principal: en este caso, solo necesita especificar la tabla (propiedad de la tabla principal) de la cual desea recibir datos y el sistema generará automáticamente una consulta para los datos (consulte la parte derecha en la Fig. 1).
● Generar una solicitud manualmente; para ello, debe configurar la propiedad Solicitud personalizada (consulte el lado izquierdo de la Fig. 1). Después de esto, estará disponible la generación manual de una solicitud para obtener datos de la base de datos.
Una consulta puede recuperar datos de varias tablas, por lo que puede especificar una tabla principal. Esto es para que la lista dinámica pueda determinar qué datos son primarios y cuáles son secundarios, y pueda seleccionar y mostrar información correctamente, así como proporcionar comandos estándar. Sin embargo, si es imposible determinar la tabla principal en la consulta, entonces no se puede especificar, pero luego
la lista dinámica no proporcionará comandos relacionados con la tabla principal. Además, en este caso (sin especificar la tabla principal), la eficiencia de obtener datos mediante una lista dinámica se reducirá significativamente.
Para mejorar el rendimiento, se recomienda que cualquier unión utilizada en una consulta personalizada solo para obtener datos adicionales se haga opcional mediante el uso de una extensión de lenguaje de consulta del sistema de composición de datos.
Para una lista dinámica, que es el atributo principal del formulario, es posible establecer valores de selección usando un parámetro de formulario. Selección. Para ello es necesario que el nombre de la propiedad de la estructura ubicada en el parámetro Selección,
coincidió con el nombre del campo de selección de lista dinámica. En este caso, el valor de la propiedad de la estructura se establecerá como el valor correcto del elemento de selección. Si se pasa una matriz, una matriz fija o una lista de valores como valor de un elemento del parámetro Selección de un formulario de lista dinámica, entonces se agrega a la selección una condición con la opción En lista, en el valor correcto de los cuales se coloca una lista de valores (a los que se convierten la matriz y la matriz fija).
Una consulta arbitraria en una lista dinámica puede ser una consulta en la que se utiliza un parámetro para generar el valor de un campo, por ejemplo:

ELEGIR
ELECCIÓN
CUANDO Entrega.Coeficiente = 1 ENTONCES &Presentación
DE LO CONTRARIO Entrega. Coeficiente
Finalizar como relación
DE

Además, si el tipo del valor del parámetro difiere del tipo del atributo del objeto (por ejemplo, Accesorios1 tiene tipo Número, y el valor del parámetro es tipo Línea), luego, para mostrar el campo correctamente, debe convertir explícitamente el valor del parámetro al tipo deseado:

ELEGIR
ELECCIÓN
CUANDO Entrega.Coeficiente = 1 ENTONCES EXPRESS(&Representación AS String(100)) ELSE Entrega. Coeficiente
Finalizar como relación
DE
Documento.Entrega de Productos CÓMO Entregar

Si el campo mediante el cual se establece la selección está deshabilitado mediante opciones funcionales, entonces la selección mediante dicho campo no se instala, incluso si el valor de selección se pasa como parámetros de formulario o enlaces de parámetros de selección.
Usando la propiedad Lectura dinámica de datos, indica a una lista dinámica la necesidad de leer datos en pequeñas porciones.
(Para obtener más detalles sobre las formas de obtener datos utilizando una lista dinámica y el almacenamiento en caché de datos, consulte a continuación). Independientemente de este atributo, se aplican las siguientes condiciones:

● Si el modo de visualización está configurado en lista jerárquica, sólo se leerán los datos del grupo actual y los datos de todos los elementos principales (sin los secundarios).
● Si se configura el modo de vista de árbol, sólo se leerán los datos de los nodos de árbol abiertos.
● No se admite la carga única de datos de listas dinámicas si se establece la navegación jerárquica (la propiedad de visualización está establecida en Árbol) y la visualización inicial del árbol está configurada en Expandir todos los niveles. Para obtener datos se realizarán tantas solicitudes al servidor como nodos haya en la lista mostrada.
Dentro de una única recuperación de datos, una lista dinámica reutiliza tablas temporales creadas previamente si se cumplen las siguientes condiciones:
● La consulta por lotes de lista no tiene consultas después de la consulta por lotes principal.
● La composición de las tablas temporales y los campos que contienen no cambia desde la ejecución anterior de la solicitud por lotes.

En su trabajo, la lista dinámica utiliza los valores de las siguientes propiedades de los detalles del objeto de metadatos:
● formato,
● formato de edición,
● pista,
● signo para resaltar valores negativos,
● máscara,
● señal de modo multilínea,
● signo de edición avanzada,
● modo contraseña.
Al visualizar y editar la selección y los parámetros del sistema de composición de datos, se utiliza el formato de edición del campo correspondiente.

2. Limitaciones y características

Al configurar la selección en una lista dinámica, recuerde que la selección no afecta a los grupos si el modo de visualización de la lista dinámica es Lista jerárquica o Árbol. Por "grupos" nos referimos a un elemento de un directorio o plan de tipos de características cuya propiedad ThisGroup está establecida en True.
Se aplican calificaciones aplicadas automáticamente mediante una lista dinámica a los detalles estándar Propietario, Padre, Fecha, Período y Este grupo.
utilizando herramientas estándar del sistema de composición de datos. La selección, aplicada automáticamente mediante una lista dinámica a los campos clave, se puede aplicar tanto por medios estándar del sistema de composición de datos como agregando condiciones directamente al texto de la solicitud. EN a los campos de la tabla principal. Como resultado de la aplicación de selecciones mediante herramientas de diseño, se pueden aplicar tanto en consultas anidadas como en parámetros de tablas virtuales.

Al desarrollar listas dinámicas, se recomienda probar todas las listas dinámicas con consultas personalizadas. Durante el proceso de verificación, debe asegurarse de que si una consulta de lista contiene consultas anidadas o tablas virtuales, y en ellas los campos con alias que coinciden con los alias de los detalles estándar Propietario, Padre, Fecha, Período, Este grupo o campos clave están disponibles para selección, entonces estos campos son válidos y corresponden a los detalles estándar con los que coincide su apodo. Si este no es el caso, deberá cambiar la solicitud para que coincidan o
el apodo era diferente.
Si elige generar una solicitud manualmente, se imponen algunas restricciones a la solicitud:
● No se admite el uso de la instrucción FIRST en una consulta de lista dinámica. Si necesita utilizar una selección limitada por la cantidad de registros en una lista dinámica, debe reelaborar la solicitud para generar una lista dinámica de tal manera que el contenido real de la solicitud se coloque en una subconsulta y limite la cantidad de registros. recibido en esta subconsulta. También puede utilizar una tabla temporal en lugar de una subconsulta.
● No se admiten la selección, clasificación y agrupación:

  • Según los detalles de las partes tabulares.
  • Ver campos.
  • Campo Versión de datos.
  • Campo Nombre de datos predefinido.
  • Campo de tipo tabla de plan de cuentas.
  • Campo Tipo de Movimiento de la tabla de registro de acumulación.
  • Campo TypeValues ​​de la tabla del plan de tipo de característica.
  • Tipo de campo Tipo;
  • Campo de tipo String (longitud ilimitada).
  • Campo de tipo BinaryData.

● No se admite la clasificación y agrupación por campos de subconto.<НомерСубконто>y VerSubconto<НомерСубконто>Tablas de MovimientosSubconto del registro contable.
● No se admite la agrupación por campos que son expresiones de lenguaje de consulta que contienen funciones agregadas.
● Cuando se selecciona la tabla principal, la consulta de la lista dinámica tiene las siguientes restricciones:

  • No se admiten uniones.
  • La sección ORDER BY no es compatible. Debe utilizar una consulta sin una tabla principal o establecer el orden necesario a través de la configuración de la lista dinámica.

● Si una lista dinámica se muestra como una lista jerárquica o un árbol, entonces una entrada no se mostrará como una lista dinámica a menos que se muestre al menos uno de los padres de esa entrada. En otras palabras, para mostrar un elemento de una lista jerárquica, una lista dinámica también debe mostrar todos los padres de ese elemento hasta la parte superior de la lista. En este caso, por la parte superior de la lista nos referimos a
el elemento raíz del objeto jerárquico mostrado por una lista dinámica, o el elemento establecido como propiedad ParentTopLevel de una extensión de tabla de formulario para una lista dinámica.

No se admite el uso de las siguientes tablas como tabla principal de una lista dinámica:

● Una tabla que no tiene una clave que identifique de forma única cada registro de la tabla (una referencia para las tablas de objetos y una clave de registro para las tablas de registros). Sin embargo, las siguientes tablas se pueden configurar como tabla principal de una lista dinámica (a pesar de no tener clave):

● Tabla de subcontos del registro contable;
● todas las tablas virtuales del registro contable, excepto la tabla Subconto de Movimientos;
● tablas de valores constantes (incluida la tabla de Constantes);
● tablas de fuentes de datos externas sin campos clave;
● tablas cúbicas de fuentes de datos externas;
● tablas de registro de acumulación:

  • mesa de revoluciones;
  • tabla de equilibrio;
  • cuadro de facturación y saldos.

● tablas de registro de cálculo:

  • tabla de período de validez real;
  • datos de programación;
  • datos básicos.

● Tablas de partes tabulares de objetos;
● Cambiar tablas de registro (utilizadas en mecanismos de intercambio de datos);
● Tablas de secuencia;
● Tablas de conversión (utilizadas en mecanismos de liquidación periódica).
● Una tabla que se utiliza en una consulta sólo en una combinación externa.

En otras palabras, una lista dinámica con la tabla principal especificada funcionará correctamente si, como resultado de la ejecución de la consulta,
especificada como fuente de datos, el número de filas obtenidas de la tabla principal no aumenta (teniendo en cuenta la selección impuesta). Si, como resultado de la ejecución de una consulta, aumenta el número de filas obtenidas por la consulta de la tabla principal, esto provocará una violación de la unicidad de la clave de los registros de la tabla que se muestra en la lista. En este caso, debe deshabilitar el uso de la tabla de lista dinámica principal.
Al trabajar con una lista dinámica, debe tener en cuenta los derechos de acceso a los detalles que muestra la lista:
● Los datos de las columnas de la lista dinámica que están marcadas con la propiedad Usar siempre, pero para las cuales el usuario actual no tiene el derecho de Ver, no se transmiten al lado del cliente. Acceso a los datos de dichas columnas (usando la propiedad CurrentData y el método RowData())
No es posible en el lado del cliente.
● Si el usuario actual no tiene el derecho de Ver en un campo clave de una lista dinámica, la recuperación de datos de esa lista dinámica genera un error de infracción de acceso.
Para una lista dinámica que muestra una lista de enumeración, no hay ninguna opción para personalizar la lista de forma interactiva.
La composición de las columnas y la configuración de la lista dinámica se asocian con los campos de consulta mediante alias de los campos de selección. Si un alias no se especifica explícitamente en una consulta para un campo de selección y el campo es del sistema, entonces el nombre del campo para la versión en inglés del idioma integrado se utiliza como alias.
La relación especificada significa que al cambiar (o especificar explícitamente un alias para un campo para el cual se usó un alias automático)
alias del campo de consulta que genera los datos de la lista dinámica, la configuración de los atributos de la lista dinámica se perderá, los elementos del formulario "perderán" los detalles mostrados, la configuración de la lista dinámica se volverá incorrecta, etc.
Si la fuente de datos de una lista dinámica es una tabla (normal o virtual), que le permite establecer una selección por período, entonces si el usuario establece el período de visualización en dicha lista dinámica (comando Establecer intervalo de fechas...),
los límites del período especificado se establecerán como valores de selección o parámetros de tabla virtual. Si mediante extensión de idioma
consultas para el sistema de composición de datos, los nombres de los parámetros de la tabla virtual se especificaron explícitamente: los parámetros con el especificado
nombres. Tablas en las que es posible controlar el plazo de visualización o tratamiento de datos:
● tablas de registro (principal o virtual), para las cuales es posible seleccionar por período (para el registro de cálculo - por período de registro);
● tablas principales de documentos, procesos comerciales y tareas;
● tablas principales de diarios documentales;
● tablas de secuencia principal, tablas de límites de secuencia.
El parámetro de consulta de lista dinámica puede ser una matriz o una lista de valores. Sin embargo, si el parámetro es una lista de valores, solo se utilizará el primer valor de la lista como valor de selección. Si una lista dinámica utiliza una consulta con parámetros, la configuración inicial de los valores de los parámetros debe realizarse en el controlador OnCreateOnServer.
Al mostrar datos de listas dinámicas, tenga en cuenta los siguientes puntos:
● Cuando cambia mediante programación las propiedades de una lista dinámica, los paneles de comando asociados con la lista no se vuelven a llenar automáticamente.
con esta lista dinámica.
● Si se agrupan varios campos en un grupo con el modo de agrupación en una celda y en los campos agrupados hay un campo que se muestra como una casilla de verificación, entonces esta casilla de verificación siempre se mostrará primero en la celda resultante (a la izquierda de la texto).
En una lista dinámica, al determinar el tipo de datos para campos cuyas expresiones incluyen parámetros, campos o literales, el tipo resultante está determinado por los tipos de campos y literales. Si el tipo de valor del parámetro no está incluido en el tipo de datos resultante, su valor se truncará.
Por ejemplo, en el siguiente ejemplo el campo será de tipo Número.

ELECCIÓN
CUANDO ES MENTIRA
ENTONCES 5
DE LO CONTRARIO
&Parámetro
FIN

Si establece el parámetro Parámetro en un valor de otro tipo, la lista dinámica para ese campo recibirá el valor 0 (el valor predeterminado para el tipo Número).
Si en tal situación necesita seleccionar un parámetro de un tipo diferente, se recomienda utilizar la construcción del lenguaje de consulta. EXPRESAR. Por ejemplo,
Si en el ejemplo anterior necesita pasar una cadena de no más de 100 caracteres al parámetro, entonces debe reemplazar la indicación simple del parámetro con una expresión con una conversión de tipo explícita:

ELECCIÓN
CUANDO ES MENTIRA
ENTONCES 5
DE LO CONTRARIO
EXPRESS(&Parámetro AS String(100))
FIN

Si el texto arbitrario de una solicitud de lista dinámica usa parámetros en las expresiones de los campos de selección, debe indicar explícitamente el tipo de parámetros usando la construcción EXPRESAR. Por ejemplo, en lugar de &Nomenclatura AS Nomenclatura usar
EXPRESS(&Nomenclatura AS Directorio.Nomenclatura) AS Nomenclatura. De lo contrario, buscar a través de la barra de búsqueda puede funcionar.
incorrectos o producir errores.

3. Métodos para recuperar y almacenar en caché datos con una lista dinámica

Al obtener datos para mostrar, una lista dinámica utiliza uno de tres métodos:
1. La lectura de la base de datos se realiza en fragmentos con una cantidad de elementos de datos ligeramente mayor que la cantidad de filas que muestra la lista simultáneamente (pero no menos de 20). Los datos no se almacenan en caché en el servidor.
2. La lectura de la base de datos se realiza en páginas de 1000 elementos de datos. Los datos se están almacenando en caché en el servidor. Los datos jerárquicos se almacenan en caché: no se almacenan en caché más de 2 páginas de elementos para cada padre. No se almacenan en caché más de 20 páginas de elementos por lista dinámica. El almacenamiento en caché se habilitará mediante una lista dinámica para las siguientes tablas:
● Criterios de selección;
● Todas las tablas del registro contable, excepto la tabla principal y la tabla Subconto de Movimientos;
● Todas las tablas de registro de acumulación, excepto la tabla principal;
● Todas las tablas del registro de información, excepto la tabla principal;
● Todas las tablas del registro de cálculo, excepto la tabla principal;
● Tabla virtual de Tareas por Ejecutor;
● Tablas de fuentes externas sin claves;
● Cubos de fuentes externas.

3. La lectura de la base de datos se realiza en páginas de 1.000 elementos. La primera parte equivale a 1 página. Cada parte posterior aumenta en 1 página (cuando se llega al final de la muestra anterior). Cuanto más se acerca el “punto de vista” al final de los datos mostrados, más grande se lee la muestra de la base de datos y eventualmente llega a ser igual a todos los datos mostrados. Los datos se están almacenando en caché en el servidor. El número máximo de entradas en la caché y en la lista dinámica es 1.000.000.
Dependiendo de lo que se seleccione en la tabla principal de la lista dinámica y del valor que tome la propiedad de lectura dinámica, se utiliza uno u otro método de lectura de datos:

● Una de las siguientes tablas se especifica como valor de la propiedad Tabla principal: plan de intercambio, directorio, lista de documentos, diario de documentos, plan de tipos de características, plan de cuentas, plan de tipos de cálculo, proceso de negocio, tarea, tabla de puntos del proceso de negocio:



● Como valor de la propiedad Tabla principal se especifica una de las siguientes tablas: la tabla principal del registro de información, el registro de acumulación, el registro contable, el registro de cálculo, la tabla virtual del registro contable Subconto de Movimientos:

● Propiedad de lectura dinámica:
● Instalado: se utiliza el método 1 (la descripción de los métodos se proporciona arriba).
● Restablecer: se utiliza el método 2 (la descripción de los métodos se proporciona arriba).

● La propiedad Tabla principal contiene la tabla de criterios de selección o tabla de tareas por ejecutor (Tasks By Performer):
● Clave que identifica una fila de la tabla: Enlace.

● La propiedad Tabla principal especifica la tabla virtual del registro de información SliceFirst o SliceLast:
● Clave que identifica una fila de la tabla: RecordKey.
● La propiedad de lectura dinámica no es aplicable.
● Se utiliza el método 2 (la descripción de los métodos se proporciona más arriba).

● La propiedad de la tabla principal se establece en una de las tablas de registros virtuales, excepto las enumeradas anteriormente:

● La propiedad de lectura dinámica no es aplicable.

● La propiedad de la tabla principal no se especifica; se utiliza una consulta arbitraria:
● Clave que identifica una fila de la tabla: Número.
● La propiedad de lectura dinámica no es aplicable.
● Se utiliza el método 3 (la descripción de los métodos se proporciona más arriba).

Para su visualización, los datos se transfieren al cliente en porciones, cuyo tamaño es similar al tamaño de la porción en el primer método de lectura de datos (descrito al principio de esta sección).
Cuando crea un formulario que contiene una lista dinámica, inicialmente se pasan al cliente 45 elementos de datos para cada lista dinámica visible (si la lista tiene más de 45 elementos). Si la lista dinámica muestra más de 45 filas, se realizará una llamada adicional al servidor cuando se abra el formulario para recuperar los elementos de datos que faltan.

4. Configuración de lista dinámica

Configuración de la lista de propiedades: al hacer clic en el hipervínculo Abrir se abre un formulario para configurar la visualización de una lista dinámica. La configuración de una lista se realiza de la misma manera que operaciones similares en un sistema de composición de datos.


Arroz. 2. Estilo condicional de una lista dinámica

Al configurar una lista dinámica en la configuración, el desarrollador de la aplicación tiene la oportunidad de hacer lo siguiente:
● establecer los campos por los que desea ordenar;
● describir la selección de datos en la lista;
● especificar configuraciones de apariencia condicional;
● establecer los campos por los cuales desea agrupar los datos.
Tiene sentido configurar la clasificación a cargo del desarrollador si no está satisfecho con la clasificación predeterminada instalada por el sistema.

CONSEJO. Debe recordarse que una mala selección de los campos de clasificación (así como la selección y agrupación de datos) afecta negativamente la eficiencia del muestreo dinámico.
Desde el punto de vista de un desarrollador de aplicaciones, la configuración de la lista dinámica consta de varias partes que están interconectadas. La propiedad principal a través de la cual puede administrar la configuración de una lista dinámica es Configuración del vinculador. Este objeto contiene tres conjuntos de configuraciones que, cuando se ejecuta el sistema, determinan la configuración final aplicada a la lista dinámica:
● Configuración: configuración creada en el modo Configurador. La propiedad Order de la lista dinámica proporciona acceso rápido a la propiedad Settings.Order del generador de configuraciones de la lista dinámica, por lo que las siguientes construcciones son equivalentes:
Lista.Orden y Lista.SettingsLinker.Settings.Order;
● Configuración de usuario: estas son configuraciones que cambia el usuario en el modo 1C:Enterprise;
● Configuraciones fijas: estas configuraciones se configuran desde el idioma integrado. Esta propiedad también contiene valores de selección que se transfieren al formulario utilizando sus parámetros. Las propiedades de la lista dinámica Selección, Opciones y Apariencia condicional brindan acceso rápido a las configuraciones fijas del generador de configuraciones de la lista dinámica. En otras palabras, estas llamadas son equivalentes:
List.Settings Composer.FixedSettings.Selection y List.Selection.
Al crear la configuración final para una lista dinámica, varias opciones de configuración se combinan de la siguiente manera:
● Si algún tipo de configuración está completamente marcada como personalizada, la configuración resultante incluirá la configuración personalizada.
(List.ComposerSettings.UserSettings). Además, si algún elemento de configuración está marcado como no disponible, esta configuración se colocará en la configuración resultante de la propiedad List.Settings Composer. Ajustes.
● Si algún tipo de configuración está marcada como personalizada, no completamente, sino elemento por elemento, entonces:
● Los elementos marcados como personalizados se incluirán en la configuración resultante de la propiedad List.SettingsComposer.CustomSettings.
● Los elementos marcados como no disponibles se incluirán en la configuración resultante de la propiedad List.SettingsComposer.Settings.
● Las configuraciones fijas (List.SettingsComposer.FixedSettings) se agregan a las configuraciones resultantes "tal cual". Al mismo tiempo, es inaceptable que las configuraciones fijas y de usuario contengan configuraciones con el mismo nombre, por ejemplo, una selección con el mismo valor izquierdo en la condición.

Si la configuración de la lista dinámica contiene configuraciones que están deshabilitadas mediante opciones funcionales, estas configuraciones se eliminarán de la lista de configuraciones disponibles cuando se recuperen los datos de la lista dinámica.
El control de qué configuraciones estarán disponibles para el usuario y cuáles no se realiza en la ventana de configuración de la lista dinámica.


Arroz. 3. Controlar la inclusión en la configuración del usuario.

La casilla de verificación en la parte inferior de la ventana (ver Fig. 3) es responsable de colocar todo el tipo de configuraciones en la configuración (normal o rápida). Esta función está disponible para selección, ordenación, agrupación y condicionalización. Si las configuraciones se especifican con el modo de edición de Selección rápida, entonces en la propiedad Grupo de configuraciones de usuario de la tabla del formulario que muestra la lista dinámica, debe especificar un grupo vacío del formulario en el que se encuentran los elementos asociados con las configuraciones rápidas de usuario de se ubicará la lista dinámica. Si no se especifica el grupo, la configuración rápida de usuario no se mostrará en el formulario. También es posible invocar explícitamente la creación de configuraciones personalizadas usando el lenguaje integrado usando el método CreateCustomSettingsFormItems() de la extensión de lista dinámica.
También es posible elegir si desea colocar elementos de configuración específicos en la configuración del usuario. Esta característica está disponible para selección y elementos de diseño condicionales (ver Figura 3).

Si necesita cargar alguna configuración especial al abrir una lista dinámica, puede hacerlo de dos maneras:
● Usando el parámetro UserSettings del formulario de lista dinámica. Los datos contenidos en este parámetro se colocarán en la configuración de la lista dinámica del usuario.
● Usando el parámetro de formulario de lista dinámicaUserSettingsKey. Si especifica este parámetro al abrir un formulario, la configuración del usuario ubicada en el almacenamiento de configuración con la clave especificada se cargará en la lista dinámica, que es el atributo principal del formulario.

5. Buscar en una lista dinámica

Una lista dinámica ubicada en el formulario brinda la capacidad de buscar interactivamente los datos mostrados. La búsqueda se puede realizar utilizando las siguientes herramientas: barra de búsqueda, cuadro de diálogo de búsqueda, búsqueda del valor actual, uso del historial de búsqueda y configuración del período (para listas dinámicas que muestran documentos). El resultado de la búsqueda es un conjunto limitado de registros.
una lista dinámica (de las disponibles para un usuario determinado) que coinciden con los criterios de búsqueda.
Para controlar las capacidades de búsqueda de una lista dinámica, hay tres propiedades de tabla en el formulario administrado que muestra la lista dinámica:
● Posición de la cadena de búsqueda: determina la posición de la cadena de búsqueda. Puede tomar los siguientes valores: Automático, Barra de comandos, Ninguno, Superior, Inferior.


Arroz. 4. Buscar cadena en una lista dinámica

Si el valor de esta propiedad se establece en Panel de comando, entonces la cadena de búsqueda se mostrará en el panel de comando del formulario (si la lista dinámica es el atributo principal del formulario) o en el panel de comando asociado con la lista dinámica. La barra de búsqueda ubicada en la barra de comandos siempre se presiona en el borde derecho de la barra de comandos (junto con los botones ubicados a la derecha de la barra de búsqueda).
Si la propiedad está establecida en No, entonces la cadena de búsqueda no estará en el formulario y cuando comience a escribir la cadena de búsqueda, se abrirá un cuadro de diálogo.
Si la propiedad está configurada en Superior, la barra de búsqueda se ubicará entre la barra de comandos de la lista y la tabla que muestra la lista dinámica. Si la propiedad se establece en Abajo, la cadena de búsqueda se colocará inmediatamente después de la tabla que muestra la lista dinámica.


● Si la propiedad Modo de compatibilidad está establecida en No usar o es anterior a la Versión 8.3.4, el valor es Panel de comandos.
Vaya a la línea de búsqueda de la siguiente manera:
● Pulsando la combinación de teclas Ctrl+F;
● Ratón;
● Cuando comienza a escribir en una lista dinámica (teniendo en cuenta el valor de la propiedad SearchOnTyping de la lista dinámica).
● Posición del estado de vista: describe dónde se mostrará el estado de la vista: qué campos se buscaron y qué valores.
buscado en todos los campos. Puede tomar los siguientes valores: Auto, Ninguno, Superior, Inferior


Arroz. 5. Estado de búsqueda en lista dinámica

Si la propiedad se establece en No, el estado de la vista no estará presente en el formulario. Como resultado, será posible determinar si la búsqueda se ha completado o no solo por la disponibilidad del botón Cancelar búsqueda.
Si la propiedad se establece en Superior, el estado de la vista se ubicará entre la barra de comandos de la lista y la tabla que muestra la lista dinámica. Si la propiedad se establece en Inferior, el estado de la vista se colocará inmediatamente después de la tabla que muestra la lista dinámica.
Si el formulario se creó en 1C:Enterprise versión 8.3.4 y anteriores, la propiedad se establece en No. Si el formulario se creó en 1C:Enterprise versión 8.3.5 y anterior, la propiedad está configurada en Auto. El valor real del inmueble en este caso se determinará de la siguiente manera:
● Si la propiedad Modo de compatibilidad está configurada en la Versión 8.3.4 (y anteriores): valor No;
● Si la propiedad Modo de compatibilidad está establecida en No usar o es anterior a la Versión 8.3.4: valor Superior;
● Posición de control de búsqueda: determina dónde aparecerá el botón de control de búsqueda. El botón abre un menú que contiene la siguiente información: comandos Buscar por valor actual, Búsqueda avanzada, Cancelar búsqueda, Establecer período (para listas de documentos y diarios) e historial de consultas de búsqueda (últimas 5 consultas). La propiedad puede tomar los siguientes valores: Automático, Ninguno, Panel de comandos.


Arroz. 6. Gestionar la búsqueda en una lista dinámica

Si la propiedad está configurada en No, entonces el botón de control de búsqueda no estará en el formulario (pero los comandos estarán disponibles usando el menú Más). El valor de la propiedad Barra de comandos coloca un botón en la barra de comandos asociada con una tabla que muestra una lista dinámica.
Si el formulario se creó en 1C:Enterprise versión 8.3.4 y anteriores, la propiedad se establece en No. Si el formulario se creó en 1C:Enterprise versión 8.3.5 y anterior, la propiedad está configurada en Auto. El valor real del inmueble en este caso se determinará de la siguiente manera:
● Si la propiedad Modo de compatibilidad está configurada en la Versión 8.3.4 (y anteriores): valor No;
● Si la propiedad Modo de compatibilidad está establecida en No usar o es anterior a la Versión 8.3.4, el valor es Panel de comandos;
Si hay varios paneles de comando en un formulario, cuya fuente de comandos es una tabla del formulario administrado (que muestra datos de lista dinámica), entonces la línea de búsqueda y el botón de control de búsqueda se ubicarán en un solo panel de comando:
● O en la barra de comandos de la propia lista dinámica (si tiene habilitada la función de autocompletar)
● O en cualquiera de los restantes paneles de mando.

Veamos las características del uso de la búsqueda en una lista dinámica:
● Para que la búsqueda sea cómoda de usar (incluso en términos de rendimiento), debe habilitar la búsqueda de texto completo para todos los objetos de configuración que se pueden usar como tabla principal de la lista dinámica. Además, la búsqueda de texto completo debe incluir todos los detalles de los objetos de configuración que pueden mostrarse en una lista dinámica y para los cuales puede ser necesaria una búsqueda.
Si un objeto se excluye de la búsqueda de texto completo, entonces el mecanismo de búsqueda en cuestión funcionará, pero el rendimiento de dicha búsqueda será extremadamente bajo. No se recomienda utilizar la búsqueda en objetos que no estén indexados mediante la búsqueda de texto completo.
● La solución de la aplicación debe tener una tarea rutinaria que actualice periódicamente el índice de búsqueda de texto completo.

● La búsqueda no se realiza en todas las columnas de la lista dinámica (y del objeto de configuración), sino sólo en aquellas columnas que se muestran en la tabla.
● La búsqueda en una lista dinámica por campos de tipos de referencia con representación arbitraria se realiza por campos que se utilizan para
formación de representaciones (ver aquí). Los campos incluidos en la vista se obtienen teniendo en cuenta el manejador ViewFieldGettingProcessing() del objeto correspondiente.
● Para listas dinámicas con una tabla principal especificada, se utiliza la búsqueda de texto completo en la tabla principal. Todos los enlaces no indexados de la tabla principal se agregarán a los resultados de búsqueda de texto completo. El resultado de una búsqueda de texto completo de la tabla principal se utiliza como una selección basada en campos clave. También se realiza una búsqueda de texto completo en los campos que se muestran en la lista de otras tablas (si el campo y el objeto de configuración utilizan la búsqueda de texto completo). Sin la búsqueda de texto completo habilitada, los datos pueden ser
encontrado, pero la búsqueda en sí será muy lenta.
Si se produce un error al intentar realizar una búsqueda de texto completo, la búsqueda se realizará sin aplicar la búsqueda de texto completo.
Por ejemplo, esto puede suceder cuando se busca una letra y una gran cantidad de líneas en la base de información que comienzan con esta letra.
● Si se utiliza una selección con el tipo de comparación Igual para un campo en la tabla principal de una lista dinámica, al realizar una búsqueda de texto completo, se agregará un valor de selección a la consulta de búsqueda para esta tabla.
● La cadena de búsqueda se divide en palabras. Esta partición se realiza de acuerdo con las siguientes reglas:
● La línea se divide utilizando caracteres de espacio y tabulación como delimitadores.
● Luego se procesa cada fragmento resultante:
● Si el fragmento es una representación de fecha (con o sin hora) basada en la configuración regional de la sesión actual, entonces la palabra es el fragmento.
● De lo contrario, el fragmento se divide aún más utilizando los caracteres “,.-/\” como delimitadores. En este caso, cada fragmento resultante de la cadena se toma como una palabra.

● Para cada palabra, se forma su propio conjunto de condiciones, que se combinan "mediante OR". Este conjunto de condiciones se genera si una búsqueda de texto completo de una palabra determinada en la tabla de la que se obtuvo este campo arrojó al menos un objeto, o no se utilizó una búsqueda de texto completo para este campo. Las condiciones se forman de la siguiente manera:
● Para un campo de tipo Cadena, la condición es Nombre de campo LIKE %Palabra%.
● Para un campo de tipo Número, la condición tiene el formato Nombre del campo=Valor, donde Valor es una palabra convertida al tipo Número. Si no se puede realizar el reparto, no se realizará la búsqueda de campo.
● La palabra se busca como una subcadena en la representación booleana predeterminada definida para la sesión actual. Si la palabra buscada se encuentra en una vista, busca el valor correspondiente a la vista en la que se encontró la palabra. En este caso, la búsqueda no utiliza vistas especificadas mediante la propiedad Formato de elemento de formulario.
● Para un campo de tipo Fecha, la condición es similar a NombreDeCampo>=IniciodelDía(Palabra) ANDNombreDeCampo<=КонецДня(Слово). Если Слово подобно дате, в которой год
indicado por uno o dos dígitos, el año se reducirá al siglo actual y este valor se agregará a la condición de búsqueda.
● Para los campos de referencia, se realiza una búsqueda en los campos utilizados para formar la vista de referencia. En cada uno de estos campos busque
realizado de acuerdo con las reglas descritas anteriormente. La búsqueda no utiliza campos utilizados para formar una representación de datos personalizada.
El conjunto de condiciones para cada palabra se combinan “Y”.
● Para valores con ceros a la izquierda, puede buscar la cadena con ceros a la izquierda o la cadena especificada sin ceros a la izquierda.
● Si una lista dinámica muestra una lista de documentos o un historial de documentos, el intervalo de vista de lista que especifique también se muestra en el área del formulario reservada para mostrar el estado de vista de la lista dinámica deseada.
● El comando de búsqueda por valor actual no está disponible si el criterio de selección es la tabla principal de la lista dinámica.
● Los fragmentos de cadena encontrados se resaltan cuando se muestran en la tabla.
● Sólo se admite una cadena de búsqueda para una columna. Al agregar una nueva consulta de búsqueda para una columna que ya se está buscando, se reemplazará la expresión de búsqueda en lugar de agregar las dos consultas de búsqueda.
● Si el formulario no tiene una adición de elemento de formulario de la pantalla de cadena de búsqueda del formulario asociada con la tabla (propiedad Fuente de adición de elemento de formulario) que muestra una lista dinámica, al presionar la combinación de teclas Ctrl+F se abre el cuadro de diálogo de búsqueda.


Arroz. 7. Diálogo de búsqueda

Si el formulario contiene una adición de elemento de formulario de la pantalla de cadena de búsqueda asociada con una tabla (propiedad de fuente de adición de elemento de formulario) que muestra una lista dinámica, entonces para abrir el cuadro de diálogo de búsqueda debe usar el comando de búsqueda avanzada.
● Cuando utilice el cuadro de diálogo de búsqueda, tenga en cuenta los siguientes puntos:
● Al abrir el cuadro de diálogo de búsqueda mediante un método abreviado de teclado, el valor de la celda actual aparece en la línea Qué buscar y el valor del interruptor Cómo buscar se establece en Por coincidencia exacta.

● Al abrir el cuadro de diálogo de búsqueda comenzando a escribir directamente una cadena de búsqueda en la lista dinámica, el valor del interruptor Cómo buscar se establece en el valor Por parte de la cadena, y el texto escrito termina en Qué al campo de búsqueda.

6. Obtener los datos mostrados mediante una lista dinámica.

Al utilizar listas dinámicas, es posible que deba realizar varias acciones sobre los datos que muestra actualmente la lista dinámica, teniendo en cuenta las selecciones y búsquedas aplicadas. Dichas acciones incluyen: procesar la información mostrada, por ejemplo, reenviar documentos seleccionados o configurar algunos detalles para objetos seleccionados, generar una lista de objetos disponibles (con diseño, etc.), por ejemplo, para imprimir o guardar en un documento de hoja de cálculo.
Para obtener los datos que se muestran en una lista dinámica, debe utilizar GetExecutableDataCompositionSchema() y
GetExecutableDataCompositionSettings().
Ejemplo de recepción de datos:

Esquema = Elements.List.GetExecutableDataCompositionSchema();
Configuración = Items.List.GetExecutableDataCompositionSettings();
DiseñoLinker = newDataCompositionLayoutLinker();
LayoutLayout = LayoutComposer.Execute(Esquema, Configuración);
Procesador de composición = nuevoProcesador de composición de datos;
LayoutProcessor.Initialize(LayoutLayout);
OutputProcessor = Nuevo OutputProcessorDataCompositionResultInTabularDocument;
ReturnOutputProcessor.Output(CompositionProcessor);

La introducción de datos en una colección de valores (tabla o lista de valores) se realiza de la misma manera.
La obtención de datos de listas dinámicas de esta manera tiene una serie de características que deben tenerse en cuenta al desarrollar soluciones de aplicaciones:
● No se admite el siguiente diseño de tabla:
● Colores de línea alternos;
● Imagen de encabezado;
● Imagen del sótano;
● Color de fondo del pie de página;
● Color del texto del pie de página;
● Fuente del pie de página;
● Posición horizontal en el sótano;
● Modo de contraseña.
● No se admite la apariencia condicional especificada para un formulario administrado;
● Al ordenar una tabla jerárquica en orden ascendente por un campo de tipo Enlace, los registros que contienen un enlace vacío siempre se colocan primero.

En el proceso de finalizar las configuraciones, cada programador de 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 registros.
Por ejemplo, una lista dinámica se utiliza para mostrar una lista de elementos:

Para demostrar las capacidades de una lista dinámica, creemos un procesamiento externo y agreguemos el formulario principal. Agreguemos un nuevo atributo al formulario con el tipo “Lista dinámica”. Vayamos a sus propiedades y veamos qué hay allí.
Nos interesa la propiedad “Solicitud personalizada”. Habilitarlo nos mostrará todas las capacidades de una lista dinámica. Podremos escribir una solicitud utilizando casi todas las capacidades 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 el saldo total de 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 elementos del directorio para su eliminación. Además, la instalación de la tabla principal permite leer datos dinámicamente; esto significa que la selección se realizará en porciones, según sea necesario.
A continuación necesitamos crear elementos de formulario para nuestra lista:

Si intentamos ejecutar nuestro procesamiento de este formulario, obtendremos un error:


Para eliminarlo, debe establecer un valor para el parámetro "Período". Para hacer esto, puede utilizar el método “SetParameterValue” de la colección “Parámetros” 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 desea establecer;
. “Valor” - Tipo: Arbitrario. El valor a establecer.
Se puede llamar en el controlador “OnCreateOnServer” del formulario:

¿Tiene alguna pregunta o necesita ayuda de un consultor?


Le brindaremos al usuario la oportunidad de cambiar el período de recepción de saldos. Para hacer esto, agregue el atributo y el elemento de formulario “Fecha” asociado a él:


En el controlador "OnChange" del elemento de formulario "Fecha", llamaremos al método "SetParameterValue", pasando el valor del atributo asociado como valor. De manera similar, cambiemos el procedimiento "Al crear en el servidor" 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:




Supongamos que los usuarios quieren ver los saldos actuales o los recibos planificados. Consideremos una de las opciones de implementación. Agreguemos un atributo de formulario de tipo booleano y un modificador asociado:


Al cambiar el valor del interruptor, cambiaremos el texto de la solicitud. Para hacer esto, usaremos el controlador de eventos "Al cambiar" para el elemento de formulario "Mostrar cantidad al recibir". 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 debe llamar a un procedimiento del servidor:


Resultado de los cambios realizados:



Por fin, el sueño de todo niño de siete años se ha hecho realidad. ¿Con qué frecuencia los usuarios del programa 7.7 pidieron una selección normal de artículos? Para que puedas ver saldos, precios y establecer filtros. Tuvimos que idear varios trucos, incluida la escritura de 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 una determinada configuración de prueba de 1C: "Contabilidad Empresarial 3.0". No haremos una selección ahora, simplemente agregaremos otro formulario de selección en el directorio "Nomenclatura" y lo convertiremos temporalmente en el principal:

Cuando se crea, el sistema agregará de forma predeterminada un campo de tabla del tipo "Lista dinámica" al formulario.

Vayamos a sus propiedades y veamos qué hay allí.

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

Se abrirá una ventana con el código terminado en formato . Por ahora, todos los campos del directorio "Nomenclatura" simplemente se enumeran allí.

Obtenga 267 lecciones en video sobre 1C gratis:

Como puede ver, hay un botón de llamada " " y una casilla de verificación que 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 abordaremos más adelante.

Consulta personalizada en lista dinámica

Primero, creemos la solicitud que necesitamos con saldos y precios. Como eso:

Pestaña "Configuración"

¡Y ahora la mejor parte! Vaya a la pestaña "Configuración". E inmediatamente vemos que en la primera pestaña podemos realizar cualquier selección para cualquier campo de 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: “Periodo” 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 de formulario:

& Lista de OnServerProcedureWhenCreatingOnServer (fallo, procesamiento estándar). Opciones. SetParameterValue("Período", Parámetros. Fecha); Lista. Opciones. SetParameterValue ("Tipo de precio", Parámetros.Tipo de precio); EndProcedures Inicio Notas de A través del espejo

21/04/2014 Recibiendo datos de lista dinámica

Implementado en la versión 8.3.6.1977.

Hemos implementado la capacidad de obtener fácil y cómodamente los datos mostrados mediante una lista dinámica.

Es posible que necesite datos de lista dinámica para imprimirlos en un formato "específico" y no estándar. O para poder realizar determinadas acciones con ellos. Por ejemplo, envíe una carta a todos los contratistas que haya seleccionado en la lista según ciertos criterios.

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

Una lista dinámica por sí sola no puede proporcionarle esta información. El propósito de una lista dinámica es proporcionar una visualización 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, de la cantidad total de datos que tiene que contar.

En general, para obtener información adicional que el usuario desea, es necesario ejecutar una consulta a la base de datos. Exactamente igual que el utilizado en la lista dinámica.

Solías poder hacer esto. Pero no siempre fue fácil. Después de todo, además del texto de la solicitud original en la que funciona la lista dinámica, era necesario conocer todas las selecciones, clasificaciones y otros parámetros que el usuario establece de forma interactiva en la tabla que muestra los datos.

Ahora este problema se puede resolver de forma sencilla. La tabla de lista dinámica ahora tiene dos métodos nuevos:

  • GetExecutableDataCompositionSchema();
  • GetExecutableDataCompositionSettings().

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

Como resultado, recibirá 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 recibe de la tabla de lista dinámica tienen 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 un momento más agradable. En general, la apariencia del informe corresponderá a la apariencia de la tabla de lista dinámica 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 sólo si desea agregar un diseño de formulario condicional al informe.

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, finalidad y matices de uso en el sistema. Uno de estos tipos es una lista dinámica, que facilita enormemente muchas tareas aplicadas. Es por eso que los desarrolladores deben conocer y poder manejar esta herramienta universal.

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 fue creado sobre la base de SKD y tiene capacidades similares. Pero esto no significa que necesariamente tendrá que escribir una solicitud en el idioma 1C, aunque esta oportunidad existe y debe aprovecharse. Simplemente puede especificar la tabla cuya información 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, es necesario abrir los formularios administrados donde se encuentra en el configurador: en la lista de detalles, use el menú contextual para abrir sus propiedades y preste atención a la opción "Personalizado". Solicitud”. Si no hay ninguna casilla de verificación, entonces el parámetro "Tabla principal" refleja la tabla de la base de datos de la que se toman los datos. De lo contrario, la lista dinámica refleja los datos de una consulta personalizada, que se puede ver abriendo la configuración de la lista.

El esquema de consulta personalizado se usa mucho más comúnmente, ya que brinda una excelente oportunidad para combinar y mostrar una amplia variedad de datos. Muy a menudo, este mecanismo se utiliza para reflejar saldos de almacén, precios de artículos, recibos, gastos o compras. Debe usarlo con cuidado, ya que el rendimiento puede disminuir en consultas complejas.

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

  • Selección de lista dinámica;
  • Grupos;
  • Clasificación;
  • Decoración.

El uso de parámetros hace que las listas dinámicas sean universales y bastante flexibles. También puede vincularlos a detalles en un formulario administrado y los datos cambiarán según los parámetros seleccionados por el usuario. El uso de estos mecanismos puede entenderse y apreciarse considerando ejemplos de problemas de la vida real.

Como ejemplo, consideremos la tarea de reflejar los restos de nomenclatura de forma controlada. En la práctica real, este tipo de órdenes ocurren con bastante frecuencia en varias configuraciones, y una lista dinámica es ideal como herramienta. Para esta tarea tendremos que utilizar una consulta personalizada, parámetros de lista dinámica y su configuración.

Para mayor claridad, creemos un procesamiento externo separado y coloquemos una lista dinámica en él. Para implementar nuestros planes, la tabla con la nomenclatura no será suficiente, por lo que debemos permitir una consulta arbitraria. En él describiremos la conexión izquierda del directorio con la lista de artículos y el registro de saldos y configuraremos el directorio como la tabla principal. Este esquema permitirá a los usuarios, trabajando con una lista dinámica, agregar o cambiar elementos.



SELECCIONE NomenclatureList.Name AS Nombre, GoodsInWarehousesRemainings.Warehouse AS Warehouse, GoodsInWarehousesRemainings.CantidadRemaining AS CantidadRemaining FROM Directory.Nomenclature AS NomenclatureList CONEXIÓN IZQUIERDA RegisterAccumulations.GoodsInWarehouses.Remainings(&CurrentDate,) AS GoodsOnUS tesorosRemaining software NomenclatureList.Link = ProductsInWarehousesRemainings .Nomenclatura DONDE

Dado que nuestra solicitud utilizó el parámetro "CurrentDate", debemos establecer su valor antes de utilizar el procesamiento. Para hacer esto, en el módulo de formulario en el procedimiento "Cuando se crea en el servidor", utilizando un comando estándar, asígnele la función "CurrentSessionDate". También necesitamos mostrar la lista dinámica en el formulario de control y cambiar el orden de los campos para mayor claridad. Arrastre el atributo "Nomenclatura restante" a los elementos del formulario (parte superior izquierda) y use las flechas azules para cambiar el orden de los campos en la tabla del formulario.

&En el procedimiento del servidor cuando se crea en el servidor (fallo, procesamiento estándar) La nomenclatura permanece. Parámetros. Set ParameterValue("CurrentDate", CurrentSessionDate()) EndProcedure


Ya en esta etapa podemos abrir nuestro procesamiento externo en 1C y ver que la lista dinámica está funcionando. Podemos consultar saldos, crear artículos y grupos, y buscar. A menudo, los clientes solicitan agregar la posibilidad de elegir la fecha en la que verán los saldos. En el caso de un formulario con lista dinámica, esto se logra mediante un campo adicional y configurando parámetros usándolo.

Agregue el atributo "FechaRemanente" del tipo "Fecha" y transfiéralo a los elementos del formulario. En el campo eventos, creamos el evento "OnChange" y escribimos el código para configurar el parámetro "CurrentDate" utilizado en la solicitud dinámica. Para que al abrir el formulario el usuario entienda inmediatamente en qué fecha ve los saldos, realizaremos pequeños cambios en el procedimiento “Cuando se creó en el servidor”.



&OnServerProcedureWhenCreatingOnServer(Falla, procesamiento estándar)RemainingDate = CurrentSessionDate(); Item Remains.Parameters.SetParameterValue ("Fecha actual", Fecha restante); Fin del procedimiento y en el procedimiento del cliente Fecha restante cuando se cambia (Elemento) Nomenclatura Remaining.Parameters.SetParameterValue("CurrentDate",RemainingDate); Fin del Procedimiento

Como resultado, nuestro formulario de Lista dinámica puede reflejar saldos en cualquier fecha.

Hemos considerado sólo 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 se encuentra con mayor frecuencia en configuraciones típicas en formularios administrados:

  1. Selección;
  2. Liza.

Para recibir una lista dinámica y su solicitud en formularios administrados estándar, el desarrollador debe abrir el formulario deseado en el configurador. En la sección de detalles, busque los detalles con el tipo de datos "DynamicList" (la mayoría de las veces está resaltado en negrita). Sus propiedades contienen el texto de la solicitud, selecciones y otras configuraciones.



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