Encuentra un elemento en la lista de valores 1c. Estructura de colección universal

¿De qué se trata este artículo?

Este artículo continúa la serie de artículos "Primeros pasos en el desarrollo de 1C". Cubre los principios del trabajo con colecciones universales. Después de leer el artículo, aprenderá:

  • ¿Qué son las colecciones universales, cuándo y en qué casos deben utilizarse?
  • ¿Qué tienen en común todas las colecciones universales? ¿Qué técnicas puedes utilizar para trabajar con todos ellos?
  • ¿Qué es un array, cómo y cuándo utilizarlo? ¿Qué métodos tiene?
  • ¿Por qué utilizar una estructura? ¿En qué se diferencia de una matriz?
  • ¿Cuándo debería utilizar una lista de valores? ¿Cómo mostrarlo en el formulario?
  • Cumplimiento: ¿qué es y cuándo utilizarlo? ¿Cuáles son las ventajas en cuanto a estructura?
  • ¿Para qué se utiliza la tabla de valores? ¿Cómo describir su estructura? ¿Cómo agregar/eliminar líneas? ¿Cómo mostrarlo en el formulario?
  • Árbol de valores: ¿para qué se utiliza? ¿Cómo completar y mostrar el formulario? ¿Cómo trabajar con él?

Aplicabilidad

El artículo analiza la plataforma 1C:Enterprise 8.3 de la edición actual.

Cómo trabajar con colecciones universales en 1C.

Una colección de valores es un contenedor que normalmente puede contener cualquier cantidad de elementos. Sin embargo, a menudo no existen restricciones estrictas en cuanto al tipo de datos.

Puedes agregar valores a una colección genérica. Se pueden recorrer todos los valores de la colección. Estas colecciones se utilizan principalmente para algún tipo de procesamiento en algoritmos. Aquellos. Estas son algunas estructuras dinámicas que existen mientras se ejecuta el algoritmo.

Es importante entender que las colecciones no se almacenan en una base de datos (no estamos hablando del tipo de datos Value Store, que puede almacenar casi cualquier tipo de datos).

Existir diferentes tipos colecciones universales: matriz, estructura, coincidencia, matriz fija, tabla de valores, parte tabular etc. Pero todas las colecciones tienen un comportamiento similar.

Se puede crear una colección como resultado de la operación de una función (la función devuelve una colección universal como valor).

Puedes obtener una nueva colección manualmente llamando al constructor y creando una instancia de la clase.

Por ejemplo: OurArray = Nueva matriz;

Los constructores de muchas colecciones genéricas están parametrizados.

Entonces, en el constructor de Puede especificar el número de miembros en las dimensiones correspondientes. Aquellos. puedes declarar inmediatamente multidimensional .

La descripción correspondiente del constructor se encuentra en el asistente de sintaxis.

Por lo tanto, utilizando los parámetros del constructor, puede establecer inmediatamente el comportamiento deseado. de este objeto.

Pero los parámetros son opcionales; el desarrollador no puede configurarlos y definir aún más el comportamiento del Array como mejor le parezca.

Casi cualquier colección universal se puede crear utilizando un constructor (la excepción son las partes de la tabla, que actúan como objetos de configuración).

Para las colecciones universales, existen conceptos comunes como índice y número. Cada elemento de la colección tiene un índice. En este caso, el índice comienza desde cero.

Para acceder a un elemento Nuestra matriz, puede utilizar el acceso al índice; para ello, el índice se indica entre corchetes.

Por ejemplo, Nuestra matriz. Tenga en cuenta que en este caso el sistema devuelve el elemento Array con índice 3 y, en orden, este es el cuarto elemento del Array.

Para algunas colecciones también existe el concepto de número de línea. El número de línea comienza con uno. Por ejemplo, para la parte tabular existe una propiedad como número de fila. Es importante tener en cuenta que si conocemos el número de línea y queremos acceder a él por índice, entonces debemos usar un valor uno menor que el número de línea como índice.

El concepto de número de línea no existe en todas las colecciones, sino principalmente en aquellas que se pueden mostrar en la interfaz de usuario.

Todas las colecciones utilizan el recorrido de elementos de colección. El bypass es posible de dos maneras: ciclo para Y ciclo para cada uno de.

Los métodos que se aplican a la mayoría de las colecciones genéricas son Contar, Indexar, Agregar, Insertar, Eliminar y Buscar.

Count es una función que devuelve el número de elementos de una colección. Se puede utilizar antes de un ciclo. Para, como se muestra en la figura.

El método Index no existe para todas las colecciones, sino solo para aquellas a cuyos elementos se puede hacer referencia. Un ejemplo es Tabla de Valores.

