Contactos

1c correspondencia de tablas y objetos sql. Estructura de almacenamiento de la base de datos (formularios administrados). Diferencias con las implementaciones existentes

La estructura en el lenguaje de programación 1C 8.3 y 8.2 es un conjunto de pares de "Clave" y "Valor". El campo "Clave" tiene un tipo de cadena, mientras que el "Valor" puede tomar cualquier tipo de datos. Por lo general, se utiliza para almacenar y transferir entre procedimientos un conjunto de parámetros.

Una estructura en el lenguaje de programación 1C se puede crear de dos maneras utilizando la construcción "Nuevo".

Primera forma:

Estructura = Nueva Estructura;
Structure.Insert("ParameterKey1", "Valores de parámetro #1");
Structure.Insert("ParameterKey2", "Valores de parámetro #2");

Segunda forma:

Estructura = Nueva estructura ("ParameterKey1, ParameterKey2", "Valores de parámetro #1", "Valores de parámetro #2");

Ambos métodos crearán una estructura que se puede ver en la captura de pantalla de la depuración:

Obtenga lecciones en video de 267 1C gratis:

El cambio

Puede agregar o cambiar una estructura utilizando el método "Insertar ()".

Estructura.Insertar("NombreClave", ValorClave);

Si desea cambiar el valor de la clave anterior, ingrese su nombre. si agregar nueva llave, agregue un nombre único relativo a todas las claves de estructura.

Para eliminar un elemento de la colección, debe usar el método "Eliminar", donde pasar el nombre de la clave:

Estructura.Eliminar("NombreClave");

También es posible borrar todos los objetos de la colección:

Estructura.Clear();

Travesía de la estructura

Para iterar sobre una colección de estructuras, debe usar la construcción "Para cada clave y valor de bucle de estructura".

Por ejemplo:

Para cada clave y valor del bucle de estructura
…… //procesamiento, por ejemplo, cambio de valores
FinCiclo;

En cada ciclo se verá que tenemos a nuestra disposición los siguientes campos:

Los datos que determinan la lógica de funcionamiento del sistema basado en 1C:Enterprise se refieren a la base de datos. Almacenamiento base de información se lleva a cabo en una base de datos como un conjunto de tablas, para las cuales 1C:Enterprise 8.1 puede usar uno de los cuatro sistemas de administración de bases de datos (DBMS):
* Incorporado en 1C:Enterprise 8.1 (versión de archivo de la base de datos). En este caso, todos los datos de la base de datos se almacenan en un archivo llamado 1Cv8.1CD. Este archivo tiene un formato binario y es esencialmente una base de datos para el DBMS integrado 1C:Enterprise 8.1.
*Microsoft servidor SQL (versión cliente-servidor de la base de datos). Todos los datos de la base de datos se almacenan en la base de datos. datos de microsoft Servidor SQL.
* PostgresSQL(versión cliente-servidor de la base de datos). Todos los datos de la base de datos se almacenan en la base de datos. datos PostgreSQL.
* IBM DB2(versión cliente-servidor de la base de datos). Todos los datos de la base de datos se almacenan en una base de datos IBM DB2.

A nivel de los objetos de la base de datos (tablas, campos, índices, etc.), las versiones de archivo y cliente-servidor de una base de datos tienen un formato similar (que difiere en detalles menores). A continuación se proporciona información sobre este formato.

Toda la base de datos se representa en la base de datos como un conjunto de tablas. Entre ellos hay varias tablas que necesariamente están presentes en la representación de cualquier base de datos:

*Configuración- Configuración básica de la base de datos. Esta configuración corresponde a la estructura de datos real y la utiliza 1C:Enterprise 8.0 en modo Enterprise.
*Guardar configuración- configuración editada por el Configurador. La configuración de ConfigSave se sobrescribe en Config cuando se realiza la "Actualización de la configuración de la base de datos" en el Configurador y viceversa, cuando se realiza la operación "Configuración - Configuración de la base de datos - Volver a la configuración de la base de datos" en el Configurador.
* Archivos contiene servicio de información, por ejemplo, sobre cómo trabajar con el almacén de configuración.
*Parámetros contiene parámetros de la base de datos. Entre ellos:
=> Lista de usuarios de la base de datos.
=> Configuración de la base de datos nacional.
=> Tabla de correspondencia de objetos de metadatos y objetos de base de datos (tablas, campos, índices).
=> Alguna otra información.
*_Desplazamiento de año- cambio de fechas en la base de datos. Esta tabla solo se crea cuando usando microsoft Servidor SQL.
*DBSchema contiene información sobre la estructura de la base de datos 1C:Enterprise y define otros objetos de base de datos utilizados por esta base de información.

Al comienzo de 1C:Enterprise, verifica la presencia de las tablas enumeradas en la base de datos y, si falta alguna de ellas, se muestra el mensaje "la base de datos está destruida". La ausencia de todas las tablas enumeradas significa que la base de datos está vacía. En este último caso, se crearán estas tablas.

La lista y la estructura de otras tablas de la base de datos están determinadas por una configuración específica, a saber, los objetos de metadatos definidos en ella. Cada nombre de tabla consta de un prefijo de letra seguido de un número. El prefijo define el propósito de la tabla y el número le permite distinguir entre tablas del mismo propósito que pertenecen a diferentes objetos de metadatos. Si se utiliza IBM DB2 como DBMS, la estructura descrita no son los nombres de las tablas, sino sus alias.

Si se define al menos un plan de intercambio en la configuración con el indicador "Base de información distribuida", se crearán las siguientes tablas:

*_ConfigChangeRec- tabla de registro de cambios de objetos de configuración.
* _ConfigChangeRec_ExtProps- tabla de nombres de archivo de propiedades externas modificadas de objetos de configuración.

Los siguientes son los diversos objetos de metadatos a los que puede corresponder cada tabla.

* Constantes
=> _Consts contiene los valores actuales de todas las constantes definidas en la configuración.
=> _ConstsChangeRec - tabla para registrar cambios en constantes. Se crea si al menos una constante participa en al menos un plan de intercambio.
* Intercambio de planes
=> _Nodo - tabla de planes de cambio.
=> _Nodo _VERMONT - parte tabular del plan de intercambio, creado para cada parte tabular.
* Manuales
=> _Referencia - tabla de referencia.
=> _Referencia _VERMONT - parte tabular del directorio - para cada parte tabular.
=> _ReferenceChangeRec - tabla de registro de cambios de directorio. Creado si el directorio participa en al menos un plan de intercambio.
* Documentación
=> _Documento - una tabla de documentos para cada objeto de metadatos "documento".
=> _Documento _VERMONT - parte tabular del documento - para cada parte tabular de cada documento.
=> _DocumentChangeRec - una tabla para registrar cambios en un objeto de metadatos del tipo "documento". Creado para cada objeto de metadatos de tipo "documento" si participa en al menos un plan de intercambio.
* Secuencias de documentos
=> _Secuencia - tabla de registro de documentos - para cada secuencia.
=> _Límite de secuencia - tabla de límites de secuencia - para cada secuencia.
=> _SequenceChangeRec - tabla de registro de cambios de secuencia. Creado para cada secuencia que participa en al menos un plan de intercambio.
* Diarios de documentos.
=> _Diario de documentos - tabla de diario de documentos, creada para cada diario de documentos.
* Enumeraciones
=> _Enumeración - tabla de enumeración - una para cada enumeración.
* Planos de tipos de características
=> _Chrc - la tabla principal del plan de tipos de características.
=> _Chrc _VERMONT - parte tabular del plan de tipos de características - para cada parte tabular.
=> _ChrcChangeRec - tabla de registro de cambios en el plan de tipos de características. Se crea si el plan de tipo de característica participa en al menos un plan de intercambio.
* Planes de cuentas
=> _Cuenta - la tabla principal del plan de cuentas.
=> _Cuenta _ExtDim - tabla de tipos de subconto del plan de cuentas, creada para el plan de cuentas si el número máximo de subcontos es mayor que cero.
=> _Cuenta _VERMONT - parte tabular del plan de cuentas, creada para cada parte tabular del plan de cuentas.
=> _AccChangeRec - tabla de registro de cambios en el plan de cuentas. Se crea si el plan de cuentas participa en al menos un plan de cambio.
* Planos de tipos de calculo
=> _CalcKind - la tabla principal del plan de tipos de cálculo.
=> _CalcKind _BaseCK - tabla de tipos de cálculo básicos, creada para un plan de tipos de cálculo si su propiedad "Dependencia básica" tiene un valor diferente a "No depende".
=> _CalcKind _DisplacedCK: tabla de tipos de cálculo desplazados, creada para el plan de tipos de cálculo si tiene establecido el indicador "Usa el período de validez".
=> _CalcKind _LeadingCK - tabla de principales tipos de cálculo - para cada plan de tipos de cálculo.
=> _CalcKindDN - Se crea una tabla auxiliar para la orden de exclusión, si el indicador "Utiliza el período de validez" está configurado para el plan de tipos de cálculo.
=> _CalcKind _VERMONT - parte tabular del plan de tipos de cálculo, creado para cada parte tabular.
=> _CalcKindChangeRec - tabla de registro de cambios en el plan de tipos de cálculo. Se crea si el plan de tipo de cálculo participa en al menos un plan de cambio.
* Registros de información
=> _InfoReg - tabla de información de movimientos de registro.
=> _InfoRegChangeRec - tabla de registro de cambios en el registro de información. Se crea si el registro de información participa en al menos un plan de intercambio.
* Registros de acumulación
=> _AccumReg - tabla de movimientos del registro de acumulación.
=> _AccumRegTotals - tabla de totales del registro de acumulación, si el registro mantiene saldos.
=> _AccumRegTurnovers - tabla de facturación del registro de acumulación, si el registro admite facturación.
=> _AccumRegChangeRec - tabla de registro de cambios en el registro de acumulación. Se crea si el registro de acumulación participa en al menos un plan de cambio.
=> _AccumRegOptions - tabla de configuraciones para almacenar los totales de los registros de acumulación, uno para todos los registros de acumulación.
* Registros contables
=> _RegCuenta - tabla de movimientos del registro contable.
=> _RegCuenta - una tabla de valores de subconto del registro contable, creada si se trata de un plan de cuentas, en el que el número máximo de subconto es mayor que cero.
=> _AccTtl0 - una tabla de totales para la cuenta.
=> _AccTtl - donde estoy del 1 al número máximo subconto Tabla de totales de la cuenta con el número de tipos de subconto igual a i.
=> _AccTtlC - una tabla de los totales de las transacciones entre cuentas, solo para el registro contable que soporta la correspondencia.
=> _AccntRegChangeRec - tabla de registro de cambios en el registro contable. Se crea si el registro contable participa en al menos un plan de cambio.
=> _AccntRegOptions: tabla de configuraciones para almacenar totales, una para todos los registros contables.
* Registros de cálculo
=> _CalcReg - tabla de movimientos del registro de cálculo.
=> _CalcRegActPer - una tabla de períodos de validez reales para el registro de cálculo, creada si el indicador "Período de validez" está establecido para el registro de cálculo.
=> _CalcRegChangeRec - tabla de registro de cambios en el registro de cálculo. Creado para cada registro de cálculo que participa en al menos un plan de intercambio.
=> _CalcRegRecalc - tabla de recálculo del registro de cálculo, creada para cada recálculo.
=> _CalcRegRecalcChangeRec - tabla de registro de cambios de recálculo. Se crea si la asignación está involucrada en al menos un plan de intercambio.
* Procesos de negocios
=> _BPRoutePoint - una tabla de puntos de ruta de procesos comerciales para cada proceso comercial.
=> _Procesos de negocio - la tabla principal del proceso de negocio.
=> _Procesos de negocio _VERMONT - parte tabular del proceso de negocio para cada parte tabular.
=> _BusinessProcessChangeRec - tabla de registro de cambios en los procesos de negocio. Creado para cada proceso de negocio que participa en al menos un plan de intercambio.
* Tareas
=> _Tarea - la tabla de tareas principal.
=> _Tarea _VERMONT - parte tabular de la tarea para cada parte tabular.
=> _TareaCambioRec - tabla de registro de cambios de tareas. Creado para cada objeto de metadatos de tipo "tarea" que participa en al menos un plan de intercambio.