Tabla de Valores– esta es una colección específica de filas; las filas pueden contener diferentes columnas con diferentes tipos de valores.

Cada línea representa una entidad independiente. Puede obtener un enlace al mismo; a través de esta línea puede acceder a los valores de las columnas de esta línea.

El método Índice le permite determinar qué índice corresponde a una fila determinada (es decir, la posición actual de la fila en la tabla). Los valores del índice comienzan en cero.

Casi cualquier colección universal tiene métodos para agregar nuevos valores a una colección determinada. La figura muestra cómo llenar un Array con valores del 0 al 10 de dos maneras.

Para agregar un elemento al Array podemos usar el método Agregar, indique entre paréntesis el valor a agregar. En este caso, el valor se agregará al final de la lista, es decir. La matriz aumentará constantemente debido a la última posición.

Otro método que permite agregar valores a una colección es el Insertar. Es diferente del método Agregar en el que puede especificar dónde insertar el elemento agregado.

Sintaxis: Insertar (,)

El primer parámetro especifica el índice en el que se insertará el nuevo valor. Aquellos. por ejemplo, podemos especificar que cada valor debe insertarse al principio de la lista (segundo método en la figura anterior).

Para eliminar elementos de una colección, utilice el método Borrar. El método Eliminar especifica por índice qué elemento eliminaremos.

Sintaxis: Borrar()
Ejemplo de uso: NuestraArray.Delete(5);

Cabe señalar que para aquellas colecciones donde las cadenas representan una entidad independiente (por ejemplo, para Tablas de Valores), también podemos usar el método de obtener el índice para luego eliminar esta fila.

Casi todas las colecciones tienen un método para buscar un valor. Encontrar. El valor que queremos encontrar se pasa al método. Algunas colecciones le permiten establecer algunas restricciones.

Por ejemplo, en Tabla de valores puede especificar las filas y columnas en las que desea buscar.

Si se encuentra el valor, este método devuelve el índice o la cadena especificada. Si no se encuentra el valor, se devuelve un valor de tipo Indefinido. En relación con un Array, devuelve Índice, o valor Indefinido.

Ejemplo de uso: NuestraVariable = NuestraArray.Find(8);

Las colecciones universales se pueden borrar muy rápidamente, es decir eliminar absolutamente todos los elementos. Para ello se utiliza el método Claro(), que elimina elementos de matriz, filas Tablas de Valores, o datos de otras colecciones.

Métodos adicionales para Array

Método BBorden() devuelve el número de elementos menos uno. Aquellos. si usamos un bucle Para, entonces en lugar del método Cantidad podemos usar inmediatamente el método Borde().

En particular, la variable CantidadEnArray podría definirse de otra manera:

CantidadEnArray = NuestraArray.InBorder();
Entonces, al describir el ciclo en sí, no se debe restar esta variable.

El método Set le permite asignar un valor a un elemento de Array por índice.

Sintaxis: Instalar(,)

Ejemplo: NuestroArray.Set(2,8);

Opción alternativa: NuestraMatriz = 8;

Puedes usar el método para un Array Conseguir, para leer un valor en un índice sin recurrir al uso de corchetes.

Sintaxis: Conseguir()

Ejemplo: NuestraVariable = NuestraArray.Get(2);

Opción alternativa: NuestraVariable = NuestraArray;

Estructura de colección universal

Una Estructura, como un Array, puede tener un número ilimitado de elementos, pero el contenido del elemento difiere del Array.

La estructura es una colección, cada valor del cual consta de un par. El primer elemento del par se llama Llave. El segundo elemento del par es Significado.

Llave es un tipo de datos estrictamente de cadena que describe un valor. Por ejemplo, a la llave"Código" puede corresponder al valor 113; a la llave"Nombre" que significa "Vasya". El Valor en sí no está sujeto a ninguna restricción de tipo de datos.

La estructura es muy cómoda de usar si queremos crear una determinada lista de parámetros. Si esto Estructura llamado NuestraEstructura, entonces nos referiremos a sus dos valores de la siguiente manera: NuestraEstructura.Código y NuestraEstructura.Nombre.

Este tipo de acceso es mucho más conveniente que si definimos todos los parámetros en un Array y accedimos a ellos por índice.

La estructura hace que el código del programa sea legible (comprensible). La estructura se usa con bastante frecuencia, mucho más que Array.

Se utiliza para describir ciertos parámetros, de los cuales suele haber un número bastante grande en todos los algoritmos.

Además, la Estructura se utiliza si el procedimiento y la función contienen una gran cantidad de parámetros pasados.