Cuando se utiliza IBM DB2, los prefijos de alias de tabla no comienzan con un guión bajo, sino inmediatamente con una parte de letra.

El número de estas tablas depende de la funcionalidad de la configuración y puede ser bastante grande. En modo normal, 1C:Enterprise no verifica su presencia, así como la integridad y consistencia de los datos contenidos en ellos. Por lo tanto, es importante que la base de datos que aloja la base de datos de 1C:Enterprise 8.1 esté protegida contra accesos no autorizados y que se modifique únicamente con las herramientas de 1C:Enterprise. Para verificar, debe utilizar la función "Administración - Prueba y Corrección" integrada en el configurador.

También es importante que la base de datos que almacena la base de datos se respalde y restaure solo en su totalidad. Para ello, se recomienda utilizar Copia de reserva bases de datos integradas en el DBMS utilizado. Se puede hacer una copia de seguridad de la versión del archivo de la base de datos copiando el archivo 1Cv8.1CD.

El configurador tiene funcion especial: Administración - Descargar infobase. Se puede usar para subir a archivo especificado(subir archivo) todos los datos relacionados con la base de datos, y nada más. La función inversa "Cargar base de datos" le permite cargar todos los datos del archivo de carga en la base de datos actual en lugar de las existentes. Estas funciones también se pueden utilizar para realizar copias de seguridad de los datos de la base de datos tanto en versiones de archivo como de cliente-servidor.

La plataforma 1C es una herramienta de alto nivel para trabajar con bases de datos. En el caso general, el desarrollador no necesita pensar en qué y cómo sucede en el lado del DBMS, ya que la plataforma misma decide cuántas tablas creará y qué campos estarán dentro de ellas.

Sin embargo, en proyectos grandes, existe la necesidad de trabajar con datos directamente, por ejemplo, para analizar información con herramientas de terceros o, como en mi caso, integrar una base de datos con aplicaciones externas. En tal situación, es necesario tener una idea en qué campos de las tablas físicas buscar la información que necesitamos.

La función incorporada está diseñada solo para tal caso. Obtener Estructura de Almacenamiento de Base de Datos () que devuelve todos los datos necesarios como una tabla de valores. Además, algunos detalles (Campos e Índices) de esta tabla son en sí mismos tablas de valores.

Por un lado, es conveniente tener todos los datos en una estructura, pero, por otro lado, existen dificultades adicionales para transferir esta tabla al cliente (el método Load(), desafortunadamente, no carga tablas anidadas) . En vista de esto, es necesario recorrer todas las filas de la tabla en un ciclo, lo que, con grandes volúmenes, conduce a una ralentización del trabajo.

Debido a esto, la mejor opción sería pasar los nombres de los objetos de metadatos a la función para reducir la cantidad de datos devueltos. Sin embargo, no todas las tablas DBMS están asociadas con metadatos de configuración, por lo que la capacidad de ver Lista llena me fui

Funcionalidad de procesamiento

Cuando se activa un elemento del árbol de metadatos, se completará la lista de tablas, campos e índices. Al hacer doble clic en la raíz del árbol, se muestran todas las tablas, incluidas las tablas de servicio (no se recomienda, ya que aumenta la cantidad de datos que se buscan).

V partes tabulares los comandos estándar de búsqueda y lista funcionan.

Diferencias con las implementaciones existentes

Hay varias publicaciones similares, por ejemplo, y. Sin embargo, su desventaja es la falta de un árbol de metadatos, lo que dificulta la navegación. La búsqueda también se realiza nombrando tablas y campos en la base de datos, y no al revés.

El más cercano en funcionalidad a la publicación del autor (). A diferencia de ella, este procesamiento contiene el árbol más completo metadatos (planes de intercambio, constantes, registros de documentos, etc.). es más la estructura de datos se presenta más claramente: la lista de tablas del objeto de metadatos, la lista de campos y la lista de índices se muestran en partes tabulares separadas.

UPD-2018-01-06 (v1.3). Se corrigió un error que ocurría en el modo de compatibilidad 8.3.7 y superior (el comportamiento de la plataforma ha cambiado).

UPD-2012-08-17 (v1.2). Se ha realizado un parche para el correcto procesamiento de las tareas programadas, se ha solucionado el punto de visualización de planos de tipos de cálculo, se ha corregido el comportamiento al cambiar el tipo de estructura en la raíz de configuración.

PD Algunos empleadores preguntan sobre la cantidad de mesas físicas y virtuales para registros al solicitar un trabajo. Sería bueno saber las respuestas a estas preguntas, especialmente porque este es el nivel 1C: Profesional. Si desea no solo aprender esta respuesta, sino también "sentir" estas tablas, ¡entonces este procesamiento es para usted!



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