Entonces es mucho más conveniente escribir todos los parámetros en la Estructura y transmitirlos. Aquellos. los parámetros de procedimientos y funciones están “empaquetados”.

Por otra parte, cabe señalar que como Llave No puede aparecer absolutamente cualquier línea en la Estructura. Se aplican ciertas restricciones.

Llave debe actuar como identificador. Esto significa que en klyuché no debe haber espacios y no puede comenzar con un número.

Inicio aceptable Llave con una letra o un guión bajo. De este modo, Llave debe cumplir los requisitos para la creación de identificadores.

Observemos en qué más se diferencia una Estructura de una Matriz. Hay un método en la estructura. Insertar, hay dos métodos para la inserción en Array: Insertar(a una determinada posición) y Agregar(hasta el final de la lista). En un Array todos los elementos están ordenados.

La estructura es una especie de conjunto desordenado. Es por eso que solo existe un método de inserción para una Estructura.

El valor no se inserta en una posición específica, sino en el conjunto especificado. No se puede acceder a una estructura por índice, como otras colecciones genéricas.

Solo se accede a los elementos de la estructura mediante el nombre de clave. Sin embargo, el bucle For Each también funciona para la Estructura, pero no debes confiar en el orden de los elementos de la Estructura.

Una estructura se crea de la misma manera que otras colecciones genéricas utilizando el constructor Nuevo, especificando el tipo de datos Estructura.

Al igual que un Array, el constructor de una Estructura puede tener parámetros. Aquellos. es posible describir el contenido mismo de una Estructura utilizando un constructor.

A diferencia de una Matriz, donde simplemente puedes especificar el número de elementos para todas las dimensiones, en una Estructura puedes especificar el contenido en sí.

Por ejemplo: NuestraEstructura = Nueva Estructura (“Código, Nombre”, 133, “Vasya”);

Separados por comas, primero se enumeran los nombres de las claves y luego, en consecuencia, en la misma secuencia, los valores de los parámetros.

Existe un método para agregar un nuevo valor a la Estructura Insertar, que inserta un nuevo par (Clave y Valor).

Por ejemplo: NuestraEstructura.Insert(“Miembros de la familia”,3);

La Estructura se caracteriza por otro método que se utiliza con bastante frecuencia. Este es el método Propiedad.

Con este método, puede comprender si hay un elemento en esta Estructura cuya Clave tiene tal o cual nombre.

Si dicho elemento existe, el sistema devolverá el valor Verdadero; en caso contrario, Falso.

Por ejemplo, la expresión OurStructure.Property (“Miembros de la familia”) será igual al valor Verdadero. Este método se utiliza con bastante frecuencia al analizar la estructura.

Como ocurre con cualquier colección universal, es posible acceder a las propiedades de una Estructura por índice. Pero el índice de la estructura es un valor de cadena.

Por ejemplo: Informe(NuestraEstructura[“Miembros de la Familia”]);

Sin embargo, no debemos olvidar que una Estructura es un conjunto desordenado de objetos, por lo que acceder por el índice 0, 1, 2 es inaceptable.

Colección genérica Lista de valores

Lista de valores es una lista lineal de elementos de cualquier tipo de datos.

Cada elemento consta de varios valores. Esquemáticamente, una lista de valores se puede representar como una lista con cuatro columnas.

Primera columna - Marca. Tiene un tipo de datos booleano y permite al usuario marcar o desmarcar casillas.

La otra columna es una imagen que de alguna manera puede representar visualmente este elemento, es decir. Haga coincidir esta cadena con una imagen.

La tercera columna es el valor almacenado en sí, es decir. Se trata de cualquier tipo de datos y puede ser diferente en diferentes líneas.

La cuarta columna es la presentación, es decir. este es un tipo de descripción de cadena de un valor dado. La vista se mostrará al usuario cuando vea este elemento. En este caso, si no se especifica la representación, el sistema intentará obtener representaciones para el elemento contenido en esta posición.

Lista de valores– este es el objeto con el que el usuario puede trabajar visualmente. Aquellos. Lista de valores se puede mostrar en el formulario.

El usuario puede realizar algunas acciones con él. Además, Lista de valores se puede inferir de forma independiente utilizando métodos, es decir mostrar en pantalla en alguna rama del algoritmo (a excepción del código del servidor) para que el usuario seleccione alguna línea o marque algunas casillas.

Lo encontraremos Lista de valores en el asistente sitax. Constructor Lista de valores no parametrizado (no puede establecer ningún valor predeterminado).

Existen métodos como:

  • Insertar(,) ;
  • Agregar(,);
  • Cantidad();
  • Índice().

También existen métodos especiales, por ejemplo, Descargar valores(). Esto crea un Array en el que se copia la lista de valores. Por ejemplo:

Matriz de elementos = Lista de PriceTypes.OutloadValues();

También existe un método inverso:
ListPriceTypes.LoadValues(ArrayItems);

Hay métodos de búsqueda:
BuscarPorValor(); BuscarPorIdentificador().

Hay un método de copia:
ListaCopy = PrecioTypeList.Copy();
Este método se pretende realizar algún tipo de modificación a la copia.

Hay métodos:
OrdenarPorValor();
Ordenar por vista().

Métodos Seleccione un artículo(,) Y Marcar artículos() Llame a un cuadro de diálogo modal que detiene la ejecución del algoritmo hasta que el usuario cierra la ventana.

Para utilizar estos métodos en las propiedades de configuración Modo de uso de la modalidad debe configurarse en Usar.

Código de ejemplo llamado desde un módulo de aplicación administrada:

Muestra este código en modo usuario (diálogo modal).

Abajo Lista de valores Se utiliza como tipo de datos disponible para los atributos del formulario. Creamos un nuevo atributo para el formulario de procesamiento y definimos su tipo Lista de valores y mostrarlo en el formulario.

Creando un nuevo equipo RellenarRegalos, transfiéralo al formulario y defina un controlador de acciones para él.

En el modo de usuario, cuando hace clic en el botón Completar regalos en el formulario de procesamiento, aparecerá una lista completa.

Si lo desea, la lista se puede editar: se pueden agregar algunos elementos y se pueden eliminar otros.

Cumplimiento de cobranza versátil

Esta colección es muy similar a Estructura. Al igual que la estructura, las asignaciones son conjuntos de valores que constan de una clave y el valor mismo.

La principal diferencia es que se puede especificar cualquier tipo de datos como clave, así como para el valor. En vista de esta característica, es necesario acceder al valor coincidente por índice; el valor clave se indica como valor de índice.

La clave puede ser un tipo de datos distinto de una cadena. Las propiedades y métodos para trabajar con Cumplimiento son casi los mismos que los de Estructura.

El Constructor de Cumplimiento, a diferencia de la Estructura, no contiene la capacidad de especificar parámetros.

Ejemplo de uso:

La correspondencia es conveniente de usar cuando necesita conectar dos estructuras cualesquiera. Por ejemplo, cada fila de la sección tabular debe coincidir con una fila de la tabla de valores.
En este caso, la fila de la sección de la tabla se utiliza como clave de coincidencia y se indica el valor correspondiente.

Al insertar elementos en una colección Match además del método Insertar(,) Otra forma de insertar un valor es utilizar el operador de asignación normal.

Por ejemplo: NuestroPartido = NuevoPartido;
Coincidencia = 999;

Aquellos. si un elemento no estaba presente en la colección, se agregará mediante el operador de asignación y, si estaba presente, se actualizará.

Esto contrasta con la Estructura.

Tabla de Valores de la Colección Universal

Tabla de Valores es una tabla con un número arbitrario de filas y un número arbitrario de columnas. La intersección puede almacenar valores de cualquier tipo de datos. Si es necesario, se pueden escribir columnas, es decir, se puede determinar en qué columna se almacena qué tipo de datos.

Puede dejar las columnas sin escribir, luego los valores se pueden almacenar en una columna en diferentes filas diferentes tipos.

Diferencias Tablas de Valores desde una matriz bidimensional:

  • este es un objeto con el que el usuario puede trabajar (la tabla de valores se puede mostrar en la pantalla, el usuario puede completarla y luego leer los datos ingresados);
  • crear índices para búsquedas rápidas;
  • clonar, llenar una columna completa con un valor determinado, cargar todas las columnas en una matriz.

Tabla de Valores Se utiliza como una especie de buffer de almacenamiento de información. Tabla de Valores es devuelto y aceptado como parámetro por muchos métodos del sistema. Es posible construir una consulta contra la Tabla de Valores.

Entonces, Tabla de Valores consta de un conjunto de filas y un conjunto de columnas. Tanto las filas como las columnas son colecciones.

Aquellos. dentro de la colección Tabla de Valores Hay dos colecciones más. Vayamos al asistente de sintaxis y busquemos Tabla de Valores.

Tipos de datos admitidos: sí mismo Tabla de Valores, que consta de cadenas. Cada fila está representada por un tipo de datos. Valores de tabla de fila, que tiene sus propias propiedades y sus propios métodos. Disponible Colección de valores de columnas de tabla También tiene ciertas propiedades.

¡Punto importante! El procedimiento que crea Tabla de Valores, debe compilar &OnServer.

Antes de empezar a trabajar con Tabla de Valores, debe determinar qué columnas contendrá (es decir, crearlas). Sintaxis:

Agregar(,)
(opcional)
Tipo: Cuerda.
(opcional)
Tipo: DescripciónTipos
(opcional)
Tipo: Cuerda.
(opcional)
Teclea un número.

Por ejemplo:

Para llamar a este procedimiento usaremos el comando.

En descripción Tablas de Valores los elementos de la colección son precisamente FilasTablaValores.

A diferencia de las columnas, que constan únicamente de propiedades (Nombre, Tipo, Encabezado, Ancho), en Valores de tabla de fila Hay propiedades (acceso por nombre de columna) y métodos (puede obtener y establecer un valor, trabajar con los propietarios).

Para agregar una nueva fila a la tabla, debe utilizar el método Agregar(), o Insertar(). En el segundo caso, deberás indicar en qué posición se debe colocar la línea requerida.

Para asignar un valor a una columna, usamos un punto para acceder al nombre o índice de la columna (usando corchetes).

Para rellenar Tablas de Valores Se pueden utilizar los siguientes métodos:

Claro()– para eliminar todas las filas de Tablas de Valores.

Valoresderelleno(,)– le permite completar todas las columnas o columnas seleccionadas con un valor.
CargaColumna(,)– carga una columna de la matriz.
DescargarColumna()– descarga la columna en una matriz.

Los dos últimos métodos son convenientes cuando necesita transferir una columna de una tabla de valores a otra.

Copiar(,)– le permite crear uno nuevo basado en una tabla existente Tabla de Valores, y no todas las filas y todas las columnas, sino solo algunas de ellas. Valor de retorno – Tabla de Valores.

Puedes copiar la estructura. Tablas de Valores. Hay un método correspondiente para esto. Copiar columnas(). Conseguiremos uno vacío Tabla de Valores con la estructura requerida.

EN Tabla de valores hay un método Total(). Puede especificar la columna en la que desea sumar los valores numéricos. En relación al código mostrado anteriormente en Tableau, puedes calcular el valor: TK.Total (“Cantidad”).

EN Tabla de valores es posible agrupar (contraer) valores numéricos por valores idénticos de ciertas columnas usando el método Colapsar(,).

En relación al código mostrado anteriormente en Tableau, puedes calcular el valor: TK.Collapse(“Día de la semana”, “Cantidad”).

Tabla de Valores se puede mostrar en pantalla de usuario para que puedas realizar cualquier acción con él. Pero a diferencia Lista de valores No se puede simplemente abrir una tabla en la pantalla desde el código del programa.

para mostrar Tabla de Valores en la pantalla, cree un atributo de formulario y asígnele un tipo de datos Tabla de Valores.

Después de eso, la tabla resultante debería mostrarse en el formulario.

En el módulo de formulario al final del algoritmo previamente compilado (en el Procedimiento para crear una tabla de valores), debe agregar:
ValueInFormData(TK, Tabla);

Colección universal Árbol de valores

una colección universal muy similar a Tabla de Valores. La diferencia con una tabla es que las filas del árbol pueden estar subordinadas entre sí, es decir se puede formar algún tipo de jerarquía.

Esto también se puede reflejar en la pantalla. Un árbol de valores consta explícitamente de una colección de filas y una colección de columnas. Hay dos propiedades en el árbol: Filas y Columnas.

Dado que las filas pueden estar subordinadas entre sí, cada fila puede tener un padre, así como sus filas subordinadas.

Creemos el comando Árbol correspondiente y su procedimiento de procesamiento.

Vamos a crear en el que hay una fila principal y dos filas subordinadas.

Creemos los atributos del formulario. DerZn(tipo de datos – Árbol de valores).

Para este atributo, crearemos las columnas Año y Mes.

Mover el elemento correspondiente DerZn en forma.

Al final Procedimientos TreeOnServer() agreguemos:

ValueInFormData(ÁrbolZn, DerZn);

Veamos qué pasó en modo usuario.

Usando un botón Agregar puedes agregar nuevas líneas. También pueden formar una jerarquía.

Para recorrer todos los elementos del árbol de valores, necesitaremos usar recursividad, es decir llamando a un procedimiento desde sí mismo. Por ejemplo, procesar un árbol de valores podría verse así:

Con esto concluye nuestro primer contacto con las colecciones universales.

En el próximo artículo veremos qué mecanismo importante puede utilizar un desarrollador para simplificar el acceso a un elemento de directorio desde el código del programa.

Sintaxis completa (haga clic para expandir)

Lista de valores

Descripción:

Una lista de valores es un objeto que no se guarda en la base de datos, lo que le permite crear conjuntos dinámicos de valores para resolver problemas de interfaz y manipularlos (agregar, editar, eliminar elementos, ordenar). Se puede llenar con valores de cualquier tipo, es decir En una lista, los tipos de valores almacenados pueden ser diferentes. Un ejemplo del uso de este objeto es organizar la selección de un documento específico de una lista de posibles documentos generados mediante un algoritmo complejo.

Artículos de colección: Elemento de lista de valores

Es posible que un objeto omita la colección utilizando el operador Para cada... Desde... Ciclo. El recorrido selecciona los elementos de la colección.

Es posible acceder a un elemento de colección utilizando el operador. El índice del elemento se pasa como argumento ( numeración desde 0).

Propiedades:

Métodos:

Insertar (Índice, Valor, Representación, Etiqueta, Imagen) Inserta un nuevo elemento en la lista de valores en la posición en el índice especificado.SelectElement (Encabezado, Elemento) Abre una ventana para seleccionar interactivamente uno de los elementos incluidos en la lista de valores. Elemento- el elemento en el que se debe colocar inicialmente la lista de valores durante la selección interactiva. Si el valor del parámetro no es un elemento de la lista de valores incluido en esta lista, el posicionamiento no se producirá.Descargar valores()Crea una matriz y copia los valores de la lista de elementos de valores en ella.Agregar (Valor, Representación, Etiqueta, Imagen) Agrega un nuevo elemento al final de la lista de valores.Valores de carga(ArrayValues) Carga una lista de valores con los valores de la matriz pasada. En este caso, se eliminan todos los elementos anteriores de la lista.Completar notas(Marca) Establece una marca para todos los elementos de la lista de valores.Index(Element) Obtiene el índice de un elemento en una lista de valores. Si no se encuentra, se devuelve -1.Count() Obtiene el número de elementos de la lista de valores.Buscar por valor(SearchValue) Busca el valor de un elemento en una lista de valores. Si ningún elemento almacena un valor igual al valor de búsqueda, entonces se devuelve el valor Indefinido. Buscar por ID(Identificador) Recupera la lista de valores elemento por identificador. Si no se encuentra el elemento, se devuelve. Indefinido. Marcar artículos(Encabezado) Establece o desmarca (interactivamente) los elementos de la lista de valores. Devoluciones Verdadero, si se presiona el botón "Aceptar" en el cuadro de diálogo, Mentir- de lo contrario.Clear() Borra la lista de valores, eliminando todos los elementos de ella.Mostrar selección de elementos(DescriptionNotificationsOnClosing, Title, Element) Abre una ventana para seleccionar interactivamente uno de los elementos incluidos en la lista de valores.Mostrar artículos de marca(Descripción de alertas de cierre, encabezado) Diseñado para configurar interactivamente estados de marca para elementos de la lista de valores.Get(Index)Recupera el valor por índice. Funciona de manera similar al operador.Shift (Elemento, Desplazamiento) Desplaza un elemento de la lista de valores hacia adelante o hacia atrás un número específico de posiciones.Copy() Crea una copia de una lista de valores.Ordenar por valor(Dirección) Ordena una lista de valores en orden ascendente o descendente de los valores almacenados por los elementos. Vea el ejemplo a continuación.Ordenar por vista(Dirección) Ordena la lista de valores en orden ascendente o descendente en orden alfabético de las representaciones de los elementos incluidos en la lista de valores. Vea el ejemplo a continuación.Eliminar (Elemento) Elimina un elemento de una lista de valores, donde Elemento- índice del elemento a eliminar, o del propio elemento.

Diseñadores:

Nueva lista de valores
& Código de ejecución del procedimiento OnClient (comando) /// Cómo crear una lista de valores en 1s 8.3, 8.2 Lista = Nueva Lista de Valores; /// Cómo agregar un elemento a la lista de valores en 1s 8.3, 8.2 // agregar parámetros del método:// - significado // - actuación // - marca (obligatoria) // - imagen (obligatoria) Lista. Añadir( 1980, // valor del elemento "El año del nacimiento de Vasya"// actuación ) ; Lista. Añadir(1985, "El año del nacimiento de Yulia") ; // los valores pueden ser de diferentes tipos Lista. Agregar("Polina", "Nombre del niño"); /// Cómo insertar un elemento en una lista de valores en 1s 8.3, 8.2 // insertar en la posición No. 2 (los elementos están numerados comenzando desde 0) // elemento con valor 2010 y representación // "El año en que nació su hija conjunta" Lista. Insertar(2, 2010, "El año en que nació su hija conjunta") ; /// Cómo omitir elementos de la lista de valores en 1s 8.3, 8.2 Para cada elemento del informe de bucle de lista (Elemento. Representación + ":" + Cadena (Elemento. Valor)); FinCiclo; /// Cómo borrar la lista de valores en 1s 8.3, 8.2 Lista. Claro() ; Lista. Agregar("lunes"); Lista. Agregar("Martes"); Lista. Agregar("Miércoles"); /// Cómo averiguar el número de elementos de una lista de valores, así como /// obtenemos un elemento de la lista por su índice en 1s 8.3, 8.2 // numeración desde cero Para índice = 0 por lista. Cantidad() - Informe de 1 ciclo(Lista[Índice]); FinCiclo; /// Cómo encontrar un elemento de lista por su valor en 1s 8.3, 8.2 ValorMartes = Lista. FindByValue("Martes"); /// Cómo saber el índice de un elemento en una lista en 1s 8.3, 8.2 Informe(List.Index(ValueTuesday)); // 1, ya que la numeración empieza desde cero /// Cómo ordenar una lista por sus valores en 1s 8.3, 8.2 // era: lunes, martes, miércoles Lista. OrdenarByValue(OrdenarDirection.Descending); // se convirtió en: miércoles, lunes, martes /// Cómo eliminar un elemento de una lista de valores en 1s 8.3, 8.2 // eliminar el primer elemento // parámetro: elemento de lista // o índice de elemento// puedes hacer esta Lista. Eliminar(Lista[ 0 ]); // más o menos // Lista.Delete(0); /// Cómo desplazar un elemento de una lista de valores en 1s 8.3, 8.2 // mueve el elemento cero hacia adelante una posición // era: lunes martes Lista. Mover(0, 1); // se convirtió en: martes lunes /// Cómo hacer una copia de una lista en 1s 8 Copia de lista = Lista. Copiar() ; Colores = NewValueList; Colores. Agregar("Rojo"); Colores. Agregar("Verde"); Colores. Agregar("Azul"); /// Cómo cargar valores de lista en una matriz en 1s 8.3, 8.2 ArrayColors = Colores. DescargarValores(); /// Cómo cargar valores de lista desde una matriz en 1s 8.3, 8.2 Colores. LoadValues(ArrayColors); Fin del Procedimiento /// Cómo hacer una selección no modal de un valor de una lista /// valores en 1s 8.3, 8.2&Sobre el procedimiento del cliente Cómo realizar una selección de valor no modal (comando) Colores = New ValueList; Colores. Agregar("Rojo"); Colores. Agregar("Verde"); Colores. Agregar("Azul"); // el procedimiento AfterSelectingElement se define justo debajo AlertAfterElementSelection = Nueva descripciónAlerts( "Después de la selección del elemento", EsteObjeto ); Colores. ShowElementSelection( NotificaciónDespuésElementSelection, "Elige tu color favorito") ; Fin del procedimiento y procedimiento del cliente después de la selección del elemento (elemento, parámetros) Exportar si el elemento<>Indefinido Luego Informe (Element.Value); Terminara si ; Fin del Procedimiento /// Cómo hacer un marcado no modal de valores de una lista /// valores en 1s 8.3, 8.2&Sobre el procedimiento del cliente Cómo realizar un marcado no modal de valores (comando) Colores = Nueva lista de valores; Colores. Agregar("Rojo"); Colores. Agregar("Verde"); Colores. Agregar("Azul"); // el procedimiento AfterMarkingElements se define justo debajo AlertAfterMarkingItems = Nuevas alertas de descripción( "Artículos posteriores al marcado", EsteObjeto ); Colores. MostrarTagItems( AlertAfterTagItems, "Elige tus colores favoritos") ; Colores. FillNotes(Verdadero); Fin del procedimiento y procedimiento del cliente después de marcar elementos (elementos, parámetros) Exportar si elementos<>Indefinido Luego, para cada color del ciclo de elementos si es color. Marcar y luego informar (Color.Value); Terminara si ; FinCiclo; Terminara si ; Fin del Procedimiento /// Cómo hacer una selección modal de un valor de una lista en 1s 8.3, 8.2&Sobre el procedimiento del cliente Cómo hacer una ModalValueSelection(Command) Colors = New ValueList; Colores. Agregar("Rojo"); Colores. Agregar("Verde"); Colores. Agregar("Azul"); SeleccionarColor = Colores. Seleccione un artículo( "Elige tu color favorito") ; Si selecciona color<>Indefinido Luego Informe (SelectColor.Value); Terminara si ; Fin del Procedimiento /// Cómo marcar modalmente valores de una lista /// valores en 1s 8.3, 8.2&Sobre el procedimiento del cliente Cómo hacer una marca modal de valores (comando) Colores = Nueva lista de valores; Colores. Agregar("Rojo"); Colores. Agregar("Verde"); Colores. Agregar("Azul"); Si colores. Marcar artículos( "Elige tus colores favoritos") Luego, para cada color del ciclo de color si es color. Marcar y luego informar (Color.Value); Terminara si ; FinCiclo; Terminara si ; // así es como puedes configurar todas las marcas a la vez // lista a un valor específico Colores. FillNotes(Verdadero); Fin del Procedimiento /// Descarga y ejecuta estos ejemplos en tu computadora

En esta unidad nos familiarizaremos con un nuevo tipo de datos del lenguaje 1C, que se llama Lista de valores.

Lista de valores Es una matriz, pero con grandes capacidades. Y si es así, entonces también es una colección de datos y puedes ponerle un conjunto de números:

// creó una lista de valores

Lista.Agregar(23);

Hasta ahora todo se parece mucho a una matriz, ¿no? Pero sigamos adelante. Para mostrar ahora estos números al usuario, escribimos:

// recorrer cada elemento de la lista Para cada elemento de la lista Loop Report(Element.Value);

// muestra el valor del elemento EndCycle;

Y aquí está la primera diferencia. Los elementos de una matriz regular son los propios números. Y acceder al valor actual de un elemento. Lista llegamos a usar la opción Significado, utilizando la construcción Elemento. Significado.

Veamos algunas características adicionales. Valores.

puede ordenar

Por ejemplo, podemos ordenar fácilmente una lista de valores. La lista puede hacerlo por sí misma:

List.SortByValue(SortDirection.Edad); En el caso de una matriz normal, tendríamos que implementar uno de los algoritmos de clasificación (por ejemplo, "burbuja").

puede buscar

La lista de valores puede buscar sus elementos por sí sola. Digamos que queremos saber si un número ingresado por el usuario está presente en nuestra lista:

IntroduzcaNúmero(Número); // ingresó un número del usuario FoundElement = List. BuscarPorValor(Número);

Si FoundItem = Indefinido Entonces OpenValue("Número " + Número + " ¡no se encuentra en la lista!"); De lo contrario

OpenValue("Número " + Número + " está en la lista. Aquí está:" + FoundElement.Value);

terminara si; Lista de valores

Admite inserción y eliminación

Una lista de valores, como una matriz, admite la inserción y eliminación de elementos:

Lista. Insertar(0, 1000);

// insertamos mil al principio de la lista List.Delete(O); // y eliminarlo inmediatamente de la lista List. Insertar(Lista.Cantidad(), 13);

// insertamos 13 al final de la lista Report(List[List.Quantity() - 1]);

// muestra el último elemento de la lista (13)

Admite corchetes

Como ya entendiste, la numeración de los elementos de la lista también comienza desde cero, y podemos acceder a cualquier elemento por su índice usando corchetes:

Informe(Lista.Valor); // muestra el segundo elemento de la lista Así, podemos recorrer todos los elementos de la lista así:

Para A = 0 Por List.Quantity() - 1 Informe de bucle(List[A].Value);

Fin del ciclo;

Puede crear una copia de sí mismo.

La lista de valores tiene una gran característica: puede crear una copia de sí misma:

ListaCopy = Lista.Copiar();

// hicimos una copia de la lista // ahora podemos cambiar de forma segura la Copia de la Lista // mientras que la lista original no cambiará la Copia de la Lista. Valor = 123456;

Puede convertirse en una matriz

Y finalmente, puedes volcar fácilmente todos los elementos de la lista en una matriz en cualquier momento:

Númerosdematriz = Lista. DescargarValores();

// volcado en una matriz

Para A = 0 por ArrayNumber.Quantity() - 1 ciclo

Informe (Números de matriz [A]); // no es necesario especificar // opción Valor

Fin del ciclo;

Para practicar y consolidar el material de esta unidad, se recomienda realizar la siguiente tarea.

Es necesario ingresar 5 números del usuario, encontrar el mayor y el más pequeño y mostrárselos al usuario. La solución debe utilizar una lista de valores.

Solución

Lista = Nueva Lista de Valores;

// creó una lista de valores Para A = 1 a 5 Número de ciclo = 0;

IntroduzcaNúmero(Número); // ingresa un número del usuario List.Add(Number); // y lo agregamos a la lista EndCycle; // y así sucesivamente 5 veces

// ordenar la lista de números

Lista. Ordenar por valor (Ordenar dirección. Edad);

// después de ordenar, el primer elemento de la lista es // el elemento más pequeño y el último es el más grande OpenValue("Elemento más pequeño" + Lista +

", y el más grande " + Lista[List.Quantity() - 1]);




Arriba